:root{--ink:#16202a;--muted:#667481;--line:#dfe5e8;--soft:#f4f6f7;--panel:#fff;--panel2:#f7f9fa;--orange:#f47b20;--orange2:#ffb000;--green:#16794a;--red:#b42318;--amber:#9a6700;--nav:#111a22;--teal:#0d9fa4;--teal2:#47c8b4;--blue:#2476a8}
*{box-sizing:border-box}
html{background:#eef1f3}
body{margin:0;background:#eef1f3;color:var(--ink);font-family:Inter,"Segoe UI",Arial,sans-serif;font-size:14px;line-height:1.45}
a{color:inherit}.shell{min-height:100vh;display:grid;grid-template-columns:245px 1fr}.sidebar{background:var(--nav);color:#fff;padding:22px 16px;position:sticky;top:0;height:100vh;overflow:auto}.brand{display:flex;align-items:center;gap:11px;margin-bottom:24px}.brand img{width:112px;height:34px;object-fit:contain;object-position:left center}.brand strong{font-size:14px;letter-spacing:.15px}.brand span{display:block;color:#b8c1c8;font-size:10px;text-transform:uppercase;letter-spacing:.9px;margin-top:2px}.nav a,.nav button{display:flex;align-items:center;gap:10px;text-decoration:none;padding:10px 12px;border-radius:9px;color:#dce2e6;margin:3px 0;border:0;background:transparent;width:100%;text-align:left;cursor:pointer;font:inherit}.nav a:hover,.nav a.active,.nav button:hover,.nav button.active{background:#25313b;color:#fff}.nav .sep{height:1px;background:#33414c;margin:14px 8px}.nav-label{padding:9px 12px 2px;color:#7f919e;font-size:9px;text-transform:uppercase;letter-spacing:.9px;font-weight:800}.side-note{margin-top:20px;padding:12px;border:1px solid #35434e;border-radius:10px;color:#b9c4cb;font-size:12px}.side-note strong{color:#fff}.content{min-width:0}.topbar{height:68px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 28px;position:sticky;top:0;z-index:10}.topbar h1{font-size:18px;margin:0}.top-actions{display:flex;align-items:center;gap:12px}.user{font-size:12px;color:var(--muted);text-align:right}.user strong{display:block;color:var(--ink);font-size:13px}.btn{appearance:none;border:0;border-radius:8px;padding:9px 13px;font-weight:700;cursor:pointer;text-decoration:none;display:inline-block}.btn-primary{background:linear-gradient(135deg,var(--orange),var(--orange2));color:#111}.btn-dark{background:#202b34;color:#fff}.btn-light{background:#eef2f4;color:#24313b}.btn-danger{background:#fef0ee;color:var(--red)}.btn-teal{background:#0d6873;color:#fff}.btn-outline{background:#fff;border:1px solid #cfd7dc;color:#24313b}.btn-small{padding:6px 9px;font-size:11px}.view-switch{display:flex;gap:4px;padding:4px;border:1px solid var(--line);background:#f5f7f8;border-radius:10px}.view-switch button{border:0;background:transparent;border-radius:7px;padding:6px 9px;font-size:11px;font-weight:750;color:#61717c;cursor:pointer}.view-switch button.active{background:#202b34;color:#fff}main{padding:24px 28px 50px;max-width:1680px;margin:0 auto}.page{display:none}.page.active{display:block}.banner{background:linear-gradient(120deg,#1d2831,#33414a);color:#fff;border-radius:14px;padding:22px 24px;margin-bottom:20px;display:flex;justify-content:space-between;gap:20px;align-items:center}.banner h2{margin:0 0 6px;font-size:24px}.banner p{margin:0;color:#d5dde2}.kicker{font-size:11px;text-transform:uppercase;letter-spacing:.8px;color:var(--muted);font-weight:800}.badge{display:inline-flex;align-items:center;border-radius:999px;padding:5px 9px;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.35px}.pass{background:#e9f7ef;color:var(--green)}.fail{background:#ffebe9;color:var(--red)}.warn{background:#fff4d8;color:var(--amber)}.neutral{background:#eaf0f3;color:#42515c}.info{background:#e9f7fb;color:#0d6e7f}.darkbadge{background:#2e3b45;color:#eef2f4}.grid{display:grid;gap:16px}.grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.card{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:17px;box-shadow:0 1px 2px rgba(15,23,42,.04)}.card h3{margin:0 0 12px;font-size:15px}.metric{font-size:29px;font-weight:800;letter-spacing:-.5px}.label{color:var(--muted);font-size:12px}.small{font-size:12px;color:var(--muted)}.strong{font-weight:750}.section-title{display:flex;justify-content:space-between;align-items:center;margin:24px 0 12px;gap:12px}.section-title h2{margin:0;font-size:18px}.table-wrap{overflow:auto;border:1px solid var(--line);border-radius:10px;background:#fff}table{width:100%;border-collapse:collapse;min-width:760px}th,td{padding:10px 12px;border-bottom:1px solid #edf0f2;text-align:left;vertical-align:top}th{background:#f6f8f9;font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:#5c6974;position:sticky;top:0}tr:last-child td{border-bottom:0}.mono{font-family:Consolas,monospace;font-size:12px}.nowrap{white-space:nowrap}.link{color:#b84f00;font-weight:700;text-decoration:none}.link:hover{text-decoration:underline}.form-row{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.field label{display:block;font-size:11px;color:var(--muted);font-weight:800;text-transform:uppercase;margin:0 0 5px}.field input,.field select,.field textarea{width:100%;border:1px solid #cfd7dc;border-radius:8px;padding:9px 10px;background:#fff;color:var(--ink);font:inherit}.field textarea{min-height:80px;resize:vertical}.alert{padding:12px 14px;border-radius:9px;margin:0 0 16px;border:1px solid}.alert-success{background:#edf9f2;border-color:#bce4cc;color:#12623e}.alert-error{background:#fff0ef;border-color:#f2c2bd;color:#9f241b}.alert-info{background:#edf8fb;border-color:#c4e5eb;color:#0e6678}.progress{height:9px;background:#e6ebee;border-radius:999px;overflow:hidden}.progress span{display:block;height:100%;background:linear-gradient(90deg,var(--orange),var(--orange2))}.tabs{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px}.tabs button{padding:7px 10px;border-radius:8px;background:#edf1f3;text-decoration:none;font-weight:700;font-size:12px;border:0;cursor:pointer;color:#26343f}.tabs button.active{background:#202b34;color:#fff}.empty{padding:24px;color:var(--muted);text-align:center}.footer-note{margin-top:24px;color:var(--muted);font-size:12px}.synthetic{margin-bottom:16px;padding:9px 12px;border:1px solid #cfe2e8;border-radius:9px;background:#f5fbfd;color:#49636d;font-size:12px}.synthetic strong{color:#0e6e7e}.status-dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:6px;background:#9aa8b2}.status-dot.good{background:#1aa162}.status-dot.watch{background:#d59a13}.status-dot.bad{background:#d0443d}

/* Client portal trainset presentation */
.subscription-banner{background:#fff;border:1px solid var(--line);border-radius:12px;padding:16px 18px;display:flex;justify-content:space-between;gap:16px;align-items:center;margin-bottom:16px}.subscription-banner strong,.subscription-banner small{display:block}.subscription-banner small{color:var(--muted);margin-top:4px}.trainset-list{display:grid;gap:14px}.trainset-card{background:#fff;border:1px solid var(--line);border-radius:12px;overflow:hidden}.trainset-card-head{display:flex;justify-content:space-between;gap:14px;align-items:center;padding:14px 16px;border-bottom:1px solid var(--line);background:#fafbfb}.trainset-card-head h3{margin:0;font-size:16px}.trainset-card-head p{margin:3px 0 0;color:var(--muted);font-size:12px}.formation{display:grid;grid-template-columns:repeat(6,minmax(115px,1fr));gap:8px;padding:14px;overflow:auto}.car{border:1px solid #d6dee2;border-radius:10px;background:#fff;min-width:115px}.car-head{display:flex;justify-content:space-between;align-items:center;gap:6px;padding:8px 9px;border-bottom:1px solid #edf0f2;background:#f6f8f9}.car-head strong{font-size:12px}.car-body{padding:9px}.unit-link{font-weight:800;font-size:11px;color:#b84f00;cursor:pointer}.reading-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-top:8px}.reading{padding:6px;border-radius:7px;background:#f5f7f8;border:1px solid #edf0f2}.reading span{display:block;font-size:8px;text-transform:uppercase;color:#70808a;font-weight:800}.reading strong{display:block;font-size:11px;margin-top:2px}.trainset-foot{display:flex;justify-content:space-between;gap:10px;align-items:center;padding:10px 14px;border-top:1px solid #edf0f2;color:var(--muted);font-size:11px}.trainset-foot .actions{display:flex;gap:8px}.legend{display:flex;gap:12px;flex-wrap:wrap;color:var(--muted);font-size:11px}.legend span{display:inline-flex;align-items:center}.legend i{width:8px;height:8px;border-radius:50%;margin-right:5px}.legend .g{background:#1aa162}.legend .w{background:#d59a13}.legend .r{background:#d0443d}

/* Exact-style R16.79 passport */
.r1679-passport{--ip-accent:#0d9fa4;--ip-accent2:#47c8b4;--ip-gold:#e6ad36;--ip-soft:rgba(13,159,164,.055);--ip-shadow:0 12px 34px rgba(20,55,70,.08)}.r1679-passport h2,.r1679-passport h3{letter-spacing:-.015em}.r1679-passport .ip-hero{position:relative;overflow:hidden;border-radius:20px;padding:22px 24px;background:linear-gradient(128deg,#0b3141 0%,#0e5360 66%,#157d76 115%);color:#fff;box-shadow:0 16px 38px rgba(5,34,47,.14);display:flex;justify-content:space-between;gap:20px;align-items:flex-start}.r1679-passport .ip-hero:after{content:"";position:absolute;width:330px;height:330px;border:1px solid rgba(255,255,255,.08);border-radius:50%;right:-120px;top:-185px}.r1679-passport .ip-hero-copy{position:relative;z-index:2}.r1679-passport .ip-hero .ip-kicker{display:block;color:#77e8df;font-size:9px;font-weight:850;letter-spacing:.11em;text-transform:uppercase}.r1679-passport .ip-hero h2{font-size:28px;margin:5px 0 5px}.r1679-passport .ip-hero p{margin:0;max-width:800px;color:#d2e7ea;font-size:11px;line-height:1.55}.r1679-passport .ip-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:15px}.r1679-passport .ip-btn{display:inline-flex;align-items:center;justify-content:center;text-decoration:none;padding:8px 12px;border-radius:10px;border:1px solid rgba(255,255,255,.22);background:rgba(255,255,255,.07);color:#fff;font-size:10px;font-weight:800;cursor:pointer}.r1679-passport .ip-btn.primary{background:#ff9d22;color:#102b38;border-color:#ffb758}.r1679-passport .ip-hero-state{position:relative;z-index:2;min-width:205px;padding:14px 15px;border:1px solid rgba(255,255,255,.16);border-radius:15px;background:rgba(5,28,38,.20)}.r1679-passport .ip-hero-state span{display:block;font-size:8px;text-transform:uppercase;letter-spacing:.08em;color:#b9dadd;font-weight:850}.r1679-passport .ip-hero-state strong{display:block;font-size:24px;margin:4px 0 8px}.r1679-passport .ip-hero-state small{display:block;color:#c8dee1;font-size:9px;margin-top:3px}.r1679-passport .ip-kpis{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px;margin:13px 0}.r1679-passport .ip-kpi{border:1px solid var(--line);border-radius:15px;background:var(--panel);padding:14px 15px;min-height:93px;box-shadow:var(--ip-shadow)}.r1679-passport .ip-kpi>span{display:block;color:var(--muted);font-size:8px;font-weight:850;letter-spacing:.06em;text-transform:uppercase}.r1679-passport .ip-kpi strong{display:block;color:var(--ink);font-size:22px;margin:7px 0 3px;overflow-wrap:anywhere}.r1679-passport .ip-kpi small{display:block;color:var(--muted);font-size:9px;line-height:1.35}.r1679-passport .ip-section{margin-top:13px;border:1px solid var(--line);border-radius:18px;background:var(--panel);padding:17px 18px;box-shadow:var(--ip-shadow)}.r1679-passport .ip-head{display:flex;justify-content:space-between;align-items:flex-start;gap:15px;margin-bottom:13px}.r1679-passport .ip-head .ip-kicker{display:block;color:var(--ip-accent);font-size:8px;font-weight:850;letter-spacing:.09em;text-transform:uppercase;margin-bottom:4px}.r1679-passport .ip-head h2,.r1679-passport .ip-head h3{margin:0 0 4px;color:var(--ink)}.r1679-passport .ip-head p{margin:0;color:var(--muted);font-size:10px;line-height:1.5}.r1679-passport .ip-badge{display:inline-flex;align-items:center;padding:4px 8px;border-radius:999px;border:1px solid var(--line);background:var(--panel2);color:var(--ink);font-size:8px;font-weight:850;white-space:nowrap}.r1679-passport .ip-badge.good{background:#e9f9f1;color:#087344;border-color:#b1e2ca}.r1679-passport .ip-badge.warn{background:#fff7df;color:#805700;border-color:#ead18a}.r1679-passport .ip-badge.bad{background:#fff0ef;color:#9e3029;border-color:#e8aaa4}.r1679-passport .ip-badge.info{background:#edf8fb;color:#08788a;border-color:#b9e2e9}.r1679-passport .ip-reading-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px}.r1679-passport .ip-reading{border:1px solid var(--line);border-radius:13px;background:var(--ip-soft);padding:12px;min-height:100px}.r1679-passport .ip-reading>span{display:block;color:var(--muted);font-size:8px;text-transform:uppercase;font-weight:850;letter-spacing:.045em}.r1679-passport .ip-reading strong{display:block;color:var(--ink);font-size:18px;margin:5px 0 4px}.r1679-passport .ip-reading small{display:block;color:var(--muted);font-size:8px;line-height:1.35;margin-bottom:7px}.r1679-passport .ip-table-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:13px}.r1679-passport .ip-table{width:100%;border-collapse:separate;border-spacing:0;min-width:760px}.r1679-passport .ip-table th{text-align:left;padding:8px 10px;background:var(--panel2);color:var(--muted);font-size:8px;text-transform:uppercase;letter-spacing:.05em}.r1679-passport .ip-table td{padding:11px 10px;border-top:1px solid var(--line);color:var(--ink);font-size:10px;vertical-align:top}.r1679-passport .ip-table tbody tr:first-child td{border-top:0}.r1679-passport .ip-table td strong{font-size:10px}.r1679-passport .ip-sub{display:block;color:var(--muted);font-size:8px;line-height:1.45;margin-top:3px}.r1679-passport .ip-grid2{display:grid;grid-template-columns:1fr 1fr;gap:13px}.r1679-passport .ip-info-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.r1679-passport .ip-info{padding:10px 11px;border:1px solid var(--line);border-radius:11px;background:var(--panel2)}.r1679-passport .ip-info span{display:block;color:var(--muted);font-size:8px;font-weight:800;text-transform:uppercase;letter-spacing:.045em}.r1679-passport .ip-info strong{display:block;color:var(--ink);font-size:10px;margin-top:4px;line-height:1.35;overflow-wrap:anywhere}.r1679-passport .ip-info small{display:block;color:var(--muted);font-size:8px;margin-top:2px;line-height:1.35}.r1679-passport .ip-controller-card{border:1px solid var(--line);border-radius:14px;padding:14px;background:var(--panel2)}.r1679-passport .ip-controller-top{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.r1679-passport .ip-controller-top h3{margin:0;color:var(--ink);font-size:16px}.r1679-passport .ip-controller-top p{margin:3px 0 0;color:var(--muted);font-size:9px}.r1679-passport .ip-controller-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:12px}.r1679-passport .ip-controller-grid div{padding:9px;border:1px solid var(--line);border-radius:10px;background:var(--panel)}.r1679-passport .ip-controller-grid span{display:block;color:var(--muted);font-size:7px;text-transform:uppercase;font-weight:850}.r1679-passport .ip-controller-grid strong{display:block;color:var(--ink);font-size:9px;margin-top:3px;overflow-wrap:anywhere}.r1679-passport .ip-timeline{position:relative;display:grid;gap:8px}.r1679-passport .ip-event{display:grid;grid-template-columns:115px 145px minmax(0,1fr) auto;gap:11px;align-items:start;padding:11px 12px;border:1px solid var(--line);border-radius:12px;background:var(--panel2)}.r1679-passport .ip-event time{color:var(--muted);font-size:9px}.r1679-passport .ip-event .category{color:var(--ip-accent);font-size:8px;font-weight:850;text-transform:uppercase}.r1679-passport .ip-event strong{font-size:10px}.r1679-passport .ip-event p{font-size:8px;color:var(--muted);margin:3px 0 0}.r1679-passport .ip-action-list{display:grid;gap:8px}.r1679-passport .ip-action{display:flex;justify-content:space-between;gap:10px;align-items:flex-start;text-decoration:none;padding:10px 11px;border:1px solid var(--line);border-radius:11px;background:var(--panel2);cursor:pointer}.r1679-passport .ip-action strong{display:block;font-size:10px}.r1679-passport .ip-action .meta{display:block;color:var(--muted);font-size:8px;margin-top:3px}.r1679-passport .ip-empty{padding:16px;border:1px dashed var(--line);border-radius:11px;color:var(--muted);font-size:9px;text-align:center}.r1679-passport .chart{height:255px;position:relative}.r1679-passport .chart svg{width:100%;height:100%;overflow:visible}.chart-grid{stroke:#dde8eb;stroke-width:1}.chart-label{fill:#768a94;font-size:8px}.chart-line1{fill:none;stroke:#0d9fa4;stroke-width:3}.chart-line2{fill:none;stroke:#ff9d22;stroke-width:2.4}

/* Field demo / QR workflow */
.field-hero{background:linear-gradient(120deg,#1d2831,#33414a);color:#fff;border-radius:14px;padding:22px 24px;margin-bottom:18px;display:flex;justify-content:space-between;gap:20px;align-items:center}.field-hero h2{margin:0 0 6px;font-size:24px}.field-hero p{margin:0;color:#d5dde2}.qr-box{display:grid;grid-template-columns:160px 1fr;gap:16px;align-items:center}.fake-qr{width:150px;height:150px;background:#fff;border:10px solid #fff;display:grid;grid-template-columns:repeat(9,1fr);grid-template-rows:repeat(9,1fr);gap:1px;box-shadow:inset 0 0 0 1px #cfd7dc}.fake-qr i{background:#111}.job-card{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;padding:12px 14px;border:1px solid var(--line);border-radius:10px;background:#fff;margin-bottom:9px}.job-card h3{margin:0 0 4px;font-size:14px}.job-card p{margin:0;color:var(--muted);font-size:12px}.demo-form-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:14px}.form-status{display:none}.form-status.show{display:block}.record-strip{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0}.record-chip{font-family:Consolas,monospace;font-size:11px;border:1px solid var(--line);background:#f5f7f8;border-radius:7px;padding:6px 8px}.phone-note{background:#fff8e7;border:1px solid #ecd89a;border-radius:9px;padding:10px 12px;color:#6e5200;font-size:12px}.split{display:grid;grid-template-columns:1.15fr .85fr;gap:16px}.report-sheet{background:#fff;border:1px solid var(--line);padding:22px;border-radius:12px}.report-head{display:flex;justify-content:space-between;gap:16px;border-bottom:2px solid #1d2831;padding-bottom:12px}.report-head img{width:115px}.report-meta{text-align:right;color:var(--muted);font-size:11px}.report-sheet h3{font-size:16px;margin:18px 0 8px}.report-sheet p{font-size:12px;color:#465762}.report-kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:14px 0}.report-kpis div{padding:10px;border:1px solid var(--line);border-radius:8px;background:#f7f9fa}.report-kpis span{display:block;color:var(--muted);font-size:9px;text-transform:uppercase}.report-kpis strong{display:block;margin-top:3px;font-size:15px}

@media(max-width:1200px){.grid-4{grid-template-columns:repeat(2,1fr)}.grid-3{grid-template-columns:repeat(2,1fr)}.formation{grid-template-columns:repeat(3,minmax(130px,1fr))}.r1679-passport .ip-kpis{grid-template-columns:repeat(3,1fr)}.r1679-passport .ip-reading-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:900px){.shell{grid-template-columns:210px 1fr}.sidebar{padding:18px 12px}.brand img{width:96px}.split,.r1679-passport .ip-grid2{grid-template-columns:1fr}.topbar{padding:0 16px}.top-actions .user{display:none}.formation{grid-template-columns:repeat(2,minmax(130px,1fr))}}
@media(max-width:760px){.shell{display:block}.sidebar{position:relative;height:auto}.nav{display:grid;grid-template-columns:repeat(2,1fr)}.nav-label,.side-note{display:none}.topbar{position:relative;padding:0 16px;height:auto;min-height:68px}.topbar h1{font-size:15px}main{padding:16px}.banner,.field-hero,.subscription-banner{align-items:flex-start;flex-direction:column}.grid-4,.grid-3,.grid-2,.form-row{grid-template-columns:1fr}.formation{grid-template-columns:repeat(2,minmax(125px,1fr))}.r1679-passport .ip-hero{flex-direction:column}.r1679-passport .ip-hero-state{width:100%}.r1679-passport .ip-kpis,.r1679-passport .ip-reading-grid,.r1679-passport .ip-info-grid,.r1679-passport .ip-controller-grid{grid-template-columns:1fr}.r1679-passport .ip-event{grid-template-columns:1fr}.qr-box{grid-template-columns:1fr}.report-kpis{grid-template-columns:1fr 1fr}.view-switch{display:none}}
@media(max-width:520px){.formation{grid-template-columns:1fr}.nav{grid-template-columns:1fr}.report-kpis{grid-template-columns:1fr}}
@media print{.sidebar,.topbar,.synthetic,.no-print{display:none!important}.shell{display:block}main{padding:0}.page{display:none!important}.page.print-target{display:block!important}.report-sheet{border:0;border-radius:0}}
