:root{--bg: #f4f6f9;--card: #ffffff;--ink: #262d6b;--navy: #2b3175;--muted: #5a6675;--accent: #1b75bc;--ok: #1e7e34;--warn: #b45309;--fail: #b02a37;--border: #d7dce2}*{box-sizing:border-box}body{margin:0;font-family:Segoe UI,system-ui,-apple-system,sans-serif;background:var(--bg);color:var(--ink);font-size:16px}.topbar{background:var(--card);border-bottom:3px solid var(--accent);padding:10px 16px;position:sticky;top:0;z-index:10;display:flex;justify-content:space-between;align-items:center;gap:12px}.topbar-user{display:flex;align-items:center;gap:10px}.topbar-who{color:var(--muted);font-size:13px;text-align:right}@media (max-width: 480px){.topbar-who{display:none}}.brand{color:var(--navy);text-decoration:none;font-weight:700;font-size:18px;display:flex;align-items:center;gap:12px}.brand-logo{height:34px;width:auto}.page{padding:16px;max-width:900px;margin:0 auto}.page-head{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}h1{font-size:22px;margin:12px 0}h2,h3{font-size:17px}.section-label{color:var(--muted);text-transform:uppercase;font-size:13px;letter-spacing:.06em;margin-top:28px}.loading,.empty{color:var(--muted);padding:24px 0}.error{color:var(--fail);font-weight:600}.hint,.usage,.summary{color:var(--muted);font-size:14px}.paired{font-size:14px;color:var(--muted);font-weight:400}.signin{display:flex;flex-direction:column;align-items:center;gap:24px;padding-top:18vh;padding-left:16px;padding-right:16px}.auth-error{max-width:560px;text-align:left;font-weight:400}.signin-logo{width:min(320px,80vw);height:auto}.signin h1{color:var(--navy)}.tile-grid{display:grid;grid-template-columns:1fr;gap:12px}@media (min-width: 600px){.tile-grid{grid-template-columns:1fr 1fr}}.tile{display:block;background:var(--card);border:1px solid var(--border);border-radius:12px;padding:28px 20px;font-size:20px;font-weight:700;text-decoration:none;color:var(--ink);text-align:center}.tile:active{background:#e8eef5}.tile-admin{font-size:16px;padding:18px;max-width:320px}.tile-closed{opacity:.65;border-style:dashed}.manage-list{list-style:none;padding:0;margin:0}.manage-list li{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid var(--border)}.btn{display:inline-block;min-height:48px;padding:12px 20px;border-radius:10px;border:1px solid var(--border);background:var(--card);color:var(--ink);font-size:16px;font-weight:600;text-decoration:none;cursor:pointer}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn-danger{background:var(--fail);border-color:var(--fail);color:#fff}.card-danger{border-color:#e7b3b9}.btn-wide{width:100%;margin:12px 0}.btn-back{min-height:40px;padding:8px 14px;margin-bottom:8px}.btn-small{min-height:36px;padding:6px 12px;font-size:14px;margin-left:12px}.btn-row{display:flex;gap:12px;margin-top:16px}.btn-row .btn{flex:1}.card{background:var(--card);border:1px solid var(--border);border-radius:12px;padding:16px;margin:14px 0}.card input,.card select{width:100%;min-height:48px;padding:10px 12px;margin:6px 0;border:1px solid var(--border);border-radius:8px;font-size:16px}.field-label{display:block;margin-top:10px;font-weight:600;font-size:14px}.field-label em{font-weight:400;color:var(--muted)}.search{width:100%;min-height:48px;padding:10px 14px;border:1px solid var(--border);border-radius:10px;font-size:16px;margin:8px 0}.chip-row{display:flex;gap:8px;overflow-x:auto;padding:4px 0 10px}.chip{min-height:40px;padding:8px 14px;border-radius:999px;border:1px solid var(--border);background:var(--card);font-size:14px;white-space:nowrap;cursor:pointer}.chip-active{background:var(--accent);border-color:var(--accent);color:#fff}.cable-list{list-style:none;padding:0;margin:8px 0}.cable-row{display:block;background:var(--card);border:1px solid var(--border);border-radius:10px;padding:14px;margin-bottom:8px;text-decoration:none;color:var(--ink)}.cable-tag{font-weight:700;font-size:17px;display:block}.cable-route{color:var(--muted);font-size:14px;display:block;margin:4px 0}.flag{margin-left:8px}.badges{display:flex;gap:6px;flex-wrap:wrap}.badge{font-size:12px;font-weight:600;padding:3px 10px;border-radius:999px;background:#e9ecf0;color:var(--muted)}.badge[class*=install-Installed]{background:#d9f0df;color:var(--ok)}.badge[class*=install-In-Progress]{background:#fdf0d5;color:var(--warn)}.badge[class*=test-Tested-Pass]{background:#d9f0df;color:var(--ok)}.badge[class*=test-Tested-Fail],.badge[class*=test-Retest]{background:#fbe0e3;color:var(--fail)}.spec-grid{margin:0}.spec-row{display:grid;grid-template-columns:170px 1fr;gap:12px;padding:5px 0;border-bottom:1px solid #eef1f5}.spec-row dt{color:var(--muted);font-size:14px}.spec-row dd{margin:0;font-size:15px;word-break:break-word}.toggle{display:flex;align-items:center;gap:12px;min-height:52px;font-size:17px;font-weight:600;border-bottom:1px solid var(--border)}.toggle input{width:26px;height:26px}.photo-input{margin:14px 0}.photo-name{display:block;margin-top:6px;color:var(--ok);font-size:14px}.done-note{color:var(--ok);font-weight:600}.banner-warn{background:#fff7e6;border:1px solid #f0d9a8;border-radius:10px;padding:12px 14px;margin:12px 0}.banner-ok{background:#e7f5eb;border:1px solid #b7dfc3;border-radius:10px;padding:12px 14px;margin:12px 0;color:var(--ok);font-weight:600}.preview-table{width:100%;border-collapse:collapse;font-size:13px;margin:12px 0}.preview-table th,.preview-table td{border-bottom:1px solid var(--border);padding:6px 8px;text-align:left}.row-flagged{background:#fff7e6}.changelog{font-size:14px;color:var(--muted);padding-left:18px}.changelog li{margin:4px 0}.add-form h3{margin-top:0}.bulk-add-scroll{overflow-x:auto}.bulk-add-table input{min-height:40px;min-width:110px;margin:0;padding:6px 8px;font-size:14px}.head-links{display:flex;gap:8px}.report-toolbar{display:flex;justify-content:space-between;align-items:center}.report-head{display:flex;align-items:center;gap:16px;margin:12px 0 4px}.report-logo{height:48px;width:auto}.report-subtitle{color:var(--muted);margin:2px 0 0}.report h3{margin-top:22px;border-bottom:2px solid var(--accent);padding-bottom:4px}.select-toolbar{display:flex;gap:8px;align-items:center;margin:8px 0 0;flex-wrap:wrap}.select-filter{flex:1;min-width:200px;min-height:44px;padding:8px 12px;border:1px solid var(--border);border-radius:8px;font-size:15px}.btn-x{border:none;background:transparent;color:var(--fail);font-size:15px;font-weight:700;cursor:pointer;padding:4px 8px;min-height:32px}.la-day{margin:6px 0}.la-tag{display:inline-flex;align-items:center;margin-right:10px;white-space:nowrap}.select-list{max-height:320px;overflow-y:auto;border:1px solid var(--border);border-radius:8px;margin:8px 0}.select-row{display:flex;align-items:center;gap:12px;padding:10px 12px;border-bottom:1px solid var(--border);font-size:15px}.select-row input{width:22px;height:22px}.select-row span{color:var(--muted);font-size:13px}.manual-grid input,.manual-grid textarea{width:100%;border:1px solid var(--border);border-radius:6px;padding:6px 8px;font-size:14px;font-family:inherit}@media print{*{-webkit-print-color-adjust:exact;print-color-adjust:exact}.topbar,.no-print{display:none!important}.cable-report{break-inside:avoid}.photo-box img{max-height:200px}body{background:#fff;font-size:12px}.page{padding:0;max-width:none}.card{border:none;padding:0}.preview-table{font-size:11px}.preview-table th,.preview-table td{padding:4px 6px}.report-head{border-bottom:3px solid #1b75bc;padding-bottom:10px}.manual-grid input,.manual-grid textarea{border:none}a{text-decoration:none;color:inherit}}.step-head{display:flex;align-items:center;gap:12px}.step-head h3{margin:0}.step-num{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:50%;background:var(--navy);color:#fff;font-weight:700;flex-shrink:0}.step-num-done{background:var(--ok)}.instructions{padding-left:20px}.instructions li{margin:8px 0}.instructions code{background:#eef1f6;padding:2px 6px;border-radius:4px;font-size:14px}.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px;margin:12px 0}.stat{background:var(--card);border:1px solid var(--border);border-radius:10px;padding:14px;text-align:center}.stat-value{font-size:28px;font-weight:800;color:var(--navy)}.stat-label{font-size:13px;color:var(--muted);font-weight:600}.stat-sub{font-size:12px;color:var(--muted)}.exec-system{margin:12px 0}.bar-row{display:grid;grid-template-columns:130px 1fr 90px;align-items:center;gap:10px;margin:5px 0}.bar-label{font-size:13px;color:var(--muted)}.bar-track{height:16px;background:#e8ecf2;border-radius:999px;overflow:hidden}.bar-fill{height:100%;border-radius:999px}.bar-default{background:var(--accent)}.bar-ok{background:var(--ok)}.bar-fail{background:var(--fail)}.bar-warn{background:var(--warn)}.bar-value{font-size:13px;text-align:right}.detail-divider{margin-top:32px}.cable-report{border:1px solid var(--border);border-radius:10px;padding:12px 14px;margin:10px 0;background:var(--card);break-inside:avoid}.cable-report-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:16px;margin-bottom:6px}.badge-ok{background:#d9f0df;color:var(--ok)}.badge-fail{background:#fbe0e3;color:var(--fail)}.cable-report-body{display:grid;grid-template-columns:1fr;gap:12px}@media (min-width: 760px){.cable-report-body{grid-template-columns:1.2fr 1fr}}.cable-report-photos{display:flex;gap:10px;align-items:flex-start}.photo-box{margin:0;flex:1}.photo-box img{width:100%;max-height:240px;object-fit:contain;background:#f0f2f5;border-radius:6px}.photo-box figcaption{font-size:12px;color:var(--muted);text-align:center;margin-top:2px}.photo-missing{border:1px dashed var(--border);border-radius:6px;padding:20px 10px;font-size:12px;text-align:center;color:var(--muted)}.progress-track{height:14px;background:#e8ecf2;border-radius:999px;overflow:hidden;margin:10px 0 6px}.progress-fill{height:100%;background:var(--accent);border-radius:999px;transition:width .4s ease}.instructions-input{width:100%;padding:10px 12px;margin:6px 0;border:1px solid var(--border);border-radius:8px;font-size:15px;font-family:inherit;resize:vertical}.diag-list{list-style:none;padding:0}.diag-list li{display:flex;flex-direction:column;padding:8px 0;border-bottom:1px solid var(--border)}.diag-list li span{color:var(--muted);font-size:13px;word-break:break-all}.diag-ok strong{color:var(--ok)}.diag-fail strong{color:var(--fail)}.code-block{background:#262d6b;color:#e8ecf5;padding:12px;border-radius:8px;font-size:12.5px;overflow-x:auto;white-space:pre-wrap;word-break:break-all}
