/* SoD LAB 3.0 — Editorial risk intelligence.
   Visual-only layer. No libraries, tracking, data transfers or analytical changes. */
:root{
 --bg:#f2f0eb;--surface:#fffefa;--surface2:#f8f5ed;
 --sidebar:#242c2d;--sidebar2:#2d3839;--text:#263235;--muted:#6c7777;
 --stroke:#dddcd4;--accent:#967044;--accent2:#caa46e;--accentSoft:#f3e9d9;
 --success:#217e68;--successSoft:#e1f2e9;--warn:#a56f29;--warnSoft:#fbefd8;
 --danger:#b94153;--dangerSoft:#fbe9e9;--critical:#a62d43;
 --shadow:0 16px 44px rgba(36,43,39,.055);--radius:18px;
 --sod-serif:Georgia,"Times New Roman",serif;
 --sod-sans:"Aptos","Segoe UI",Inter,Arial,sans-serif;
}
[data-theme="dark"]{
 --bg:#141b1d;--surface:#202a2c;--surface2:#263234;
 --sidebar:#0e1516;--sidebar2:#1c292a;--text:#f0f0e9;--muted:#afbbb7;
 --stroke:#394644;--accent:#e0bc83;--accent2:#e8c794;--accentSoft:#3d3629;
 --success:#82d4b0;--successSoft:#233e35;--warn:#e5bb7b;--warnSoft:#403325;
 --danger:#fb9aa4;--dangerSoft:#452c33;--critical:#ffa7b3;
 --shadow:0 19px 45px rgba(0,0,0,.16);
}
body{font-family:var(--sod-sans);letter-spacing:-.008em;background:var(--bg)}
.app{grid-template-columns:264px minmax(0,1fr)}
.sidebar{
 background:
 radial-gradient(ellipse at -30% 0%,rgba(206,159,97,.085),transparent 55%),
 linear-gradient(166deg,var(--sidebar) 4%,#1e2627 95%);
 padding:33px 17px 24px;border-right:1px solid rgba(226,198,157,.14)
}
.brand{padding:2px 9px 36px;gap:14px}
.brand-mark{
 background:linear-gradient(145deg,#e5c791,#997141);
 border:1px solid #e9ce9c;border-radius:15px;
 width:46px;height:46px;box-shadow:0 12px 25px rgba(0,0,0,.18)
}
.brand-mark svg{color:#27302d;stroke-width:1.7}
.brand b{font-size:20px;letter-spacing:-.055em;font-weight:790;color:#fffdf5}
.brand small{font-size:10px;letter-spacing:.1em;color:#e0c9a7;text-transform:none}
.side-caption{color:#baae98;font-size:10px;font-weight:700;letter-spacing:.17em;margin:11px 0 12px;padding:0 15px}
.nav-btn{
 border:1px solid transparent;border-radius:11px;color:#bac7c3;
 min-height:48px;padding:12px 13px;margin:2px 0;font-weight:600;letter-spacing:-.01em
}
.nav-btn svg{stroke-width:1.7;color:#acb8ad}
.nav-btn .step-number{color:#9aaa9e;font-size:10px}
.nav-btn:hover{background:rgba(243,226,195,.075);color:#fff8e9}
.nav-btn.active,.nav-btn.active:hover{
 background:linear-gradient(100deg,rgba(209,176,119,.2),rgba(209,176,119,.055));
 border-color:rgba(221,186,129,.28);box-shadow:inset 3px 0 #e1bc83;color:#fff9ed
}
.nav-btn.active:before{display:none}
.nav-btn.active svg,.nav-btn.active .step-number{color:#efd3a6}
.side-bottom{
 background:linear-gradient(145deg,rgba(231,199,147,.11),rgba(149,124,91,.035));
 border:1px solid rgba(224,192,142,.24);border-radius:15px;padding:20px
}
.side-bottom .mini-chip{
 background:rgba(227,193,131,.13);border:1px solid rgba(227,193,131,.17);
 color:#f2d7aa
}
.side-bottom b{color:#fff9ee;font-size:13px}
.side-bottom p{color:#c1c9c5;line-height:1.66}
.side-bottom [data-action="export-json"]{
 background:#dac094!important;border:1px solid #dac094!important;
 color:#26302d!important;min-height:41px;border-radius:9px!important
}
.side-brand{color:#bcb7ab;font-weight:650;letter-spacing:.15em;font-size:9px}
.sod-back-link{border-color:rgba(223,193,145,.21)!important;color:#dfc9a8!important;border-radius:9px!important}
.sod-back-link:hover{background:rgba(223,193,145,.09)!important}
.workspace{background:radial-gradient(circle at 80% -5%,rgba(203,166,105,.075),transparent 37%),var(--bg)}
.topbar{
 height:82px;background:color-mix(in srgb,var(--surface) 95%,transparent);
 border-color:var(--stroke);padding:0 clamp(26px,4vw,67px);backdrop-filter:blur(16px)
}
.top-context{padding-left:16px;border-left:2px solid var(--accent2)}
.top-context strong{font-size:14px;font-weight:780;letter-spacing:-.03em}
.top-context span{font-size:11px;color:var(--muted)}
.top-tools .button.icon-only{border-radius:10px}
.top-tools [data-action="pdf"]{
 background:#283734!important;color:#f5e9d5!important;border:1px solid #283734!important;
 padding:10px 19px;border-radius:10px;box-shadow:0 7px 19px rgba(33,46,40,.13)
}
[data-theme="dark"] .top-tools [data-action="pdf"]{background:#d7b889!important;color:#233029!important;border-color:#d7b889!important}
.container{max-width:1570px;padding:39px clamp(26px,4vw,67px) 100px}
.hero{
 position:relative;isolation:isolate;overflow:hidden;min-height:347px;
 display:grid;grid-template-columns:minmax(0,1fr) 265px;align-items:center;gap:38px;
 padding:49px clamp(35px,4.4vw,68px);
 background:radial-gradient(ellipse at 86% 13%,rgba(181,139,78,.2),transparent 39%),
            linear-gradient(120deg,#1d302e 0%,#233532 48%,#3c382f 100%);
 border:1px solid rgba(221,195,154,.18);border-radius:22px;
 box-shadow:0 25px 50px rgba(29,42,36,.13);margin-bottom:22px
}
.hero:before{
 content:"";position:absolute;inset:0;width:auto;height:auto;right:0;top:0;
 border:0;border-radius:0;z-index:0;box-shadow:none;
 background:
  radial-gradient(circle at 15% 13%,rgba(226,190,132,.10) 0 1px,transparent 1.4px) 0 0/19px 19px,
  repeating-linear-gradient(125deg,transparent 0 69px,rgba(237,216,177,.034) 70px,transparent 71px);
 -webkit-mask-image:linear-gradient(90deg,transparent 20%,#000 100%);
 mask-image:linear-gradient(90deg,transparent 20%,#000 100%)
}
.hero:after{
 content:"";position:absolute;z-index:0;right:-95px;top:-145px;
 width:520px;height:520px;border:1px solid rgba(220,195,145,.17);
 border-radius:50%;box-shadow:0 0 0 73px rgba(220,195,145,.045),0 0 0 152px rgba(220,195,145,.035);
 pointer-events:none
}
.hero .eyebrow{
 color:#e4c896;letter-spacing:.18em;font-size:10px;line-height:1.5;
 font-weight:800;display:inline-flex;padding:8px 12px;
 border:1px solid rgba(236,203,148,.24);border-radius:30px;
 background:rgba(244,220,181,.075);margin-bottom:25px
}
.hero .eyebrow svg{color:#e6c791}
.hero h1{
 font-family:var(--sod-sans);font-size:clamp(37px,4.3vw,65px);
 font-weight:770;line-height:1.065;letter-spacing:-.075em;max-width:760px;
 margin-bottom:19px;text-wrap:balance;color:#fffdf7
}
.hero h1 em{
 display:inline;font-family:var(--sod-serif);font-style:italic;
 font-weight:400;letter-spacing:-.055em;color:#e7c796
}
.hero p{
 max-width:605px;color:#d1dbd6;line-height:1.75;font-size:14px;
 margin-bottom:30px
}
.hero .hero-actions{gap:12px}
.hero .button{min-height:48px;border-radius:10px;transition:transform .2s ease,background .2s ease,box-shadow .2s ease}
.hero .button.primary{
 background:#dfc093!important;color:#26312d!important;border:1px solid #dfc093!important;
 box-shadow:0 9px 28px rgba(13,22,17,.18)
}
.hero .button.soft{border:1px solid rgba(241,220,182,.37);color:#fff7e8;background:rgba(255,255,255,.065)}
.hero .button:hover:not(:disabled){transform:translateY(-2px)}
.hero-side{
 position:relative;isolation:isolate;min-height:262px;align-self:stretch;
 display:flex;flex-direction:column;justify-content:flex-end;gap:2px;
 border:1px solid rgba(229,201,157,.36);
 border-radius:18px;padding:21px 24px;
 background:linear-gradient(165deg,rgba(233,205,156,.16),rgba(12,28,25,.46));
 box-shadow:inset 0 1px rgba(255,255,255,.1),0 18px 36px rgba(8,23,19,.13);
 backdrop-filter:blur(12px);overflow:hidden
}
.hero-side:before{content:"";position:absolute;left:23px;top:20px;width:31px;height:3px;background:#e1be87;border-radius:5px;z-index:2}
.hero-side-label{font-size:10px;color:#e9d5b2;font-weight:750;letter-spacing:.16em;z-index:2;margin-top:12px}
.hero-side-value{font-size:clamp(53px,5vw,79px);font-weight:770;line-height:1;letter-spacing:-.08em;color:#fffdf6;z-index:2;margin:10px 0 4px}
.hero-side-caption{max-width:195px;font-size:11px;color:#e2e6df;line-height:1.6;z-index:2}
.hero-side-foot{z-index:2;font-size:10px;color:#f8e1bd;margin-top:17px;border-color:rgba(241,219,178,.25);gap:8px}
.hero-side-foot svg{color:#e6c68f}
.sod-signal{
 position:absolute;inset:0 0 auto auto;width:100%;height:141px;opacity:.92;
 background:radial-gradient(circle at 48% 44%,rgba(234,188,113,.16),transparent 52%);
 pointer-events:none;z-index:0
}
.sod-signal svg{display:block;width:100%;height:100%}
.sod-signal path{fill:none;stroke:#d7b684;stroke-width:1.4;opacity:.58;stroke-dasharray:3 5}
.sod-signal circle{fill:#223a34;stroke:#e2bf87;stroke-width:2}
.sod-signal circle.is-lit{fill:#e4c48c;filter:drop-shadow(0 0 7px rgba(245,205,123,.65))}
.sod-signal .sod-signal-ring{fill:none;stroke:#d7b684;stroke-width:1;opacity:.29}
.sample-banner{
 background:#fbf4e7;border:1px solid #dfcfb5;border-radius:12px;
 padding:14px 19px;box-shadow:0 8px 25px rgba(94,64,26,.035)
}
[data-theme="dark"] .sample-banner{background:#332f25;border-color:#5b4e35}
.sample-banner>svg{color:var(--accent)}
.sample-banner p{font-size:12px;line-height:1.6}
.sample-banner .mini-link{color:var(--accent)}
.section-label{
 margin:24px 0 15px;color:var(--muted);font-size:10px;
 font-weight:800;letter-spacing:.18em;padding-left:3px
}
.stats-grid{gap:16px;margin-bottom:22px}
.stat{
 min-height:165px;background:var(--surface);
 border:1px solid var(--stroke);border-radius:17px;
 padding:23px 23px 21px;box-shadow:var(--shadow);
 transition:transform .22s ease,box-shadow .22s ease,border-color .22s ease
}
.stat:after{height:3px;width:36%;max-width:122px;border-radius:0 0 0 8px;opacity:.9}
.stat:before{
 content:"";position:absolute;right:-44px;bottom:-61px;width:150px;height:150px;
 border:1px solid color-mix(in srgb,var(--tone,var(--accent)) 21%,transparent);
 border-radius:50%;box-shadow:0 0 0 21px color-mix(in srgb,var(--tone,var(--accent)) 5%,transparent);
 pointer-events:none
}
.stat.warn{--tone:#b58a4f}.stat.danger{--tone:#bb4a60}.stat.blue{--tone:#b58a4f}.stat.green{--tone:#2d826b}
.stat-label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.065em;color:var(--muted)}
.stat-label svg{width:17px;height:17px}
.stat-value{font-size:44px;letter-spacing:-.075em;font-weight:790;margin-top:18px;color:var(--text)}
.stat-value.blue{color:var(--accent)}
.stat-note{font-size:11px;line-height:1.55;margin-top:10px;max-width:230px}
.stat-value.textual{font-size:30px!important;margin-top:23px!important}
@media(hover:hover) and (pointer:fine){
 .stat:hover{transform:translateY(-4px);box-shadow:0 21px 45px rgba(36,43,39,.095);border-color:color-mix(in srgb,var(--accent) 35%,var(--stroke))}
}
.cols-2{gap:19px;grid-template-columns:1.08fr .92fr}
.panel,.rule-card,.person-card,.finding,.help-card,.result-toolbar,.export-panel{
 border-radius:17px;background:var(--surface);border:1px solid var(--stroke);
 box-shadow:var(--shadow)
}
.panel{padding:29px}
.panel-title{font-size:18px;letter-spacing:-.05em;font-weight:780}
.panel-caption{font-size:12px;line-height:1.6}
.panel-header{margin-bottom:23px}
.alert-preview{transition:background .18s ease}
.alert-preview b{font-size:13px}
.alert-preview p{font-size:12px}
.alert-preview .chip{font-size:10px}
.empty{border-color:var(--stroke);background:var(--surface2)}
.empty svg{color:var(--success)}
.road-step .road-n{background:var(--accentSoft);color:var(--accent)}
.road-step b{font-size:13px}
.road-step p{font-size:12px}
.track{background:var(--stroke)}
.button{font-weight:730;letter-spacing:-.015em;border-radius:10px}
.button.primary{background:#2d403b;border-color:#2d403b;color:#fff9ef;box-shadow:0 6px 17px rgba(37,56,46,.12)}
.button.primary:hover{background:#405d50;border-color:#405d50;filter:none}
[data-theme="dark"] .button.primary{background:#d7b889;border-color:#d7b889;color:#26312d}
.button:hover:not(:disabled){border-color:color-mix(in srgb,var(--accent) 48%,var(--stroke))}
.mini-link{color:var(--accent);font-size:12px}
.eyebrow{color:var(--accent)}
.page-heading{margin-bottom:28px}
.page-heading h1{
 font-size:clamp(31px,3vw,45px);font-weight:770;letter-spacing:-.06em;
 text-wrap:balance
}
.page-heading p{font-size:13px}
.info-strip{background:var(--accentSoft);border-color:color-mix(in srgb,var(--accent) 19%,var(--stroke))}
.info-strip svg{color:var(--accent)}
.field input,.field select,.field textarea{
 background:var(--surface);border:1px solid var(--stroke);border-radius:9px;
 min-height:44px
}
.field label{font-size:11px;text-transform:uppercase;letter-spacing:.055em}
.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accentSoft)}
.matrix-shell{border-radius:14px;box-shadow:var(--shadow)}
.matrix-table th{background:var(--surface2);text-transform:uppercase;letter-spacing:.03em;color:var(--muted)}
.matrix-table tr:hover td,.matrix-table tr:hover td:first-child{background:var(--surface2)}
.grant.granted,.role-pick.selected{background:var(--accentSoft);color:var(--accent);border-color:color-mix(in srgb,var(--accent) 36%,var(--stroke))}
.role-pick{border-radius:9px}
.chip.critica{background:var(--dangerSoft)}
.chip.alta{background:var(--warnSoft);color:var(--warn)}
.rule-card{padding:23px}
.rule-card h3{font-size:15px}
.person-card{padding:22px}
.avatar{border-radius:12px;background:var(--accentSoft);color:var(--accent)}
.finding{border-left:3px solid color-mix(in srgb,var(--danger) 60%,var(--stroke))}
.finding h3{font-size:18px}
.explain,.treatment{background:var(--surface2)}
.mobile-dock{border-color:var(--stroke);background:color-mix(in srgb,var(--surface) 93%,transparent)}
.mobile-tab.active{background:var(--accentSoft);color:var(--accent)}
.toast{background:#223632;color:#f9eedc}
@media(max-width:1280px){
 .app{grid-template-columns:245px minmax(0,1fr)}
 .hero{grid-template-columns:minmax(0,1fr) 225px;padding:40px 37px;gap:24px}
 .hero h1{font-size:clamp(36px,3.8vw,53px)}
 .hero-side{min-height:248px}
 .container{padding-left:31px;padding-right:31px}
 .stat{padding:21px 18px}
}
@media(max-width:1050px){
 .hero{grid-template-columns:minmax(0,1fr) 195px}
 .hero h1{font-size:clamp(32px,4vw,44px)}
 .hero-side{padding:17px}
 .stats-grid{gap:11px}
 .stat{min-height:145px;padding:17px}
 .stat-value{font-size:36px}
}
@media(max-width:860px){
 .app{grid-template-columns:minmax(0,1fr)}
 .sidebar{width:min(305px,86vw)}
 .topbar{height:69px;padding:0 20px}
 .container{padding:28px 20px calc(96px + env(safe-area-inset-bottom))}
 .hero{grid-template-columns:minmax(0,1fr) 195px;padding:34px 28px}
 .hero h1{font-size:clamp(34px,4.4vw,45px)}
 .hero-side{min-height:223px}
 .stats-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:13px}
 .stat{min-height:145px}
 .mobile-dock{box-shadow:0 -7px 28px rgba(19,28,25,.1)}
 .mobile-tab.active{border:1px solid color-mix(in srgb,var(--accent) 20%,transparent)}
}
@media(max-width:700px){
 .hero{grid-template-columns:1fr;gap:19px;padding:30px 26px}
 .hero h1{font-size:clamp(33px,7vw,48px);max-width:600px}
 .hero p{font-size:13px;margin-bottom:20px}
 .hero .eyebrow{margin-bottom:19px}
 .hero-side{
  display:grid;grid-template-columns:auto 1fr;align-items:center;
  min-height:98px;gap:4px 14px;padding:17px 19px;
  margin:0;align-self:auto
 }
 .hero-side-label{display:block;grid-column:1/-1;margin:0;letter-spacing:.11em}
 .hero-side-value{font-size:38px;margin:0;grid-row:2/4}
 .hero-side-caption{font-size:11px;max-width:none}
 .hero-side-foot{grid-column:2;grid-row:3;margin:0;padding:0;border:0;font-size:10px}
 .hero-side:before{display:none}
 .sod-signal{left:auto;right:0;width:135px;opacity:.3;height:100%}
 .section-label{margin-top:20px}
 .cols-2{grid-template-columns:1fr}
}
@media(max-width:580px){
 .topbar{height:63px;padding:0 13px}
 .top-context{padding-left:10px}
 .top-context strong{font-size:12px}
 .top-tools [data-action="pdf"]{padding:8px 10px}
 .container{padding:19px 13px calc(96px + env(safe-area-inset-bottom))}
 .hero{padding:29px 21px 22px;gap:19px;border-radius:16px}
 .hero h1{font-size:35px;letter-spacing:-.064em;line-height:1.07}
 .hero p{font-size:12px;line-height:1.7}
 .hero .eyebrow{font-size:9px;padding:7px 9px;margin-bottom:17px}
 .hero .hero-actions{gap:8px}
 .hero .button{font-size:11px;min-height:43px;padding:9px 12px}
 .hero-side{padding:13px 15px}
 .stat{min-height:135px;padding:17px 15px}
 .stat-label{font-size:10px;letter-spacing:.015em}
 .stat-label svg{width:15px;height:15px}
 .stat-value{font-size:36px}
 .stat-value.textual{font-size:22px!important}
 .stat-note{font-size:10px}
 .panel{padding:20px}
 .panel-title{font-size:17px}
 .page-heading h1{font-size:30px}
 .side-bottom{padding:16px}
}
@media(max-width:360px){
 .hero h1{font-size:31px}
 .hero-actions .button{flex:1}
 .hero-side-foot{font-size:9px}
}
@media(prefers-reduced-motion:reduce){
 .stat,.hero .button,.nav-btn{transition:none!important}
}
@media print{
 .sidebar,.topbar,.container,.mobile-dock{display:none!important}
 .app,.workspace{display:none!important}
 #print-report{display:block!important;background:#fff!important;color:#16242a!important}
}

/* Emil Design Engineering + Mobile Native final polish:
   purposeful motion only; native touch response; accessibility. */
html{-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}
button,a,[role="button"]{
 touch-action:manipulation;-webkit-user-select:none;user-select:none;
 -webkit-touch-callout:none
}
.button,.nav-btn,.mobile-tab{
 transition:transform 140ms cubic-bezier(.23,1,.32,1),
 background-color 160ms ease,border-color 160ms ease,
 color 160ms ease,box-shadow 160ms ease
}
.button:active:not(:disabled),.mobile-tab:active:not(:disabled){
 transform:scale(.97)
}
.nav-btn:active:not(:disabled){transform:scale(.985)}
dialog[open]{
 animation:sod-dialog-enter 220ms cubic-bezier(.23,1,.32,1) both;
 transform-origin:center
}
@keyframes sod-dialog-enter{
 from{opacity:0;transform:translateY(9px) scale(.98)}
 to{opacity:1;transform:translateY(0) scale(1)}
}
.toast{transition:opacity 180ms cubic-bezier(.23,1,.32,1),transform 180ms cubic-bezier(.23,1,.32,1)}
.sidebar{overscroll-behavior:contain}
.mobile-dock{padding-bottom:calc(7px + env(safe-area-inset-bottom,0px))}
@media(pointer:coarse){
 input,textarea,select{font-size:16px!important}
 .button,.mobile-tab{min-height:44px}
}
@media(hover:none){
 .stat:hover{transform:none;box-shadow:var(--shadow);border-color:var(--stroke)}
 .hero .button:hover:not(:disabled){transform:none}
}
@media(prefers-reduced-motion:reduce){
 dialog[open]{animation:none}
 .button,.nav-btn,.mobile-tab,.stat,.toast{transition:none!important}
}
