:root{--bg: #0f172a;--bg2: #1e293b;--surface: #ffffff;--line: #e2e8f0;--muted: #64748b;--accent: #2563eb;--green: #16a34a;--red: #dc2626;--shadow-sm: 0 1px 3px rgba(0,0,0,.08), 0 1px 2px rgba(0,0,0,.06);--shadow-md: 0 4px 12px rgba(0,0,0,.1), 0 2px 4px rgba(0,0,0,.06);--r: 12px}*,*:before,*:after{box-sizing:border-box}body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:#f1f5f9;color:#0f172a;font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased}h1{margin-top:0;font-size:22px}h3{margin:0 0 12px;font-size:16px}.gate{min-height:100dvh;display:grid;place-items:center;background:var(--bg);padding:20px}.gate-card{background:var(--surface);padding:36px 32px;border-radius:20px;width:100%;max-width:360px;display:flex;flex-direction:column;gap:10px;box-shadow:0 24px 64px #00000073}.gate-card label{font-size:13px;color:var(--muted);font-weight:500}.gate-card input{padding:12px 14px;border:1.5px solid var(--line);border-radius:10px;font-size:15px;width:100%;transition:border-color .15s}.gate-card input:focus{outline:none;border-color:var(--accent)}button{min-height:44px;background:var(--accent);color:#fff;border:0;padding:0 16px;border-radius:10px;font-weight:600;font-size:14px;cursor:pointer;transition:opacity .15s,transform .1s;-webkit-tap-highlight-color:transparent;white-space:nowrap}button:active{transform:scale(.97)}button.secondary{background:#f1f5f9;color:#0f172a;border:1.5px solid var(--line)}button.ghost{background:transparent;color:var(--muted);border:1.5px solid var(--line)}button.danger{background:#fee2e2;color:#991b1b;border:1px solid #fecaca}button:disabled{opacity:.5;cursor:default;transform:none}input,select,textarea{min-height:44px;font-family:inherit;font-size:15px}.brand{font-size:18px;font-weight:800;display:flex;align-items:center;gap:8px;letter-spacing:-.3px}.brand.big{font-size:22px;margin-bottom:8px}.brand-logo{height:30px;width:auto;max-width:100%;object-fit:contain;display:block;background:#fff;border-radius:8px;padding:5px 9px;flex-shrink:0}.admin-topbar-brand .brand-logo{height:26px;padding:4px 7px}.brand-role{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--muted)}.brand.big{flex-direction:column;align-items:flex-start;gap:10px}.brand.big .brand-logo{height:40px}.brand-subtitle{font-size:15px;font-weight:700;color:#0f172a;letter-spacing:-.2px}.muted{color:var(--muted)}.center{text-align:center}.error{color:var(--red);font-size:13px;font-weight:500}.ok{color:var(--green);font-size:13px;font-weight:600}.ok-banner{background:#dcfce7;color:#14532d;border:1px solid #bbf7d0;padding:10px 14px;border-radius:10px;margin:10px 0;font-size:14px}.hint{font-size:13px;color:var(--muted);text-align:center;margin:6px 0 0}.shell{display:flex;min-height:100dvh}.sidebar{width:220px;flex-shrink:0;background:var(--bg);color:#fff;padding:20px 12px;display:flex;flex-direction:column;gap:4px;position:sticky;top:0;height:100dvh;overflow-y:auto;z-index:300;transition:transform .25s ease}.sidebar-header{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;margin-bottom:8px}.sidebar-logo{flex:1;background:#fff;border-radius:12px;padding:12px 14px;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 10px #00000038}.sidebar-logo img{width:100%;max-width:150px;height:auto;display:block}.sidebar-role{color:#94a3b8;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.8px;margin:0 4px 18px}.sidebar-close{display:none;background:transparent;color:#94a3b8;border:0;min-height:auto;font-size:18px;padding:4px 8px;cursor:pointer;line-height:1}.sidebar nav{display:flex;flex-direction:column;gap:2px;flex:1}.nav{background:transparent;color:#94a3b8;text-align:left;padding:0 14px;height:44px;min-height:44px;border-radius:10px;font-size:14px;font-weight:500;transition:background .15s,color .15s}.nav:active{transform:scale(.97)}.nav.active{background:#ffffff1f;color:#fff;font-weight:600}.logout{background:#ffffff12;color:#94a3b8;border-radius:10px;height:44px;min-height:44px;font-size:14px;margin-top:8px}.logout:hover{background:#ffffff1f}.sidebar-backdrop{display:none;position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;z-index:299;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.main-wrap{flex:1;min-width:0;display:flex;flex-direction:column}.admin-topbar{display:none;align-items:center;gap:12px;background:var(--surface);padding:0 16px;height:54px;border-bottom:1px solid var(--line);position:sticky;top:0;z-index:200;box-shadow:var(--shadow-sm)}.admin-topbar-brand{font-size:16px;flex:1}.admin-topbar-section{font-size:13px;font-weight:600;color:var(--muted);white-space:nowrap}.hamburger{background:transparent;border:0;min-height:auto;padding:8px;cursor:pointer;display:flex;flex-direction:column;gap:5px;flex-shrink:0}.hamburger span{display:block;width:22px;height:2px;background:var(--bg);border-radius:2px;transition:background .15s}.hamburger:active span{background:var(--accent)}.main{padding:24px 28px;overflow:auto;flex:1}.inline-form{display:flex;gap:8px;flex-wrap:wrap;margin:14px 0;align-items:flex-end}.inline-form input{padding:10px 12px;border:1.5px solid var(--line);border-radius:10px;min-height:44px;flex:1;min-width:160px}.inline-form input:focus{outline:none;border-color:var(--accent)}.inline-form button{flex-shrink:0}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:18px;margin-bottom:16px;box-shadow:var(--shadow-sm)}.card.stack{display:flex;flex-direction:column;gap:12px}.form-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.form-grid label,.card label{font-size:12px;color:var(--muted);font-weight:600;text-transform:uppercase;letter-spacing:.4px;display:block;margin-bottom:4px}.form-grid input,.form-grid select,.card input[type=text],.card input[type=number],.card input[type=file],.card select{width:100%;padding:10px 12px;border:1.5px solid var(--line);border-radius:10px;min-height:44px;background:#fff;transition:border-color .15s}.form-grid input:focus,.form-grid select:focus{outline:none;border-color:var(--accent)}.checkrow{display:flex;align-items:center;gap:10px;font-size:14px}.checkrow input{width:20px;height:20px;cursor:pointer;min-height:auto;accent-color:var(--accent)}.checkrow.sm{font-size:13px;gap:8px;white-space:nowrap}.checkrow.sm input{width:17px;height:17px}.table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}.grid{width:100%;border-collapse:collapse;background:var(--surface);border:1px solid var(--line);border-radius:10px;overflow:hidden}.grid th,.grid td{padding:11px 14px;border-bottom:1px solid var(--line);text-align:left;font-size:14px}.grid tr:last-child td{border-bottom:0}.grid thead th{background:#f8fafc;color:var(--muted);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.5px}.grid.compact th,.grid.compact td{padding:8px 10px;text-align:center}.actions{display:flex;gap:6px;flex-wrap:wrap}.actions button{min-height:36px;font-size:13px;padding:0 12px}.key{background:#f1f5f9;padding:3px 10px;border-radius:6px;font-weight:700;font-size:13px;font-family:monospace}.detail-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:16px}.head-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.head-actions button{min-height:38px;font-size:13px;padding:0 14px}.kpi-strip{display:flex;gap:10px;flex-wrap:wrap;margin:0 0 18px}.kpi{background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:12px 16px;min-width:110px;box-shadow:var(--shadow-sm)}.kpi span{display:block;font-size:12px;color:var(--muted);font-weight:500}.kpi b{font-size:22px;font-weight:800}.kpi b.green{color:var(--green)}.kpi b.blue{color:var(--accent)}.cols{display:grid;grid-template-columns:1fr 1fr;gap:16px}.table-scroll{max-height:460px;overflow:auto;border:1px solid var(--line);border-radius:10px;-webkit-overflow-scrolling:touch}.table-scroll input[type=checkbox]{width:18px;height:18px;cursor:pointer;min-height:auto}.tag{font-size:11px;padding:2px 8px;border-radius:999px;color:#fff;font-weight:700}.tag.start{background:var(--green)}.tag.end{background:var(--accent)}.tag.nonworking{background:#d97706}.grid td input,.grid td select{width:100%;padding:7px 10px;border:1.5px solid var(--line);border-radius:8px;min-height:36px}tr.editing{background:#f8fafc}.file-mini{font-size:12px;color:var(--muted);display:inline-flex;flex-direction:column;gap:2px}.add-tower{display:flex;gap:8px;margin-bottom:12px;align-items:center}.add-tower input{padding:8px 12px;border:1.5px solid var(--line);border-radius:8px;width:130px;min-height:40px}.range-row{display:grid;grid-template-columns:1fr 1fr auto;gap:10px;align-items:end;margin-top:12px}.btn-row{display:flex;gap:10px;flex-wrap:wrap;margin-top:14px}.btn-row button{flex:1;min-width:110px}.info-banner{background:#fef9c3;color:#713f12;border:1px solid #fde68a;padding:10px 14px;border-radius:10px;font-size:13px;margin-top:10px}.update-table{width:100%;border-collapse:collapse;min-width:380px}.update-table th,.update-table td{padding:10px 8px;border-bottom:1px solid var(--line);text-align:center}.update-table thead th{position:sticky;top:0;background:#f8fafc;font-size:12px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.4px;z-index:1}.update-table .tower-cell{font-weight:700;background:#f8fafc;font-size:13px;text-align:left;padding-left:12px}.update-table .check-cell input[type=checkbox]{width:20px;height:20px;cursor:pointer;accent-color:var(--accent);min-height:auto;vertical-align:middle}.update-table tr.already-done{background:#fefce8}.issue-note-chip{margin-top:5px;background:#fee2e2;color:#991b1b;border:1px solid #fecaca;border-radius:6px;padding:2px 6px;font-size:11px;font-weight:600;display:inline-block;max-width:140px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.issue-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;display:grid;place-items:center;z-index:1000;padding:20px;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.issue-modal{background:var(--surface);border-radius:14px;padding:22px;width:100%;max-width:420px;box-shadow:0 24px 64px #0006}.issue-modal-title{font-weight:700;font-size:16px;margin-bottom:4px}.issue-modal-hint{font-size:13px;color:var(--muted);margin:0 0 12px}.issue-modal-input{width:100%;padding:10px 12px;border:1.5px solid var(--line);border-radius:10px;font-size:14px;font-family:inherit;resize:vertical}.issue-modal-input:focus{outline:none;border-color:var(--accent)}.issue-modal-actions{display:flex;gap:10px;margin-top:14px}.issue-modal-actions button{flex:1}.grid.compact tr.row-dirty td{background:#eff6ff}.save-bar{position:fixed;left:50%;bottom:20px;transform:translate(-50%);z-index:400;width:calc(100% - 40px);max-width:520px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 16px;background:var(--surface);border:1.5px solid var(--accent);border-radius:12px;box-shadow:0 12px 32px #2563eb40,0 4px 12px #0000001f;flex-wrap:wrap;animation:save-bar-in .2s ease}@keyframes save-bar-in{0%{opacity:0;transform:translate(-50%,12px)}to{opacity:1;transform:translate(-50%)}}.save-bar-text{font-size:14px;font-weight:600;color:var(--accent)}.save-bar-actions{display:flex;gap:8px;flex-shrink:0}.save-bar-actions button{min-height:40px}@media (max-width: 600px){.save-bar{bottom:12px;width:calc(100% - 24px);padding:10px 12px}.save-bar-text{font-size:13px}.save-bar-actions,.save-bar-actions button{flex:1}}@keyframes sk-pulse{0%,to{background-color:#e2e8f0}50%{background-color:#f1f5f9}}.sk{animation:sk-pulse 1.4s ease-in-out infinite;border-radius:6px;display:block}.sk-text{height:14px;margin:6px 0}.sk-row{height:50px;border-radius:8px;margin-bottom:8px}.sk-head{height:28px;width:45%;margin-bottom:16px}@media (max-width: 840px){.sidebar{position:fixed;top:0;left:0;height:100dvh;transform:translate(-100%);box-shadow:4px 0 24px #0000004d}.sidebar--open{transform:translate(0)}.sidebar-close,.sidebar-backdrop{display:block}.admin-topbar{display:flex}.main{padding:18px 16px}.cols,.form-grid{grid-template-columns:1fr}}@media (max-width: 600px){.main{padding:14px 12px}h1{font-size:20px}.detail-head{flex-direction:column;align-items:stretch;gap:10px}.detail-head h1{margin:0}.head-actions{width:100%;display:grid;grid-template-columns:1fr 1fr;gap:8px}.head-actions button{min-height:44px;font-size:14px;padding:0 10px;width:100%}.head-actions>span{grid-column:1 / -1;font-size:12px}.kpi-strip{display:grid;grid-template-columns:1fr 1fr;gap:10px}.kpi{min-width:0}.kpi b{font-size:20px}.inline-form{flex-direction:column}.inline-form input{min-width:0}.range-row{grid-template-columns:1fr 1fr}.range-row button{grid-column:1 / -1}.btn-row button{min-width:0}.table-wrap .grid thead{display:none}.table-wrap .grid,.table-wrap .grid tbody,.table-wrap .grid tr,.table-wrap .grid td{display:block;width:100%}.table-wrap .grid tr{border:1px solid var(--line);border-radius:12px;margin-bottom:10px;padding:4px;background:var(--surface)}.table-wrap .grid td{display:flex;justify-content:space-between;align-items:center;gap:12px;border:0;padding:9px 12px;text-align:right}.table-wrap .grid td:before{content:attr(data-label);font-weight:600;color:var(--muted);text-align:left;font-size:12px;flex-shrink:0}.table-wrap .grid td.actions{flex-wrap:wrap;justify-content:flex-end}.table-wrap .grid td.actions:before{content:""}.table-wrap .grid td input,.table-wrap .grid td select{max-width:58%}}
