

@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600;700&display=swap');
:root {
 color-scheme: light;
 --page:#f7f1e9; --paper:#fffdfa; --panel:#fdfaf5; --panel2:#f3ebe1; --panel3:#eee2d4; --line:#e3d7c9; --line2:#d4c3b0;
 --ink:#30251c; --ink-strong:#24190f; --muted:#817367; --quiet:#a09183; --brown:#412f20; --brown2:#322316;
 --orange:#f4781c; --orange-deep:#c35d0e; --gold:#d9bd83; --gold2:#b9975e;
 --tint:#fff0df; --hover:#f8f0e6; --selected:#fff3e8; --green:#347a57; --green-bg:#e3f3e7;
 --warn:#9f651a; --warn-bg:#fff2da; --red:#a84a49; --red-bg:#f8e7e4; --focus:0 0 0 3px #f4781c36;
 --shadow-card:0 1px 1px #49301d0c,0 8px 23px -17px #4e311c50,0 20px 42px -34px #4b301a43;
 --shadow-float:0 18px 55px -20px #2e1e13a1,0 4px 17px -6px #321d1177;
 --control-h:35px; --table-row-h:42px; --card-pad:17px;
 font-family:Poppins,system-ui,-apple-system,"Segoe UI",sans-serif; font-size:13px;
}
:root[data-density="comfort"]{--control-h:43px;--table-row-h:53px;--card-pad:22px;}
:root[data-theme="dark"] {
 color-scheme:dark; --page:#201c19;--paper:#312a23;--panel:#302922;--panel2:#3b322b;--panel3:#4a3a2d;--line:#534337;--line2:#67503f;
 --ink:#f2e8df;--ink-strong:#fff5eb;--muted:#bdae9f;--quiet:#9f8d7e;--brown:#241c16;--brown2:#1e1612;
 --orange:#f58a35;--orange-deep:#ffaf6a;--gold:#d9bd83;--gold2:#c3a475;--tint:#543b29;--hover:#45382f;--selected:#543d2b;
 --green:#99d4ae;--green-bg:#284b39;--warn:#efc387;--warn-bg:#594329;--red:#ffb1a7;--red-bg:#5f3633;
 --shadow-card:0 1px 0 #ffffff08,0 14px 35px -20px #050302b7;--shadow-float:0 26px 65px #090605ce;
}
/* ---- Surface tokens (AFW-DS-02 R2a) ------------------------------------------------------------------
   Four surface roles x light/dark: board (dark hero plane, dark in both themes), surface (neutral card),
   tint (warm tonal card), accent (gold highlight). Per role: bg (gradient allowed), ref (flat worst-case colour
   of that bg used for contrast maths), bd, fg / fg2 / fg3 (primary / secondary / muted text), icon, shadow, focus,
   ok / warn / bad (semantic text on that role), spark (sparkline / chart accent). Components read the neutral
   --sf-* aliases that [data-surface="..."] maps below, so one card markup works on every role. */
:root{
 --sf-board-bg:radial-gradient(circle at 93% 18%,#e7893c4d,transparent 42%),linear-gradient(118deg,#4f3a29,#3b2a1d 64%,#68462d);--sf-board-ref:#68462d;--sf-board-bd:#97734c;
 --sf-board-fg:#fff5e8;--sf-board-fg2:#e8d5bd;--sf-board-fg3:#dcc7aa;--sf-board-icon:#eaca9c;--sf-board-shadow:0 18px 35px -28px #312015ae;--sf-board-focus:#ffbd7c;
 --sf-board-ok:#8fdcab;--sf-board-warn:#f8d18a;--sf-board-bad:#ffb1a7;--sf-board-spark:#f4a65d;
 --sf-surface-bg:#fffdfa;--sf-surface-ref:#fffdfa;--sf-surface-bd:#e3d7c9;
 --sf-surface-fg:#30251c;--sf-surface-fg2:#5b4e43;--sf-surface-fg3:#766a5e;--sf-surface-icon:#b4530a;--sf-surface-shadow:var(--shadow-card);--sf-surface-focus:#f4781c;
 --sf-surface-ok:#2b6e4a;--sf-surface-warn:#8f5a14;--sf-surface-bad:#a84a49;--sf-surface-spark:#d4601a;
 --sf-tint-bg:linear-gradient(135deg,#fff3e6,#fbe7d0);--sf-tint-ref:#fbe7d0;--sf-tint-bd:#edd2ad;
 --sf-tint-fg:#33251a;--sf-tint-fg2:#5f4a37;--sf-tint-fg3:#735c46;--sf-tint-icon:#a84e08;--sf-tint-shadow:0 1px 1px #49301d0a,0 10px 24px -20px #8a4f1c66;--sf-tint-focus:#d4601a;
 --sf-tint-ok:#2b6e4a;--sf-tint-warn:#8a5410;--sf-tint-bad:#a03f3e;--sf-tint-spark:#c35d0e;
 --sf-accent-bg:linear-gradient(135deg,#f6e2b8,#e8c07c);--sf-accent-ref:#e8c07c;--sf-accent-bd:#c9a45e;
 --sf-accent-fg:#2b1d10;--sf-accent-fg2:#4a361f;--sf-accent-fg3:#5e4628;--sf-accent-icon:#5a3a14;--sf-accent-shadow:0 1px 1px #49301d12,0 12px 26px -20px #a8741f99;--sf-accent-focus:#7a3d0a;
 --sf-accent-ok:#1f5a3b;--sf-accent-warn:#6e430a;--sf-accent-bad:#8c2f2f;--sf-accent-spark:#5a3a14;
 /* Chart categorical palette (validated with validate_palette.js, 5 slots, fixed order) */
 --chart-1:#d4601a;--chart-2:#0f7fa3;--chart-3:#b87e0c;--chart-4:#9a4a8f;--chart-5:#5a8a35;
}
:root[data-theme="dark"]{
 --sf-board-bg:radial-gradient(circle at 96% 8%,#f08a3a5c,transparent 34%),linear-gradient(118deg,#1f150e,#170f0a 66%,#241810);--sf-board-ref:#241810;--sf-board-bd:#a2814f;
 --sf-board-fg:#fff3e4;--sf-board-fg2:#e6d2b8;--sf-board-fg3:#d6c0a2;--sf-board-icon:#f0c88f;--sf-board-shadow:0 20px 40px -26px #050302d0;--sf-board-focus:#ffbd7c;
 --sf-board-ok:#9fe0b8;--sf-board-warn:#f9d794;--sf-board-bad:#ffb8ad;--sf-board-spark:#f7b36e;
 --sf-surface-bg:#3d352d;--sf-surface-ref:#3d352d;--sf-surface-bd:#5d4d3f;
 --sf-surface-fg:#f2e8df;--sf-surface-fg2:#d2c4b6;--sf-surface-fg3:#b3a395;--sf-surface-icon:#f0b070;--sf-surface-shadow:var(--shadow-card);--sf-surface-focus:#f58a35;
 --sf-surface-ok:#99d4ae;--sf-surface-warn:#efc387;--sf-surface-bad:#ffb1a7;--sf-surface-spark:#e0701f;
 --sf-tint-bg:linear-gradient(135deg,#4d3a2c,#43342a);--sf-tint-ref:#4d3a2c;--sf-tint-bd:#6f5440;
 --sf-tint-fg:#f6e9dc;--sf-tint-fg2:#dccbb8;--sf-tint-fg3:#c4ae95;--sf-tint-icon:#f89a4f;--sf-tint-shadow:0 14px 30px -22px #050302b0;--sf-tint-focus:#f58a35;
 --sf-tint-ok:#a4dcb9;--sf-tint-warn:#f2c98f;--sf-tint-bad:#ffb8ad;--sf-tint-spark:#f58a35;
 --sf-accent-bg:linear-gradient(135deg,#e6c585,#c9a05a);--sf-accent-ref:#c9a05a;--sf-accent-bd:#e9cd94;
 --sf-accent-fg:#241a10;--sf-accent-fg2:#38280f;--sf-accent-fg3:#46331b;--sf-accent-icon:#4a2f0c;--sf-accent-shadow:0 16px 32px -22px #050302c0;--sf-accent-focus:#fff3d6;
 --sf-accent-ok:#0f3a22;--sf-accent-warn:#4d2c04;--sf-accent-bad:#6e1d1d;--sf-accent-spark:#4a2f0c;
 --chart-1:#e0701f;--chart-2:#2f93b3;--chart-3:#b88a28;--chart-4:#b0629f;--chart-5:#62994a;
}
[data-surface="board"]{--sf-bg:var(--sf-board-bg);--sf-ref:var(--sf-board-ref);--sf-bd:var(--sf-board-bd);--sf-fg:var(--sf-board-fg);--sf-fg2:var(--sf-board-fg2);--sf-fg3:var(--sf-board-fg3);--sf-icon:var(--sf-board-icon);--sf-shadow:var(--sf-board-shadow);--sf-focus:var(--sf-board-focus);--sf-ok:var(--sf-board-ok);--sf-warn:var(--sf-board-warn);--sf-bad:var(--sf-board-bad);--sf-spark:var(--sf-board-spark)}
[data-surface="surface"]{--sf-bg:var(--sf-surface-bg);--sf-ref:var(--sf-surface-ref);--sf-bd:var(--sf-surface-bd);--sf-fg:var(--sf-surface-fg);--sf-fg2:var(--sf-surface-fg2);--sf-fg3:var(--sf-surface-fg3);--sf-icon:var(--sf-surface-icon);--sf-shadow:var(--sf-surface-shadow);--sf-focus:var(--sf-surface-focus);--sf-ok:var(--sf-surface-ok);--sf-warn:var(--sf-surface-warn);--sf-bad:var(--sf-surface-bad);--sf-spark:var(--sf-surface-spark)}
[data-surface="tint"]{--sf-bg:var(--sf-tint-bg);--sf-ref:var(--sf-tint-ref);--sf-bd:var(--sf-tint-bd);--sf-fg:var(--sf-tint-fg);--sf-fg2:var(--sf-tint-fg2);--sf-fg3:var(--sf-tint-fg3);--sf-icon:var(--sf-tint-icon);--sf-shadow:var(--sf-tint-shadow);--sf-focus:var(--sf-tint-focus);--sf-ok:var(--sf-tint-ok);--sf-warn:var(--sf-tint-warn);--sf-bad:var(--sf-tint-bad);--sf-spark:var(--sf-tint-spark)}
[data-surface="accent"]{--sf-bg:var(--sf-accent-bg);--sf-ref:var(--sf-accent-ref);--sf-bd:var(--sf-accent-bd);--sf-fg:var(--sf-accent-fg);--sf-fg2:var(--sf-accent-fg2);--sf-fg3:var(--sf-accent-fg3);--sf-icon:var(--sf-accent-icon);--sf-shadow:var(--sf-accent-shadow);--sf-focus:var(--sf-accent-focus);--sf-ok:var(--sf-accent-ok);--sf-warn:var(--sf-accent-warn);--sf-bad:var(--sf-accent-bad);--sf-spark:var(--sf-accent-spark)}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;min-width:320px;background:var(--page);color:var(--ink);line-height:1.5}
button,input,select,textarea{font:inherit}button{cursor:pointer}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--orange);outline-offset:2px}a{color:inherit;text-decoration:none}
svg.i{width:17px;height:17px;stroke:currentColor;stroke-width:1.8;fill:none;stroke-linecap:round;stroke-linejoin:round;flex:none}
.app{display:grid;grid-template-columns:222px minmax(0,1fr);min-height:100vh}
.sidebar{background:radial-gradient(ellipse at -30% -10%,#9a603140,transparent 45%),linear-gradient(163deg,#4e3928 0%,#372619 54%,#291c13 100%);color:#f6ead9;display:flex;flex-direction:column;gap:19px;padding:23px 13px 19px;box-shadow:7px 0 33px -20px #21170bb5;position:relative;z-index:3}
.logo{display:flex;align-items:center;gap:11px;padding:0 10px;margin-bottom:11px}.logo-mark{width:34px;height:34px;display:grid;place-items:center;border-radius:10px;background:linear-gradient(145deg,#ffb76d,#ee761b 72%);box-shadow:0 8px 23px #f4781c38;color:#3b2719;font-size:23px;font-weight:700;letter-spacing:-.06em}.logo strong{font-size:13px;letter-spacing:.085em}.logo small{display:block;color:#cbb499;font-size:9px;letter-spacing:.14em;text-transform:uppercase;margin-top:0}
.section-label{padding:6px 13px 7px;font-size:9px;letter-spacing:.18em;color:#c5aa8b;font-weight:700;text-transform:uppercase}
.side-nav{display:grid;gap:3px}.side-link{width:100%;min-height:39px;display:flex;align-items:center;gap:11px;background:transparent;color:#d9c7b4;border:1px solid transparent;border-radius:9px;text-align:left;font-size:11.5px;padding:0 13px;transition:background .17s,color .17s}.side-link:hover{background:#ffffff12;color:#fff}.side-link.active{background:linear-gradient(90deg,#c3763438,#ffffff08);border-color:#dcbd8c36;color:#fff4e7;box-shadow:inset 3px 0 #f4781c}.side-link.active .i{color:#ffa862}.side-link .side-tail{margin-left:auto;font-size:9px;color:#ddbb90}
.side-spacer{flex:1}.side-foot{padding:14px 10px 0;border-top:1px solid #dcc4a12c;display:flex;align-items:center;gap:10px}.avatar{background:linear-gradient(135deg,#d9bd83,#f4dfb4);width:31px;height:31px;border-radius:9px;color:#503523;font-weight:700;display:grid;place-items:center;font-size:10px;border:1px solid #fce5ba77}.side-foot strong{font-size:11px;display:block}.side-foot small{font-size:9.5px;color:#c9b096}
.main{min-width:0;position:relative;background:radial-gradient(ellipse 740px 240px at 75% -80px,#f4bf8744,transparent 75%),var(--page)}
:root[data-theme="dark"] .main{background:radial-gradient(ellipse 740px 260px at 75% -80px,#8e48252b,transparent 75%),var(--page)}
.topbar{position:sticky;top:0;z-index:7;height:58px;display:flex;align-items:center;justify-content:space-between;gap:20px;padding:0 31px;background:color-mix(in srgb,var(--paper) 86%,transparent);backdrop-filter:blur(18px);border-bottom:1px solid var(--line)}
.crumb{display:flex;align-items:center;gap:9px;color:var(--muted);font-size:11px;white-space:nowrap}.crumb b{font-weight:600;color:var(--ink)}.crumb .i{width:13px;height:13px;color:var(--quiet)}
.top-actions{display:flex;align-items:center;gap:8px}.top-search{display:flex;align-items:center;gap:9px;border:1px solid var(--line);color:var(--muted);background:var(--panel2);padding:0 11px;height:32px;border-radius:8px;min-width:185px;font-size:10.5px}.kbd{border:1px solid var(--line2);border-radius:4px;padding:1px 4px;margin-left:auto;color:var(--quiet);font-size:9px}.icon-btn{border:1px solid var(--line);background:linear-gradient(150deg,var(--paper),var(--panel2));display:grid;place-items:center;width:33px;height:33px;border-radius:8px;color:var(--muted);transition:border-color .15s,background .15s}.icon-btn:hover{border-color:var(--gold2);color:var(--ink)}.user-avatar{height:31px;width:31px;border-radius:9px;background:linear-gradient(150deg,#eddbbe,#d9bd83);display:grid;place-items:center;font-size:10px;color:#553b25;font-weight:700;border:1px solid #ceae80}
.content{max-width:1560px;margin:auto;padding:26px 31px 58px}
.preview-bar{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:19px;flex-wrap:wrap}.preview-badge{display:inline-flex;align-items:center;gap:8px;font-size:10px;font-weight:650;color:var(--orange-deep);text-transform:uppercase;letter-spacing:.1em}.preview-badge::before{content:"";width:7px;height:7px;background:var(--orange);border-radius:50%;box-shadow:0 0 0 3px #f4781c22}.preview-controls{display:flex;gap:6px;align-items:center}.tiny-control{height:27px;display:flex;gap:6px;align-items:center;border:1px solid var(--line);background:var(--paper);padding:0 9px;border-radius:7px;font-size:10px;color:var(--muted)}.tiny-control:hover{border-color:var(--gold2);color:var(--ink)}.tiny-control[aria-pressed="true"]{background:var(--selected);border-color:var(--gold2);color:var(--ink)}
.heading{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;margin-bottom:22px;flex-wrap:wrap}.page-kicker{font-size:10px;color:var(--orange-deep);letter-spacing:.16em;text-transform:uppercase;font-weight:700;margin-bottom:5px}.heading h1{font-size:23px;line-height:1.2;letter-spacing:-.055em;color:var(--ink-strong);font-weight:650;margin:0 0 5px}.heading p{font-size:11px;margin:0;color:var(--muted)}.heading-actions{display:flex;gap:8px;align-items:center}
.btn{border:1px solid var(--line2);color:var(--ink);border-radius:8px;min-height:var(--control-h);display:inline-flex;justify-content:center;align-items:center;gap:7px;padding:0 13px;font-size:11px;font-weight:600;white-space:nowrap;box-shadow:0 1px 2px #2b190d0d;background:linear-gradient(180deg,var(--paper),var(--panel2));transition:filter .16s,transform .16s,border-color .16s}.btn:hover{border-color:var(--gold2);filter:brightness(.99)}.btn.primary{background:linear-gradient(125deg,#ffb068,#f4781c 58%,#e66a11);border-color:#ea7c28;color:#382416;box-shadow:inset 0 1px 0 #ffddb7bd,0 7px 14px -9px #ee6a19b9}.btn.primary:hover{transform:translateY(-1px);filter:brightness(1.045)}.btn.quiet{background:transparent;box-shadow:none}.btn.small{min-height:29px;padding:0 9px;font-size:10px}
.hero{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(260px,.85fr);gap:13px;margin-bottom:13px}
.hero-main{min-width:0;position:relative;overflow:hidden;border:1px solid #97734c;border-radius:13px;background:radial-gradient(circle at 93% 20%,#e7893c50,transparent 40%),linear-gradient(118deg,#4f3a29,#3b2a1d 64%,#68462d);color:#fff5e8;min-height:154px;box-shadow:0 18px 35px -28px #312015ae}
.hero-content{position:relative;z-index:1;max-width:63%;padding:20px 22px}.hero-eyebrow{font-size:9px;letter-spacing:.16em;font-weight:750;color:#eaca9c;text-transform:uppercase}.hero-content h2{font-size:19px;line-height:1.28;letter-spacing:-.045em;margin:8px 0 6px;font-weight:600}.hero-content p{font-size:10.5px;color:#e4cfb5;line-height:1.6;margin:0 0 11px}.hero-link{font-size:10px;color:#ffbd7c;font-weight:700;background:none;border:0;padding:0;display:inline-flex;gap:5px;align-items:center}
.hero-art{position:absolute;right:0;top:0;width:45%;height:100%;pointer-events:none}.art-ring{position:absolute;border:1px solid #eacb9750;border-radius:50%;width:176px;height:176px;right:28px;top:-8px}.art-ring:before,.art-ring:after{content:"";position:absolute;border:1px solid #eacb972d;border-radius:50%;inset:20px}.art-ring:after{inset:43px}.art-card{position:absolute;width:155px;height:73px;right:29px;top:43px;border:1px solid #f5d6a86e;border-radius:11px;background:linear-gradient(120deg,#fff8e329,#e7a96e0d);box-shadow:0 11px 25px #291a1435;transform:rotate(-8deg);backdrop-filter:blur(3px);padding:12px}.art-bar{height:6px;background:#f6dcc9a8;border-radius:9px;margin-bottom:9px;width:75%}.art-bar:nth-child(2){width:48%;background:#f7a65d}.art-bar:nth-child(3){width:67%;opacity:.43}
.hero-side{background:linear-gradient(135deg,var(--paper),var(--panel2));border:1px solid var(--line);border-radius:13px;box-shadow:var(--shadow-card);padding:16px 17px;display:flex;flex-direction:column;justify-content:space-between;gap:13px}.hero-side .mini-label{font-size:10px;color:var(--muted)}.hero-side strong{display:block;font-size:13px;letter-spacing:-.02em;margin-top:2px}.mini-progress{display:grid;grid-template-columns:repeat(12,1fr);gap:3px}.mini-progress i{height:15px;background:linear-gradient(180deg,#f8bb82,#ed7c26);border-radius:3px}.mini-progress i:nth-child(9){opacity:.65}.mini-progress i:nth-child(n+10){background:var(--panel3)}.progress-foot{display:flex;justify-content:space-between;color:var(--muted);font-size:10px}.progress-foot b{color:var(--green);font-weight:700}
.kpi-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:22px}.kpi{border:1px solid var(--line);border-radius:12px;padding:14px var(--card-pad);background:linear-gradient(145deg,var(--paper),var(--panel2));box-shadow:var(--shadow-card);min-width:0;position:relative;overflow:hidden;transition:transform .16s,border-color .16s}.kpi:hover{transform:translateY(-2px);border-color:var(--gold2)}.kpi.special{background:linear-gradient(130deg,#f5e6d3,#ffe4c5);border-color:#e9c19a}.kpi.gold{background:linear-gradient(125deg,#fbf5e7,#f1e2c6);border-color:#e6d0ae}:root[data-theme="dark"] .kpi.special{background:linear-gradient(130deg,#62442c,#533521)}:root[data-theme="dark"] .kpi.gold{background:linear-gradient(130deg,#4d3d2a,#403122)}
.kpi-top{display:flex;justify-content:space-between;gap:8px;align-items:center;color:var(--muted);font-size:10px}.kpi-icon{width:27px;height:27px;border:1px solid var(--line);border-radius:8px;display:grid;place-items:center;color:var(--orange-deep);background:#fffaf594}.kpi-value{font-size:26px;font-weight:650;letter-spacing:-.07em;line-height:1.2;margin:9px 0 5px;color:var(--ink-strong);font-variant-numeric:tabular-nums}.kpi-foot{font-size:9.5px;color:var(--muted)}.kpi-foot em{font-style:normal;color:var(--green);font-weight:700}.kpi-foot .alert{color:var(--orange-deep)}.kpi .spark{position:absolute;right:13px;bottom:17px;width:65px;height:29px;opacity:.64}.kpi .spark path{fill:none;stroke:var(--orange);stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.workgrid{display:grid;grid-template-columns:minmax(0,1.74fr) minmax(270px,.73fr);gap:13px;align-items:start}
.surface{background:linear-gradient(155deg,var(--paper),var(--panel));border:1px solid var(--line);box-shadow:var(--shadow-card);border-radius:12px;min-width:0;overflow:hidden}.surface-head{padding:15px 17px 13px;display:flex;justify-content:space-between;align-items:center;gap:12px;border-bottom:1px solid var(--line)}.surface-title{font-size:13px;font-weight:650;letter-spacing:-.02em;color:var(--ink-strong)}.surface-sub{color:var(--quiet);font-size:10px;margin-top:3px}.view-switch{display:flex;background:var(--panel2);padding:3px;gap:3px;border-radius:8px;border:1px solid var(--line)}.view-switch button{display:grid;place-items:center;border:0;background:transparent;color:var(--muted);height:25px;width:28px;border-radius:6px}.view-switch button.active{background:var(--paper);color:var(--orange-deep);box-shadow:0 1px 4px #2d1c120d}.filters{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:12px 16px;background:linear-gradient(180deg,var(--panel),var(--paper));border-bottom:1px solid var(--line)}
.search-field{display:flex;align-items:center;gap:8px;height:var(--control-h);border:1px solid var(--line2);border-radius:8px;padding:0 10px;background:var(--paper);color:var(--muted);min-width:140px;flex:1}.search-field:focus-within{border-color:var(--orange);box-shadow:var(--focus)}.search-field input{width:100%;min-width:0;border:0;background:transparent;outline:0;font-size:10.5px;color:var(--ink)}.search-field input::placeholder{color:var(--quiet)}
.picker{position:relative;min-width:142px}.picker>button{height:var(--control-h);width:100%;display:flex;align-items:center;justify-content:space-between;gap:7px;background:var(--paper);color:var(--ink);border:1px solid var(--line2);border-radius:8px;padding:0 11px;font-size:10.5px}.picker>button:hover,.picker>button[aria-expanded=true]{border-color:var(--gold2)}.picker>button[aria-expanded=true]{box-shadow:var(--focus)}.picker-chevron{width:14px;height:14px}.picker-menu{display:none;position:absolute;top:calc(100% + 6px);left:0;right:0;min-width:195px;z-index:50;background:var(--paper);border:1px solid var(--line2);border-radius:10px;padding:6px;box-shadow:var(--shadow-float)}.picker.open .picker-menu{display:block}.picker-menu .pick-search{width:100%;height:30px;padding:0 9px;border:1px solid var(--line);border-radius:6px;background:var(--panel2);color:var(--ink);font-size:10px;outline:none;margin-bottom:5px}.pick-option{width:100%;display:flex;justify-content:space-between;align-items:center;text-align:left;gap:10px;padding:8px 9px;border:0;background:transparent;border-radius:6px;color:var(--ink);font-size:10.5px}.pick-option:hover,.pick-option:focus-visible{background:var(--hover)}.pick-option[aria-selected=true]{background:var(--selected);color:var(--orange-deep);font-weight:650}.picker select{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}
.filter-count{margin-left:auto;font-size:10px;color:var(--muted)}
.table-wrap{overflow-x:auto;scrollbar-color:var(--line2) transparent}
table{width:100%;border-collapse:collapse;min-width:660px;text-align:left;white-space:nowrap}thead{background:linear-gradient(180deg,var(--panel2),var(--panel))}th{padding:10px 12px;color:var(--muted);font-weight:600;font-size:9px;letter-spacing:.04em;border-bottom:1px solid var(--line)}th:first-child,td:first-child{padding-left:17px}th:last-child,td:last-child{padding-right:14px}th button{font:inherit;border:0;background:none;color:inherit;padding:0;display:inline-flex;gap:5px;align-items:center}th button:hover{color:var(--orange-deep)}td{height:var(--table-row-h);padding:7px 12px;border-bottom:1px solid color-mix(in srgb,var(--line) 57%,transparent);font-size:10.5px;color:var(--muted)}
tbody tr{background:transparent;cursor:pointer;transition:background .13s}tbody tr:nth-child(even){background:color-mix(in srgb,var(--panel2) 34%,var(--paper))}tbody tr:hover{background:var(--hover)}tbody tr.selected{background:var(--selected);box-shadow:inset 3px 0 var(--orange)}tbody tr:focus-visible{outline:2px solid var(--orange);outline-offset:-2px}
.workflow-cell{display:flex;align-items:center;gap:9px}.wf-icon{width:28px;height:28px;flex:none;display:grid;place-items:center;background:linear-gradient(140deg,#fbe0c4,#f4c59b);color:#a3561d;border:1px solid #f2c8a6;border-radius:8px}:root[data-theme="dark"] .wf-icon{background:#65452d;color:#ffb77e;border-color:#745338}.wf-title{display:block;color:var(--ink);font-size:10.5px;font-weight:620}.wf-id{display:block;font-size:9px;color:var(--quiet);margin-top:1px}.pill{display:inline-flex;align-items:center;gap:6px;padding:4px 8px;border-radius:6px;font-size:9px;font-weight:600;border:1px solid transparent}.pill:before{content:"";width:5px;height:5px;border-radius:50%;background:currentColor}.pill.running{color:var(--green);background:var(--green-bg);border-color:color-mix(in srgb,var(--green) 15%,transparent)}.pill.paused{color:var(--warn);background:var(--warn-bg)}.pill.error{color:var(--red);background:var(--red-bg)}.owner-cell{display:flex;align-items:center;gap:6px}.owner-avatar{height:21px;width:21px;display:grid;place-items:center;border-radius:6px;color:#6c4529;background:#ecddc8;font-size:8px;font-weight:700}.owner-avatar.alt{background:#dedee3;color:#53505a}.row-more{border:0;color:var(--muted);background:transparent;width:27px;height:27px;border-radius:7px;display:grid;place-items:center}.row-more:hover{background:var(--panel3);color:var(--ink)}.table-footer{padding:10px 15px;display:flex;align-items:center;justify-content:space-between;gap:10px;color:var(--muted);font-size:10px}.pager{display:flex;gap:5px}.pager button{border:1px solid var(--line);background:var(--paper);color:var(--muted);min-width:27px;height:26px;border-radius:6px}.pager button.active{background:var(--tint);border-color:var(--gold2);color:var(--orange-deep);font-weight:700}
.aside-stack{display:grid;gap:13px}.activity-body{padding:8px 16px 14px}.activity-row{display:flex;gap:10px;align-items:flex-start;padding:12px 0;border-bottom:1px solid var(--line)}.activity-row:last-child{border-bottom:0}.a-dot{width:26px;height:26px;display:grid;place-items:center;background:var(--panel2);border:1px solid var(--line);border-radius:8px;flex:none;color:var(--orange-deep)}.activity-row strong{font-size:10.5px;font-weight:650;color:var(--ink);display:block}.activity-row p{font-size:9.5px;color:var(--muted);line-height:1.6;margin:3px 0 4px}.activity-row time{font-size:9px;color:var(--quiet)}
.component-demo{padding:14px 16px 16px}.micro-label{font-size:9px;text-transform:uppercase;letter-spacing:.13em;color:var(--orange-deep);font-weight:750;margin-bottom:9px}.material-samples{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;margin-bottom:12px}.material-samples div{height:39px;border-radius:7px;border:1px solid var(--line);box-shadow:0 6px 10px -10px #412f2055}.material-samples div:nth-child(1){background:var(--paper)}.material-samples div:nth-child(2){background:var(--panel2)}.material-samples div:nth-child(3){background:linear-gradient(145deg,#593d29,#2b1e15);border-color:#6b4a31}.sample-text{font-size:9.5px;color:var(--muted);line-height:1.75}.demo-controls{display:flex;flex-wrap:wrap;gap:7px;margin-top:12px}
.muted-link{font-size:10px;font-weight:650;color:var(--orange-deep);background:transparent;border:0;padding:0}.muted-link:hover{text-decoration:underline}
.bottom-note{font-size:10px;color:var(--quiet);padding:17px 2px 0;display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap}.bottom-note a{color:var(--orange-deep);text-decoration:underline;text-underline-offset:3px}
.backdrop{display:none;position:fixed;inset:0;background:#21150db0;backdrop-filter:blur(3px);z-index:20}.backdrop.open{display:block}.drawer{position:fixed;top:0;right:0;bottom:0;z-index:21;width:min(490px,100vw);background:var(--paper);box-shadow:var(--shadow-float);transform:translateX(102%);visibility:hidden;transition:transform .21s ease,visibility .21s;display:flex;flex-direction:column}.drawer.open{visibility:visible;transform:none}.drawer-head{padding:19px 21px 16px;border-bottom:1px solid var(--line);background:linear-gradient(145deg,var(--paper),var(--panel2));display:flex;justify-content:space-between;gap:14px}.drawer-head .drawer-kicker{font-size:9px;letter-spacing:.14em;text-transform:uppercase;color:var(--orange-deep);font-weight:700}.drawer-head h2{font-size:17px;letter-spacing:-.04em;margin:5px 0;color:var(--ink-strong)}.drawer-head p{font-size:10px;color:var(--muted);margin:0}.drawer-body{padding:19px 21px;overflow:auto;flex:1}.drawer-section{border:1px solid var(--line);background:var(--panel);border-radius:10px;padding:15px;margin-bottom:15px}.drawer-section-title{font-size:10px;font-weight:700;color:var(--ink);margin-bottom:12px;display:flex;align-items:center;gap:7px}.field{margin-bottom:11px}.field:last-child{margin-bottom:0}.field label{display:block;color:var(--muted);font-size:10px;font-weight:600;margin-bottom:5px}.field input,.field textarea{width:100%;border:1px solid var(--line2);border-radius:7px;background:var(--paper);color:var(--ink);padding:0 10px;height:var(--control-h);outline:0;font-size:11px}.field textarea{padding:10px;min-height:73px;resize:vertical;line-height:1.6}.field input:focus,.field textarea:focus{border-color:var(--orange);box-shadow:var(--focus)}.field-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.hint{font-size:9px;color:var(--quiet);margin-top:4px}.drawer-footer{border-top:1px solid var(--line);background:var(--panel2);padding:14px 21px;display:flex;gap:8px;justify-content:space-between}.form-meta{color:var(--muted);font-size:10px;padding:10px 0}
.modal-backdrop{display:none;position:fixed;inset:0;z-index:30;background:#1c140ec7;backdrop-filter:blur(5px);align-items:center;justify-content:center;padding:20px}.modal-backdrop.open{display:flex}.modal{background:var(--paper);border:1px solid var(--line2);border-radius:13px;box-shadow:var(--shadow-float);width:min(405px,100%);overflow:hidden}.modal-top{padding:22px 22px 15px}.modal-symbol{width:37px;height:37px;border-radius:10px;background:var(--warn-bg);color:var(--warn);display:grid;place-items:center;margin-bottom:11px}.modal h3{font-size:15px;letter-spacing:-.03em;margin:0 0 6px;color:var(--ink-strong)}.modal p{font-size:11px;color:var(--muted);line-height:1.75;margin:0}.modal-actions{padding:13px 22px;background:var(--panel2);border-top:1px solid var(--line);display:flex;justify-content:flex-end;gap:8px}.toast{position:fixed;bottom:22px;right:24px;z-index:55;max-width:min(390px,calc(100vw - 40px));min-width:240px;background:linear-gradient(145deg,#483323,#302217);color:#fff7e9;border:1px solid #d9bd835c;border-radius:10px;padding:12px 15px;box-shadow:var(--shadow-float);font-size:11px;display:none;gap:10px;align-items:center}.toast.show{display:flex}.toast .i{color:#ffb46b}
.empty{padding:38px;text-align:center;font-size:12px;color:var(--muted)}.empty .i{width:25px;height:25px;margin-bottom:10px}
@media(max-width:1260px){.hero{grid-template-columns:1fr 290px}.workgrid{grid-template-columns:minmax(0,1.5fr) minmax(255px,.8fr)}.top-search{min-width:150px}}
@media(max-width:1080px){.app{grid-template-columns:70px minmax(0,1fr)}.sidebar{align-items:center;padding:18px 9px}.logo{padding:0}.logo>div:last-child,.section-label,.side-link span,.side-link .side-tail,.side-foot>div:last-child{display:none}.side-link{width:45px;justify-content:center;padding:0}.side-spacer{min-height:50px}.side-foot{padding:12px 0}.hero{grid-template-columns:1.5fr 1fr}}
@media(max-width:920px){.workgrid{grid-template-columns:minmax(0,1fr)}.aside-stack{grid-template-columns:repeat(2,minmax(0,1fr))}.top-search{display:none}}
@media(max-width:690px){.app{display:block}.sidebar{height:54px;position:relative;flex-direction:row;padding:8px 13px;align-items:center;gap:10px}.logo{margin:0}.logo-mark{height:32px;width:32px}.side-nav{display:flex;gap:2px}.side-link{height:37px;width:37px;min-height:37px}.side-foot,.sidebar .side-spacer{display:none}.topbar{height:48px;padding:0 14px}.content{padding:17px 14px 40px}.heading h1{font-size:20px}.heading{margin-bottom:15px}.hero{grid-template-columns:minmax(0,1fr)}.hero-main{min-height:142px}.hero-side{min-height:105px}.hero-content{max-width:80%}.kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.aside-stack{grid-template-columns:1fr}.filters{padding:11px}.surface-head{padding:13px}.preview-bar{margin-bottom:14px}.preview-controls{width:100%}.top-actions{gap:5px}.crumb{font-size:10px}}
@media(max-width:420px){.heading-actions{width:100%}.heading-actions .btn{flex:1}.hero-content{max-width:94%}.hero-art{opacity:.4}.kpi-value{font-size:22px}.kpi{padding:11px}.picker{min-width:122px}.drawer-footer{flex-wrap:wrap}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition:none!important}}

.d-panel-head .d-panel-spark{color:var(--orange-deep)}
/* V3.1 — Emersion layered desktop & taskbar */
html{scroll-padding-top:75px}body{padding-bottom:70px}
.content{max-width:1590px;padding-bottom:100px}
.d-top{margin:12px 0 17px;display:flex;justify-content:space-between;align-items:center;gap:14px;flex-wrap:wrap}
.d-kicker{color:var(--orange-deep);font-size:10px;letter-spacing:.13em;font-weight:750;text-transform:uppercase}
.d-hero{display:grid;grid-template-columns:1fr auto;gap:16px;align-items:center;overflow:hidden;border-radius:14px;padding:24px 26px;background:radial-gradient(ellipse at 87% 5%,#f59a4963,transparent 48%),linear-gradient(115deg,#4e3928,#2c2119);border:1px solid #926d4b;color:#f9eddf;box-shadow:0 18px 45px -30px #2b1b11b8}
.d-hero h1{font-weight:650;font-size:24px;letter-spacing:-.05em;margin:7px 0}.d-hero p{color:#e6d1bd;font-size:10.5px;line-height:1.8;margin:0;max-width:665px}.d-hero .d-kicker{color:#dfb77e}
.d-hero-emblem{width:130px;height:96px;position:relative;flex:none}.d-hero-emblem span{position:absolute;width:97px;height:65px;border:1px solid #edcfa4a9;border-radius:9px;background:linear-gradient(140deg,#ffd9aa70,#d77e3230);box-shadow:0 13px 30px #24171166;transform:rotate(-11deg);right:20px;top:10px}
.d-hero-emblem span:nth-child(2){transform:rotate(7deg);right:-10px;top:32px;background:linear-gradient(140deg,#fff6e968,#a86a303a)}
.d-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:11px;margin:14px 0 18px}.d-stat{border:1px solid var(--line);border-radius:11px;background:linear-gradient(145deg,var(--paper),var(--panel2));padding:14px 17px;box-shadow:var(--shadow-card)}.d-stat.highlight{border-color:#e7bd8b;background:linear-gradient(135deg,#fae9d6,#fbe2c2)}:root[data-theme=dark] .d-stat.highlight{background:linear-gradient(135deg,#5a3e29,#493327)}
.d-stat span{display:block;font-size:10px;color:var(--muted)}.d-stat strong{display:block;font-size:23px;letter-spacing:-.06em;line-height:1.5;font-weight:700;color:var(--ink-strong)}.d-stat em{font-size:9px;font-style:normal;color:var(--green)}
.d-layout{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(260px,.68fr);gap:13px;align-items:start}
.d-panel{min-width:0;border:1px solid var(--line);background:linear-gradient(150deg,var(--paper),var(--panel));border-radius:12px;box-shadow:var(--shadow-card);overflow:hidden}
.d-panel-head{padding:15px 17px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:12px}
.d-panel-head h2{margin:0;font-size:13px;color:var(--ink-strong);letter-spacing:-.015em}.d-panel-head p{margin:3px 0 0;color:var(--muted);font-size:9.5px}
.d-actions{display:flex;gap:7px;align-items:center;flex-wrap:wrap}
.d-filter{display:flex;gap:9px;align-items:center;flex-wrap:wrap;padding:11px 14px;background:var(--panel2);border-bottom:1px solid var(--line)}
.d-search{display:flex;align-items:center;gap:8px;flex:1;min-width:165px;border:1px solid var(--line2);height:var(--control-h);border-radius:8px;padding:0 9px;background:var(--paper);color:var(--muted)}.d-search:focus-within{box-shadow:var(--focus);border-color:var(--orange)}.d-search .i{width:14px;height:14px}
.d-search input{outline:0;border:0;background:transparent;width:100%;color:var(--ink);font-size:10.5px}.d-filter select{border:1px solid var(--line2);background:var(--paper);border-radius:8px;height:var(--control-h);font:inherit;font-size:10px;color:var(--ink);padding:0 9px}
.d-table-outer{overflow-x:auto}.d-table{width:100%;border-collapse:collapse;min-width:600px;text-align:left}.d-table th{font-size:9px;color:var(--muted);font-weight:650;background:var(--panel2);padding:9px 12px;border-bottom:1px solid var(--line)}.d-table td{height:var(--table-row-h);border-bottom:1px solid color-mix(in srgb,var(--line) 65%,transparent);font-size:10px;padding:7px 12px;color:var(--muted)}.d-table th:first-child,.d-table td:first-child{padding-left:17px}.d-table tr:nth-child(even){background:color-mix(in srgb,var(--panel2) 32%,transparent)}.d-table tbody tr:hover{background:var(--hover)}.d-table tbody tr[data-active=true]{box-shadow:inset 3px 0 var(--orange);background:var(--selected)}.d-table .d-name{display:flex;align-items:center;gap:10px;font-weight:650;color:var(--ink);font-size:10.5px}.d-table .d-name-icon{width:27px;height:27px;border-radius:8px;display:grid;place-items:center;background:linear-gradient(145deg,#fbe5cc,#f4bb89);border:1px solid #efc599;color:#a85513;flex:none}:root[data-theme=dark] .d-table .d-name-icon{background:#5c3f2b;border-color:#75513b;color:#f6ae69}
.d-pill{display:inline-flex;align-items:center;gap:6px;border-radius:6px;padding:4px 8px;font-size:9px;font-weight:650}.d-pill:before{content:"";width:5px;height:5px;border-radius:50%;background:currentColor}.d-pill.good{color:var(--green);background:var(--green-bg)}.d-pill.attention{color:var(--warn);background:var(--warn-bg)}.d-pill.bad{color:var(--red);background:var(--red-bg)}
.d-table-foot{display:flex;justify-content:space-between;gap:10px;padding:10px 15px;font-size:10px;color:var(--muted)}
.d-mini-list{padding:9px 13px}.d-mini{width:100%;border:1px solid transparent;background:transparent;border-radius:9px;display:flex;align-items:center;gap:10px;padding:11px;min-height:54px;text-align:left;color:var(--ink)}.d-mini:hover{background:var(--hover);border-color:var(--line)}.d-mini-icon{width:34px;height:34px;border-radius:9px;display:grid;place-items:center;border:1px solid var(--line);background:linear-gradient(145deg,var(--paper),var(--panel2));color:var(--orange-deep);flex:none}
.d-mini strong{display:block;font-size:10.5px}.d-mini span{display:block;font-size:9px;color:var(--muted);margin-top:3px}.d-hint{padding:14px 15px;border-top:1px solid var(--line);background:var(--panel2);font-size:9.5px;line-height:1.8;color:var(--muted)}.d-hint strong{color:var(--ink)}
.d-lower{display:grid;grid-template-columns:1fr 1fr;gap:13px;margin-top:13px}.d-story{padding:12px 15px}.d-story-line{display:flex;align-items:flex-start;gap:10px;padding:10px 0;border-bottom:1px solid var(--line)}.d-story-line:last-child{border:0}.d-story-line .icon{display:grid;place-items:center;width:25px;height:25px;border-radius:7px;background:var(--tint);color:var(--orange-deep);flex:none}.d-story-line strong{font-size:10px;color:var(--ink);display:block}.d-story-line span{font-size:9px;color:var(--muted);display:block;margin-top:3px}
.d-rule{font-size:9.5px;line-height:1.75;color:var(--muted);margin:0 0 9px}.d-rule b{color:var(--ink)}
/* Taskbar */
.d-taskbar{position:fixed;bottom:0;left:0;right:0;z-index:230;height:62px;display:flex;align-items:center;gap:9px;padding:8px 14px 8px 12px;color:#f8e9d8;background:linear-gradient(115deg,#3f2d20,#2b2018 70%,#4c3222);border-top:1px solid #c49d6677;box-shadow:0 -10px 35px -18px #1d130dbf;backdrop-filter:blur(13px)}
.d-task-brand{display:flex;align-items:center;gap:9px;border:1px solid #ffffff24;border-radius:9px;background:#ffffff0b;padding:0 10px 0 6px;height:43px;flex:none;color:#fff6e8;font-size:10px;font-weight:700}.d-task-brand .mark{width:29px;height:29px;border-radius:8px;display:grid;place-items:center;background:linear-gradient(135deg,#ffb772,#ec7722);color:#332011;font-size:21px;letter-spacing:-.065em}.d-task-brand:hover{background:#ffffff20}
.d-task-sep{height:27px;width:1px;background:#ffffff33;flex:none}
.d-task-list{display:flex;gap:6px;align-items:center;flex:1;min-width:0;overflow-x:auto;scrollbar-width:thin;scrollbar-color:#d9bd8366 transparent;height:100%}
.d-task{position:relative;min-width:115px;max-width:185px;flex:0 1 165px;height:42px;border:1px solid #e9cfa12a;border-radius:8px;background:#ffffff0c;display:flex;align-items:center;gap:8px;padding:0 11px;color:#e8d7c2;text-align:left;font:inherit;font-size:10px;transition:background .15s,border-color .15s}
.d-task:hover{background:#ffffff20;border-color:#edce9466}.d-task.active{background:linear-gradient(140deg,#d19a5b3b,#f4bd7a13);color:#fff7ed;border-color:#d9bd8377}.d-task.active:after{content:"";position:absolute;bottom:0;left:11px;right:11px;height:2px;background:var(--orange);border-radius:4px}
.d-task.minimized{opacity:.67}.d-task .i{width:15px;height:15px;color:#efb57d}
.d-task-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}
.d-task-dot{width:6px;height:6px;background:#ee9b55;border-radius:50%;flex:none}
.d-task-count{background:#ffffff1a;border:1px solid #ffffff29;border-radius:7px;padding:5px 7px}
.d-task-guide{font-size:9px;color:#bfa68b;margin-top:3px}
.d-task-trigger{width:37px;height:37px;border:1px solid #ffffff34;background:#ffffff0d;border-radius:8px;color:#eed9bd;display:grid;place-items:center;flex:none}.d-task-trigger:hover{background:#ffffff20}
.d-task-menu{position:absolute;bottom:68px;left:13px;min-width:244px;border:1px solid var(--line2);background:var(--paper);color:var(--ink);border-radius:11px;padding:8px;box-shadow:var(--shadow-float);display:none}.d-task-menu.open{display:block}
.d-task-menu strong{display:block;padding:7px 10px 9px;font-size:10.5px}.d-task-menu button{border:0;width:100%;padding:9px 10px;text-align:left;border-radius:7px;background:transparent;color:var(--ink);font-size:10px}.d-task-menu button:hover{background:var(--hover)}
/* Nonmodal managed windows */
.d-window-area{position:fixed;inset:0 0 62px 0;z-index:30;pointer-events:none}
.d-win{position:absolute;display:flex;flex-direction:column;width:690px;height:480px;min-width:340px;min-height:270px;max-width:calc(100vw - 12px);max-height:calc(100vh - 76px);border:1px solid var(--line2);border-radius:12px;background:var(--paper);box-shadow:0 25px 75px -22px #21130fc7,0 3px 12px #20110c52;pointer-events:auto;resize:both;overflow:hidden;isolation:isolate;transition:box-shadow .12s,border-color .12s}
.d-win.active{border-color:#d4a777;box-shadow:0 28px 75px -17px #1f130ed9,0 0 0 1px #d9bd8340}
.d-win.minimized{display:none}
/* OS-style maximization: fill the actual Window Manager work area, whose
   fixed bounds already exclude Taskbar. No ornamental desktop gutter, rounded
   frame or floating shadow in maximized mode; keep titlebar and window actions.
   Restoring the window uses the original bounds from toggleMax(), unchanged. */
.d-window-area>.d-win.maximized{
 left:0!important;top:0!important;
 width:100%!important;height:100%!important;
 min-width:0!important;min-height:0!important;
 max-width:none!important;max-height:none!important;
 border:0!important;border-radius:0!important;box-shadow:none!important;
 transition:none!important;resize:none!important;
}
.d-win-titlebar{height:49px;display:flex;align-items:center;gap:9px;padding:0 9px 0 14px;flex:none;border-bottom:1px solid var(--line);background:linear-gradient(112deg,var(--panel2),var(--paper) 70%);cursor:grab;user-select:none;touch-action:none}.d-win-titlebar:active{cursor:grabbing}
.d-win-badge{height:29px;width:29px;border-radius:8px;background:linear-gradient(135deg,#ffe0b9,#f2b579);display:grid;place-items:center;color:#a34d18;border:1px solid #edbc89;flex:none}:root[data-theme=dark] .d-win-badge{background:#654329;color:#f9ab70;border-color:#8b6349}
.d-win-title{min-width:0;flex:1}.d-win-title strong{display:block;font-size:10.5px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--ink-strong)}.d-win-title small{display:block;font-size:8.5px;color:var(--muted);margin-top:1px}
.d-win-chrome{display:flex;gap:3px;align-items:center}.d-win-control{height:28px;width:30px;display:grid;place-items:center;background:transparent;border:1px solid transparent;color:var(--muted);border-radius:6px}.d-win-control .i{width:15px;height:15px}
.d-win-control:hover{background:var(--hover);color:var(--ink);border-color:var(--line)}.d-win-control.close:hover{background:var(--red-bg);color:var(--red)}
.d-win-body{flex:1;min-height:0;overflow:auto;display:flex;flex-direction:column}.d-win-bottom{display:flex;justify-content:space-between;gap:8px;align-items:center;padding:10px 15px;border-top:1px solid var(--line);background:var(--panel2);flex:none}.d-win-bottom .msg{font-size:9px;color:var(--muted)}.d-win-bottom .actions{display:flex;gap:8px}
.d-win-content{padding:18px 19px;flex:1}.d-w-h{font-size:12px;font-weight:700;margin:0 0 13px;color:var(--ink-strong)}.d-w-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.d-w-field{display:flex;flex-direction:column;gap:5px;min-width:0}.d-w-field.wide{grid-column:1/-1}.d-w-field label{font-size:9.5px;font-weight:650;color:var(--muted)}.d-w-field input,.d-w-field textarea,.d-w-field select{background:var(--paper);color:var(--ink);font:inherit;font-size:10.5px;border:1px solid var(--line2);border-radius:8px;padding:0 11px;height:var(--control-h);min-width:0;width:100%;outline:0}
.d-w-field textarea{min-height:92px;resize:vertical;padding:10px;line-height:1.7}.d-w-field input:focus,.d-w-field textarea:focus{box-shadow:var(--focus);border-color:var(--orange)}
.d-w-muted{color:var(--muted);font-size:10px;line-height:1.8}.d-w-kicker{font-size:9px;color:var(--orange-deep);text-transform:uppercase;letter-spacing:.13em;font-weight:750}
.d-w-section{border:1px solid var(--line);border-radius:9px;background:linear-gradient(140deg,var(--panel),var(--panel2));padding:12px 13px;margin-bottom:13px}
.d-w-section h4{font-size:11px;color:var(--ink);margin:0 0 7px}
.d-w-chips{display:flex;gap:6px;flex-wrap:wrap}.d-w-chips .chip{font-size:9px;background:var(--tint);border:1px solid var(--line);border-radius:6px;padding:5px 8px;color:var(--orange-deep)}
.d-flow-window .d-win-content{padding:0;display:flex;flex:1;min-height:0}.d-flow-tools{width:164px;flex:none;border-right:1px solid var(--line);background:linear-gradient(var(--panel2),var(--panel));padding:13px}.d-flow-tools strong{font-size:10px;display:block;margin-bottom:10px}.d-flow-node-option{border:1px solid var(--line);width:100%;background:var(--paper);color:var(--ink);border-radius:8px;display:flex;align-items:center;gap:8px;padding:10px;margin-bottom:8px;text-align:left;font-size:10px}.d-flow-node-option:hover{border-color:var(--orange);background:var(--selected)}
.d-flow-canvas{flex:1;min-width:0;overflow:auto;display:flex;align-items:center;justify-content:center;position:relative;background-color:var(--panel);background-image:radial-gradient(color-mix(in srgb,var(--muted) 22%,transparent) .8px,transparent .8px);background-size:18px 18px;padding:25px}
.d-flow-pipe{display:flex;align-items:center;gap:13px;min-width:max-content}.d-flow-node{width:136px;min-height:107px;background:linear-gradient(145deg,var(--paper),var(--panel2));border:1px solid var(--line2);border-radius:10px;box-shadow:var(--shadow-card);padding:12px}.d-flow-node .d-w-kicker{margin-bottom:8px}.d-flow-node strong{font-size:10.5px;color:var(--ink);display:block}.d-flow-node small{color:var(--muted);font-size:9px;line-height:1.6;display:block;margin-top:5px}.d-flow-join{color:var(--gold2);width:23px;height:1px;background:var(--gold2);position:relative;flex:none}.d-flow-join:after{content:"";position:absolute;right:0;top:-3px;width:7px;height:7px;border-right:1px solid var(--gold2);border-top:1px solid var(--gold2);transform:rotate(45deg)}
.d-flow-inspector{width:160px;flex:none;border-left:1px solid var(--line);padding:13px;background:var(--paper)}.d-flow-inspector strong{font-size:10px;color:var(--ink)}.d-flow-inspector p{font-size:9px;line-height:1.7;color:var(--muted)}
.d-w-status{display:inline-flex;align-items:center;gap:6px;background:var(--green-bg);color:var(--green);border-radius:6px;padding:5px 9px;font-size:9px;font-weight:700}
.d-window-meta{font-size:9px;color:var(--quiet);margin-top:10px;display:block}
.d-win.resize-locked{resize:none}
.d-dialog-layer{position:fixed;inset:0;display:none;align-items:center;justify-content:center;padding:18px;background:#1a100bc0;backdrop-filter:blur(4px);z-index:270}.d-dialog-layer.open{display:flex}
.d-dialog{width:min(410px,100%);border:1px solid var(--line2);background:var(--paper);border-radius:12px;overflow:hidden;box-shadow:var(--shadow-float)}.d-dialog-head{display:flex;align-items:center;gap:10px;padding:17px 19px;background:linear-gradient(105deg,var(--warn-bg),var(--panel2));border-bottom:1px solid var(--line)}.d-dialog-head .mark{display:grid;place-items:center;width:35px;height:35px;background:var(--paper);border:1px solid var(--line);border-radius:9px;color:var(--warn)}
.d-dialog-head h3{font-size:13px;color:var(--ink);margin:0}.d-dialog-head small{color:var(--muted);font-size:9px}.d-dialog-content{padding:17px 19px;color:var(--muted);font-size:10.5px;line-height:1.8}
.d-dialog-foot{border-top:1px solid var(--line);background:var(--panel2);padding:12px 19px;display:flex;gap:8px;justify-content:flex-end}
.d-toast{position:fixed;z-index:300;right:22px;bottom:77px;display:none;gap:10px;align-items:center;padding:12px 16px;border:1px solid var(--line);border-left:4px solid var(--green);border-radius:9px;background:linear-gradient(120deg,var(--green-bg),var(--paper));color:var(--ink);box-shadow:var(--shadow-float);font-size:10px}.d-toast.show{display:flex}
.d-desktop-footer{display:flex;justify-content:space-between;gap:12px;margin-top:19px;color:var(--muted);font-size:9px}.d-desktop-footer a{color:var(--orange-deep);text-decoration:underline}
@media(max-width:1120px){.d-layout{grid-template-columns:1fr}.d-flow-inspector{display:none}}
@media(max-width:720px){body{padding-bottom:65px}.d-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.d-hero-emblem{display:none}.d-hero{padding:20px}.d-lower{grid-template-columns:1fr}.d-taskbar{padding:7px 8px;height:57px;gap:6px}.d-task-brand{padding:0 5px;border:none;background:transparent}.d-task-brand .label{display:none}.d-task-brand .mark{width:32px;height:32px}.d-task-right,.d-task-sep{display:none}.d-task{min-width:100px;max-width:155px;flex:0 0 115px;height:40px;padding:0 8px}.d-window-area{bottom:57px}.d-win,.d-win.maximized{left:0!important;top:0!important;width:100vw!important;height:calc(100vh - 57px)!important;max-width:none!important;max-height:none!important;border-radius:0!important;resize:none!important;min-width:0!important;min-height:0!important}.d-win:not(.active){display:none}.d-flow-tools{width:118px;padding:10px}.d-flow-inspector{display:none}.d-w-grid{grid-template-columns:1fr}.d-w-field.wide{grid-column:auto}}
@media(prefers-reduced-motion:reduce){.d-win{transition:none!important}}

@media(max-width:720px){
 .topbar{min-width:0;gap:7px}
 .topbar .crumb{min-width:0;max-width:calc(100vw - 155px);overflow:hidden;gap:5px}
 .topbar .crumb > span:not(:first-child), .topbar .crumb > svg{display:none}
 .topbar .crumb b{overflow:hidden;text-overflow:ellipsis}
 .topbar .top-actions{flex:none}
}

/* V3.2 — fixed Flow canvas origin, responsive taskbar and polished launcher */
.d-flow-canvas{justify-content:flex-start;overflow-x:auto;overflow-y:auto;scrollbar-gutter:stable;overscroll-behavior:contain;min-width:0;min-height:0}
.d-flow-pipe{width:max-content;min-width:max-content;flex:none;justify-content:flex-start;margin-left:auto;margin-right:auto}
.d-flow-node{flex:none}
.d-win .d-win-titlebar{cursor:grab}
.d-taskbar{gap:7px}
.d-task-list{scroll-behavior:smooth;overscroll-behavior-x:contain;scrollbar-width:thin}
.d-task{flex:0 0 150px;min-width:118px;max-width:168px;justify-content:flex-start}
.d-task-scroll{display:grid;place-items:center;flex:none;width:26px;height:36px;border:1px solid #f1d7b03b;border-radius:7px;background:#fff8eb0d;color:#f3d9bb}
.d-task-scroll .i{height:15px;width:15px}
.d-task-scroll:hover{background:#ffffff23;border-color:#d9bd8377}
.d-task-scroll:disabled{opacity:.23;cursor:default}
.d-task-scroll:disabled:hover{background:#fff8eb0d;border-color:#f1d7b03b}
.d-task-overflow{height:37px;min-width:37px;display:flex;align-items:center;justify-content:center;gap:4px;flex:none;border-radius:8px;border:1px solid #d9bd8370;background:linear-gradient(140deg,#f4781c23,#f0b76a20);color:#ffe9ce;font-size:10px;font-weight:650}
.d-task-overflow:hover{background:#f4781c36}
.d-task-overflow .i{width:15px;height:15px}
.d-taskbar .d-task-count{border:0;background:transparent;padding:3px;color:#d9c0a0}
.d-task-brand{background:linear-gradient(130deg,#ffe3b118,#fff9e905);border-color:#e2b77a4d}
.d-task-brand:hover{background:#f4bf7b2f}
.d-task-brand .mark{box-shadow:0 3px 13px #eb7d293f}
.d-task-popover{position:absolute;bottom:calc(100% + 8px);left:12px;width:min(345px,calc(100vw - 24px));max-height:min(540px,75vh);overflow:hidden;display:none;flex-direction:column;border:1px solid var(--line2);border-radius:14px;background:var(--paper);color:var(--ink);box-shadow:0 22px 65px -15px #1c130ee0;z-index:260}
.d-task-popover.open{display:flex}
.d-task-popover-head{flex:none;display:flex;align-items:center;gap:12px;padding:16px 17px 14px;background:radial-gradient(circle at 95% 1%,#f0a25038,transparent 56%),linear-gradient(130deg,#4b3524,#302116);color:#fff3e5;border-bottom:1px solid #d9bd836e}
.d-task-popover-brand{width:36px;height:36px;display:grid;place-items:center;border-radius:10px;background:linear-gradient(135deg,#ffbd78,#ed7c26);font-size:24px;font-weight:700;letter-spacing:-.065em;color:#3d2718;box-shadow:0 7px 16px #b45c2055}
.d-task-popover-head strong{display:block;font-size:12px;letter-spacing:-.015em}
.d-task-popover-head small{display:block;font-size:9.5px;color:#dcc3a3;margin-top:2px}
.d-task-popover-head .d-menu-close{margin-left:auto;border:1px solid #ffffff35;background:#ffffff16;color:#fff3e3;display:grid;place-items:center;width:29px;height:29px;border-radius:8px;font-size:18px}
.d-task-popover-body{padding:11px;overflow:auto;scrollbar-color:var(--line2) transparent}
.d-task-group{font-size:9px;text-transform:uppercase;letter-spacing:.12em;color:var(--orange-deep);padding:8px 8px 6px;font-weight:750}
.d-task-popover-foot{flex:none;padding:11px 13px;border-top:1px solid var(--line);background:linear-gradient(140deg,var(--panel2),var(--paper));display:flex;align-items:center;justify-content:space-between;gap:8px;color:var(--muted);font-size:9px}
.d-menu-empty{font-size:10.5px;color:var(--muted);padding:12px}
.d-taskbar [hidden]{display:none!important}
@media(max-width:1000px){
.d-task-brand .label{display:none}
.d-task-brand{padding:0 5px}
}
@media(max-width:720px){
.d-taskbar{gap:6px}
.d-task{flex:0 0 42px!important;min-width:42px!important;max-width:42px!important;height:39px;justify-content:center;padding:0}
.d-task .d-task-label{display:none}
.d-task .i{height:19px;width:19px}
.d-task-scroll{width:24px;height:34px}
.d-task-overflow{height:35px;width:35px;min-width:35px}
.d-task-popover{left:7px;bottom:calc(100% + 4px);width:min(345px,calc(100vw - 14px))}
.d-task-popover-head{padding:14px 15px}
.d-flow-tools{width:112px}
}

/* V3.2 owner correction — icon-only Start, geometrically centered mark. */
.d-task-brand{width:44px;min-width:44px;max-width:44px;height:43px;padding:0!important;display:grid;place-items:center;flex:none;gap:0}
.d-task-brand .mark{width:32px;height:32px;display:grid;place-items:center;margin:0;padding:0;line-height:1;flex:none}
.d-task-brand .mark-glyph{display:block;font-size:22px;line-height:1;font-weight:700;letter-spacing:-.065em;transform:translate(-1px,-1px)}
.d-task-scroll.prev .i{transform:rotate(90deg)}
.d-task-scroll.next .i{transform:rotate(-90deg)}
.d-taskbar .d-task-brand:focus-visible{outline:2px solid #ffbb82;outline-offset:2px}
@media(max-width:720px){.d-task-brand{width:42px;min-width:42px;max-width:42px;height:41px;padding:0!important}}
/* Public <afw-menu-item> visual contract. Internal m-* markup belongs to this package. */
.d-menu-action{display:flex!important;align-items:center;gap:10px;text-align:left;width:100%;padding:9px!important;min-height:48px!important;background:transparent;border:1px solid transparent!important;border-radius:9px!important;color:var(--ink)}
.d-menu-action:hover{background:var(--hover);border-color:var(--line)!important}
.d-menu-action .m-icon{display:grid;place-items:center;width:32px;height:32px;border:1px solid var(--line);border-radius:9px;background:linear-gradient(145deg,var(--paper),var(--panel2));color:var(--orange-deep);flex:none}
.d-menu-action .m-icon .i{width:16px;height:16px}
.d-menu-action .m-text{display:block;min-width:0}
.d-menu-action .m-text strong{display:block;font-size:10.5px;color:var(--ink);font-weight:650}
.d-menu-action .m-text small{display:block;font-size:9px;color:var(--muted);margin-top:2px}
.d-menu-action .m-meta{margin-left:auto;font-size:9px;color:var(--muted);font-weight:600;flex:none}
/* AFW v0.11 — Desktop Mission Control, live readonly DOM mirrors. */
.d-win.afw-inactive-desktop{display:none!important}
.afw-desktop-switcher{display:flex;align-items:center;justify-content:center;flex:none;position:relative}
.afw-ds-launch{display:flex;align-items:center;justify-content:center;gap:4px;flex:none;width:53px;height:39px;padding:0 5px;border:1px solid #e5ab6c85;border-radius:9px;background:linear-gradient(145deg,#f4781c38,#d9bd8323);color:#fff0df;font:inherit;cursor:pointer}
.afw-ds-launch:hover,.afw-ds-launch[aria-expanded=true]{background:linear-gradient(145deg,#f4781c6b,#eab97e30);border-color:#f7bc7e}
.afw-ds-launch-symbol{display:grid;place-items:center;width:24px;height:27px;border-radius:6px}
.afw-ds-launch-symbol .i{width:20px;height:20px}
.afw-ds-launch-count{display:grid;place-items:center;border:1px solid #f4c59665;border-radius:5px;min-width:17px;height:20px;font-size:10px;font-weight:800;color:#ffcb92;background:#fff5e710}
.afw-desktop-switcher button:focus-visible{outline:2px solid #f4a75d;outline-offset:2px}
.afw-mission-layer{position:fixed;inset:0;z-index:400;pointer-events:none}
.afw-mission-layer[hidden]{display:none!important}
.afw-mission-backdrop{position:fixed;inset:0;display:block;border:0;background:#1c110dbd;backdrop-filter:blur(5px);pointer-events:auto;cursor:default}
.afw-mission-window{position:fixed;right:50%;bottom:76px;transform:translateX(50%);width:min(1130px,calc(100vw - 40px));max-height:min(790px,calc(100vh - 100px));display:flex;flex-direction:column;overflow:hidden;pointer-events:auto;border:1px solid var(--gold2);border-radius:17px;background:var(--paper);color:var(--ink);box-shadow:0 40px 120px #170b08cd}
.afw-mission-header{display:flex;align-items:center;justify-content:space-between;gap:20px;flex:none;padding:20px 24px;background:radial-gradient(circle at 86% 0,#f5a0594b,transparent 45%),linear-gradient(125deg,#4a3424,#2c2018);color:#fff6e9;border-bottom:1px solid #ac855d}
.afw-mission-heading{display:flex;align-items:center;gap:13px;min-width:0}
.afw-mission-logo{display:grid;place-items:center;flex:none;width:47px;height:47px;border-radius:12px;background:linear-gradient(145deg,#fac58e,#ee7d29);color:#4a2e1a;box-shadow:0 6px 16px #180c0655}
.afw-mission-logo .i{width:24px;height:24px}
.afw-mission-kicker{font-size:9px;letter-spacing:.13em;font-weight:800;color:#ffbf80}
.afw-mission-heading h2{font-size:20px;margin:3px 0 4px;line-height:1.2;letter-spacing:-.03em;color:#fff7ed}
.afw-mission-heading p{margin:0;font-size:10px;color:#ddc8af}
.afw-mission-header-actions{display:flex;gap:10px;align-items:center;flex:none}
.afw-mission-total{border:1px solid #dcc29660;background:#fff7e60e;border-radius:99px;padding:6px 11px;font-size:10px;white-space:nowrap}
.afw-mission-add-top{display:flex;align-items:center;gap:8px;min-height:36px;padding:0 13px;border-radius:8px;background:linear-gradient(145deg,#ffc187,#ed7b28);border:1px solid #ffc289;color:#342012;font:inherit;font-size:11px;font-weight:750;white-space:nowrap;cursor:pointer}
.afw-mission-add-top:hover{filter:brightness(1.07)}
.afw-mission-plus{font-size:21px;font-weight:400;line-height:1}
.afw-mission-add-top:disabled{opacity:.45;cursor:not-allowed}
.afw-mission-close{width:36px;height:36px;display:grid;place-items:center;border:1px solid #ffffff4a;border-radius:8px;background:#ffffff1c;color:#fff4e3;font:inherit;font-size:21px;cursor:pointer}
.afw-mission-close:hover{background:#fff3e72b}
.afw-mission-content{min-height:0;overflow:auto;padding:20px 24px 15px;scrollbar-width:thin}
.afw-mission-section-heading{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:13px}
.afw-mission-section-heading strong{font-size:12px;color:var(--ink)}
.afw-mission-section-heading span{font-size:10px;color:var(--muted)}
.afw-mission-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:17px}
.afw-ds-card-container{position:relative;min-width:0;background:var(--panel);border:1px solid var(--line2);border-radius:14px;overflow:hidden;box-shadow:0 3px 14px #37261a12;transition:border-color .16s,transform .16s}
.afw-ds-card-container:hover{transform:translateY(-2px);border-color:var(--gold2);box-shadow:0 10px 24px #30201426}
.afw-ds-card-container.selected{border:2px solid var(--orange);box-shadow:0 0 0 3px #f4781c1a}
.afw-desktop-tab{display:flex;flex-direction:column;gap:0;width:100%;min-width:0;background:transparent;border:0;border-radius:14px;text-align:left;color:var(--ink);padding:0;font:inherit;cursor:pointer}
.afw-ds-card-head{display:flex;align-items:center;gap:8px;height:43px;padding:0 92px 0 12px;min-width:0}
.afw-ds-card-number{display:grid;place-items:center;flex:none;width:24px;height:24px;border:1px solid var(--line2);border-radius:7px;background:var(--paper);font-size:10px;font-weight:800}
.afw-ds-card-container.selected .afw-ds-card-number{background:var(--orange);border-color:var(--orange);color:#382211}
.afw-desktop-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px;font-weight:800}
.afw-ds-card-state{font-size:9px;font-weight:800;color:var(--muted);white-space:nowrap}
.afw-ds-card-container.selected .afw-ds-card-state{color:var(--orange-deep)}
.afw-ds-card-actions{position:absolute;top:8px;right:10px;display:flex;align-items:center;gap:5px;z-index:2}
.afw-ds-card-edit,.afw-ds-card-delete{display:grid;place-items:center;width:29px;height:28px;border-radius:7px;background:var(--paper);border:1px solid var(--line2);color:var(--orange-deep);font:inherit;cursor:pointer;transition:background .14s,border-color .14s}
.afw-ds-card-edit .i,.afw-ds-card-delete .i{width:15px;height:15px}
.afw-ds-card-edit:hover{background:var(--hover);border-color:var(--orange)}
.afw-ds-card-delete{color:var(--muted)}
.afw-ds-card-delete:hover{color:#b34736;border-color:#bf5946;background:color-mix(in srgb,var(--paper) 90%,#b34736)}
.afw-ds-card-delete:disabled{opacity:.38;cursor:not-allowed}
.afw-ds-card-delete:disabled:hover{color:var(--muted);background:var(--paper);border-color:var(--line2)}
.afw-ds-live-view{width:calc(100% - 24px);aspect-ratio:16/9.15;position:relative;overflow:hidden;isolation:isolate;align-self:center;border:1px solid var(--line2);border-radius:9px;background:var(--paper);contain:layout paint}
.afw-ds-live-stage{position:absolute;top:0;left:0;transform-origin:top left;pointer-events:none;overflow:hidden;background:var(--paper)}
.afw-ds-live-stage *, .afw-ds-live-stage{pointer-events:none!important;user-select:none!important;caret-color:transparent!important}
.afw-ds-live-stage .afw-ds-mirror-dashboard{position:absolute;left:0;top:0;min-height:100%;max-width:none;overflow:hidden}
.afw-ds-live-stage .afw-ds-live-window{position:absolute;display:flex!important;opacity:1;visibility:visible;resize:none!important;box-sizing:border-box}
.afw-ds-live-stage .afw-ds-live-window.minimized,.afw-ds-live-stage .afw-ds-live-window.afw-inactive-desktop{display:none!important}
.afw-ds-card-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:40px;padding:8px 13px}
.afw-ds-card-count{font-size:10px;color:var(--muted)}
.afw-ds-card-enter{font-size:10px;font-weight:800;color:var(--orange-deep)}
.afw-ds-card-editor{display:flex;gap:6px;align-items:center;padding:10px 12px;border-top:1px solid var(--line2);background:var(--panel2)}
.afw-ds-card-editor[hidden]{display:none!important}
.afw-ds-name-input{flex:1;min-width:0;height:31px;border-radius:7px;background:var(--paper);border:1px solid var(--gold2);padding:0 9px;color:var(--ink);font:inherit;font-size:11px}
.afw-ds-edit-save,.afw-ds-edit-cancel{height:31px;border-radius:7px;border:1px solid var(--line2);padding:0 10px;background:var(--paper);color:var(--ink);font:inherit;font-size:10px;cursor:pointer}
.afw-ds-edit-save{background:var(--selected);border-color:var(--gold2);font-weight:700}
/* Card-local deletion confirmation, never delete a desktop with open windows. */
.afw-ds-card-confirm{display:flex;align-items:center;flex-wrap:wrap;gap:7px;padding:9px 12px;border-top:1px solid var(--line2);background:var(--panel2)}
.afw-ds-card-confirm[hidden]{display:none!important}
.afw-ds-confirm-copy{font-size:10px;font-weight:750;flex:1;min-width:95px;color:var(--ink)}
.afw-ds-delete-accept,.afw-ds-delete-reject{min-height:30px;padding:0 10px;border-radius:7px;border:1px solid var(--line2);font:inherit;font-size:10px;font-weight:750;cursor:pointer;background:var(--paper);color:var(--ink)}
.afw-ds-delete-accept{border-color:#b34736;background:#a93f30;color:#fff}
.afw-ds-delete-accept:hover{background:#922e24}
.afw-ds-delete-reject:hover{border-color:var(--orange)}
.afw-mission-footer{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:12px 24px;flex:none;border-top:1px solid var(--line2);background:var(--panel2);font-size:10px;color:var(--muted)}
.afw-mission-key{display:inline-block;border:1px solid var(--line2);border-radius:5px;padding:2px 5px;background:var(--paper);font-size:9px;color:var(--ink)}
@media(prefers-reduced-motion:reduce){.afw-ds-card-container{transition:none}}
@media(max-width:860px){.afw-mission-header{padding:16px}.afw-mission-content{padding:16px}.afw-mission-grid{gap:10px}.afw-mission-heading p{display:none}.afw-mission-total{display:none}}
@media(max-width:670px){
.afw-ds-launch{height:35px;width:45px}
.afw-ds-launch-symbol{width:20px}
.afw-ds-launch-symbol .i{width:18px;height:18px}
.afw-mission-window{right:50%;transform:translateX(50%);bottom:69px;width:calc(100vw - 14px);max-height:calc(100vh - 82px)}
.afw-mission-header{padding:12px;gap:8px}
.afw-mission-logo{width:34px;height:34px}
.afw-mission-logo .i{width:19px;height:19px}
.afw-mission-kicker{font-size:7px}
.afw-mission-heading h2{font-size:16px}
.afw-mission-add-top{font-size:9px;padding:0 7px;min-height:32px;gap:4px}
.afw-mission-close{height:32px;width:28px}
.afw-mission-header-actions{gap:4px}
.afw-mission-content{padding:12px}
.afw-mission-section-heading span{display:none}
.afw-mission-grid{grid-template-columns:1fr;gap:9px}
.afw-ds-live-view{aspect-ratio:3/4;min-height:270px}
.afw-mission-footer{padding:10px 12px;font-size:8px;flex-wrap:wrap}
}
/* V3.3 — universal content layer gallery, configurable layer vs presentation */
.layer-lab{margin-top:16px;border-radius:13px;overflow:hidden;border:1px solid var(--line);box-shadow:var(--shadow-card);background:linear-gradient(150deg,var(--paper),var(--panel))}
.layer-lab-head{display:flex;gap:15px;justify-content:space-between;align-items:center;padding:18px 21px;border-bottom:1px solid var(--line);background:linear-gradient(115deg,var(--panel2),var(--paper))}
.layer-lab-head strong{font-size:13px;letter-spacing:-.02em;color:var(--ink-strong)}
.layer-lab-head p{font-size:10px;color:var(--muted);margin:4px 0 0}
.layer-label{font-size:9px;letter-spacing:.13em;text-transform:uppercase;color:var(--orange-deep);font-weight:750}
.layer-presets{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;padding:18px}
.layer-card{display:flex;flex-direction:column;min-width:0;padding:14px;gap:8px;border-radius:11px;border:1px solid var(--line);background:linear-gradient(135deg,var(--paper),var(--panel2))}
.layer-card h3{font-size:11px;letter-spacing:-.02em;margin:0;color:var(--ink-strong)}
.layer-card p{font-size:9.5px;line-height:1.65;margin:0;color:var(--muted);min-height:57px}
.layer-card button{margin-top:auto;width:100%}
.layer-visual{position:relative;height:100px;border-radius:9px;background:radial-gradient(circle at 87% 1%,#f5b27f99,transparent 54%),linear-gradient(140deg,#4f3929,#2c211a);border:1px solid #ac7e5480;overflow:hidden}
.layer-visual:before{content:"";position:absolute;left:13px;right:13px;bottom:13px;top:13px;border:1px solid #e7cba344;border-radius:6px;background:repeating-linear-gradient(to bottom,transparent 0,transparent 11px,#f0d2a020 11px,#f0d2a020 12px)}
.layer-preview{position:absolute;border:1px solid #e7be85b5;background:linear-gradient(120deg,#fffaf0ef,#f1dac0);border-radius:6px;box-shadow:0 10px 18px #170e0970}
.layer-preview.wizard{left:23%;right:18%;top:19%;bottom:17%}
.layer-preview.wizard:before{content:"";display:block;margin:12px 12px;height:8px;width:65%;background:#a66a3e55;border-radius:3px}
.layer-preview.wizard:after{content:"";display:block;margin:12px;height:5px;width:80%;background:#d5a67d66;border-radius:3px}
.layer-preview.full{inset:5% 5% 6%}
.layer-preview.full:before{content:"";position:absolute;left:7%;top:12%;bottom:10%;width:21%;border-radius:4px;background:#8a5739}
.layer-preview.full:after{content:"";position:absolute;left:35%;top:15%;right:9%;bottom:12%;border:1px dashed #b69268;border-radius:4px}
.layer-preview.glass{left:16%;right:15%;top:13%;bottom:13%;border:1px solid #fff6ddbe;background:#fff0d850;backdrop-filter:blur(6px)}
.layer-preview.glass:before{content:"";position:absolute;left:15%;right:15%;top:26%;height:5px;background:#fff8eaad;border-radius:3px}
.layer-preview.guard{left:22%;right:22%;top:16%;bottom:15%}
.layer-preview.guard:before{content:"!";font-weight:800;color:#a96e2e;font-size:19px;text-align:center;display:block;margin:8px 0 0}
.layer-preview.guard:after{content:"";height:4px;display:block;background:#d2ad82;margin:10px 13px;border-radius:3px}
.layer-config{display:grid;grid-template-columns:repeat(4,minmax(0,1fr)) auto;gap:10px;align-items:end;padding:14px 18px 17px;border-top:1px solid var(--line);background:linear-gradient(130deg,var(--panel2),var(--paper))}
.layer-control{display:flex;flex-direction:column;gap:6px;min-width:0}.layer-control label{font-size:9.5px;font-weight:650;color:var(--muted)}
.layer-control select{font:inherit;font-size:10px;background:var(--paper);color:var(--ink);border:1px solid var(--line2);border-radius:8px;padding:0 8px;width:100%;height:var(--control-h)}
.layer-lab-note{padding:0 20px 15px;font-size:9px;line-height:1.75;color:var(--muted)}
/* Native dialog uses top layer; modal background truly inert, unlike a decorative overlay. */
#layerDemo{position:fixed;inset:0;margin:auto;border:0;padding:0;outline:none;overflow:hidden;width:min(760px,calc(100vw - 28px));height:min(560px,calc(100dvh - 34px));max-width:none;max-height:none;border-radius:16px;box-shadow:0 36px 100px #120a06bf,0 5px 20px #0e09045c;background:var(--paper);color:var(--ink)}
#layerDemo:not([open]){display:none}
#layerDemo::backdrop{background:color-mix(in srgb,#120c08 68%,transparent);backdrop-filter:blur(4px)}
#layerDemo[data-variant="glass"]{background:color-mix(in srgb,var(--paper) 67%,transparent);backdrop-filter:blur(22px) saturate(1.5);border:1px solid color-mix(in srgb,var(--gold2) 70%,transparent)}
#layerDemo[data-variant="glass"]::backdrop{background:#26170f83;backdrop-filter:blur(6px)}
#layerDemo[data-variant="immersive"]{background:var(--page);border-radius:12px}
#layerDemo[data-mode="nonmodal"]{box-shadow:0 21px 62px #140a06a8;border:1px solid var(--line2);top:70px;left:auto;right:24px;bottom:auto;margin:0;width:min(620px,calc(100vw - 35px));height:min(510px,calc(100dvh - 130px))}
#layerDemo[data-size="small"]{width:min(460px,calc(100vw - 28px));height:min(420px,calc(100dvh - 32px))}
#layerDemo[data-size="wide"]{width:min(960px,calc(100vw - 28px));height:min(650px,calc(100dvh - 30px))}
#layerDemo[data-size="full"]{width:calc(100vw - 20px);height:calc(100dvh - 20px);border-radius:12px}
#layerDemo[data-mode="nonmodal"][data-size="full"]{width:calc(100vw - 35px);height:calc(100dvh - 150px)}
.layer-shell{display:flex;flex-direction:column;height:100%;min-height:0}
.layer-chrome{display:flex;justify-content:space-between;align-items:center;gap:15px;padding:17px 21px;border-bottom:1px solid var(--line);background:linear-gradient(115deg,var(--panel2),var(--paper));flex:none}
.layer-chrome strong{display:block;font-size:12px;color:var(--ink-strong)}.layer-chrome small{display:block;font-size:9px;color:var(--muted);margin-top:4px}
.layer-close{display:grid;place-items:center;width:33px;height:33px;flex:none;border-radius:8px;background:var(--paper);border:1px solid var(--line);color:var(--ink);font-size:20px;line-height:1}
.layer-close:hover{background:var(--hover)}
.layer-close.disabled{opacity:.4;cursor:not-allowed}
.layer-content{flex:1;min-height:0;overflow:auto;padding:22px}
.layer-content h2{font-size:19px;letter-spacing:-.05em;margin:3px 0 8px;color:var(--ink-strong)}.layer-content p{font-size:10.5px;line-height:1.8;color:var(--muted)}
.layer-footer{flex:none;border-top:1px solid var(--line);background:var(--panel2);padding:12px 20px;display:flex;justify-content:space-between;gap:12px;align-items:center}
.layer-progress{height:6px;overflow:hidden;border-radius:20px;background:var(--panel3)}.layer-progress>span{display:block;height:100%;border-radius:20px;background:linear-gradient(90deg,#e6b778,var(--orange));transition:width .2s}
.layer-steps{display:flex;gap:6px;align-items:center;font-size:9px;color:var(--muted);margin:10px 0 16px}
.layer-step{padding:5px 8px;border:1px solid var(--line);border-radius:7px}
.layer-step.active{background:var(--tint);border-color:var(--gold2);color:var(--orange-deep);font-weight:700}
.layer-wizard-media{min-height:78px;border-radius:11px;padding:15px 17px;margin:12px 0;background:radial-gradient(ellipse at right top,#f0a95a77,transparent 48%),linear-gradient(125deg,#4b3525,#342318);color:#fff1e1;display:flex;align-items:center;gap:13px}
.layer-wizard-media .icon{width:43px;height:43px;flex:none;display:grid;place-items:center;border:1px solid #f6d9ac7a;border-radius:12px;background:#ffffff24}
.layer-wizard-media strong{font-size:12px;display:block}.layer-wizard-media span{font-size:9.5px;color:#e9ccaa}
.layer-input{display:flex;flex-direction:column;gap:7px;margin:13px 0}.layer-input label{font-size:10px;font-weight:650;color:var(--ink)}
.layer-input input{width:100%;height:var(--control-h);font:inherit;font-size:11px;border:1px solid var(--line2);border-radius:8px;padding:0 10px;background:var(--paper);color:var(--ink)}
.layer-input input:focus{outline:none;border-color:var(--orange);box-shadow:var(--focus)}
.layer-immersion{height:100%;display:grid;grid-template-columns:170px minmax(0,1fr);gap:0}
.layer-immersion-sidebar{padding:18px;background:linear-gradient(145deg,#443020,#2a1d14);color:#ead5b9;display:flex;flex-direction:column;gap:8px}
.layer-immersion-sidebar strong{font-size:11px;margin-bottom:12px;color:#fff2db}
.layer-immersion-sidebar span{font-size:10px;padding:9px 10px;border-radius:7px}
.layer-immersion-sidebar span.active{background:#e69b4c36;color:#fff1dd;border:1px solid #d9bd8352}
.layer-immersion-main{overflow:auto;display:flex;flex-direction:column;min-width:0}
.layer-immersion-top{display:flex;justify-content:space-between;align-items:center;padding:14px 17px;border-bottom:1px solid var(--line);gap:10px}
.layer-immersion-top strong{font-size:12px}.layer-immersion-body{padding:21px;flex:1}
.layer-immersion-canvas{border-radius:12px;border:1px dashed var(--line2);min-height:210px;display:flex;gap:12px;align-items:center;justify-content:flex-start;overflow:auto;padding:30px;background:radial-gradient(var(--line2) .7px,transparent .7px);background-size:17px 17px}
.layer-immersion-node{min-width:130px;padding:13px;border-radius:10px;border:1px solid var(--line2);box-shadow:var(--shadow-card);background:var(--paper);font-size:10px;color:var(--ink);font-weight:650}
.layer-immersion-node small{display:block;font-weight:400;font-size:9px;color:var(--muted);margin-top:5px}
.layer-glass-body{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;height:100%;gap:9px;padding:25px}
.layer-glass-emblem{display:grid;place-items:center;width:66px;height:66px;border-radius:20px;background:linear-gradient(135deg,#f7be7e,#e97e23);color:#3b2717;font-weight:700;font-size:35px;box-shadow:0 15px 35px -17px #aa5a1c}
.layer-glass-body h2{font-size:20px;margin:0;color:var(--ink-strong)}
.layer-glass-body p{max-width:380px;color:var(--muted);line-height:1.8;font-size:10.5px;margin:0}
.layer-glass-body .layer-close{position:absolute;top:14px;right:14px}
.layer-required{max-width:450px;margin:auto}
.layer-required label.checkbox{display:flex;gap:9px;align-items:center;font-size:10.5px;margin:18px 0;padding:12px;border-radius:9px;border:1px solid var(--line);background:var(--panel2)}
.layer-required label.checkbox input{width:17px;height:17px;accent-color:var(--orange)}
.layer-required-status{border-left:3px solid var(--warn);background:var(--warn-bg);padding:10px 13px;font-size:10px;color:var(--ink);border-radius:6px;margin-top:14px}
.layer-lab .btn{white-space:normal;min-height:35px}
@media(max-width:1000px){.layer-presets{grid-template-columns:repeat(2,minmax(0,1fr))}.layer-config{grid-template-columns:repeat(2,minmax(0,1fr))}.layer-config>button{grid-column:1/-1}}
@media(max-width:720px){.layer-lab-head{padding:15px}.layer-presets{gap:8px;padding:11px}.layer-card{padding:11px}.layer-card p{min-height:78px}.layer-visual{height:78px}.layer-config{padding:13px}.layer-content{padding:16px}
#layerDemo:not([data-mode="nonmodal"]){width:100vw!important;height:100dvh!important;border-radius:0!important}
.layer-immersion{grid-template-columns:65px minmax(0,1fr)}.layer-immersion-sidebar{padding:10px 5px}.layer-immersion-sidebar span{font-size:8px;padding:8px 4px}.layer-immersion-sidebar strong{font-size:8px}
#layerDemo[data-mode="nonmodal"]{right:6px;top:20px;width:calc(100vw - 12px);height:calc(100dvh - 85px)}
}
/* V3.3 — viewport-based, independently scrolling views.
 * Shell: fixed flex regions. Only the view beneath pointer scrolls.
 * Never rely on absolute positioning alone to suppress scroll chaining.
 */
html,body{height:100%;width:100%;min-height:0;overflow:hidden!important;overscroll-behavior:none}
body{padding:0!important}
.app{position:fixed!important;inset:0 0 62px 0!important;height:auto!important;min-height:0!important;display:flex!important;flex-direction:row!important;align-items:stretch;overflow:hidden!important;width:100%}
.app .sidebar{flex:0 0 222px;width:222px;height:100%;min-height:0;min-width:0;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;position:relative}
.app .main{height:100%;min-width:0;min-height:0;overflow:hidden;display:flex;flex:1 1 auto;flex-direction:column;align-items:stretch}
.app .main .topbar{flex:0 0 58px;min-height:58px;position:relative!important;top:auto!important}
.app .main .content{display:block;flex:1 1 auto;min-width:0;min-height:0;width:100%;max-width:1590px;overflow-x:hidden;overflow-y:auto;overscroll-behavior-x:contain;overscroll-behavior-y:contain;margin:0 auto!important;scrollbar-width:thin;scroll-behavior:auto}
.app .main .content,.app .sidebar,.d-win-body,.d-flow-canvas,.d-task-list,.d-task-popover-body,#layerDemo,.layer-shell,.layer-content,.layer-immersion-main,.layer-immersion-canvas{overscroll-behavior:contain}
.d-window-area{overflow:hidden}
.d-win{overscroll-behavior:contain}
.d-win-body{overflow-y:auto}
#layerDemo{overscroll-behavior:contain;overflow:hidden}
#layerDemo .layer-shell{min-height:0;overflow:hidden}
#layerDemo .layer-content{overflow-y:auto;overscroll-behavior:contain}
#layerDemo .layer-immersion-main{min-height:0;overflow-y:auto;overscroll-behavior:contain}
#layerDemo .layer-immersion-canvas{overscroll-behavior:contain}
.d-task-popover-body{overscroll-behavior:contain}
body.has-blocking-layer .app .sidebar,
body.has-blocking-layer .app .content,
body.has-blocking-layer .d-win-body,
body.has-blocking-layer .d-flow-canvas,
body.has-blocking-layer .d-task-popover-body{overflow-y:hidden!important}
body.has-blocking-layer .app,
body.has-blocking-layer .d-window-area,
body.has-blocking-layer .d-taskbar{pointer-events:none}
@media(max-width:1080px){
 .app .sidebar{flex:0 0 70px;width:70px}
}
@media(max-width:690px){
 .app{inset:0 0 57px 0!important;flex-direction:column!important}
 .app .sidebar{flex:0 0 54px!important;width:100%!important;height:54px;min-height:54px;overflow-y:hidden;overflow-x:auto;overscroll-behavior-x:contain}
 .app .main{height:auto;min-height:0;flex:1 1 auto;width:100%}
 .app .main .topbar{flex:0 0 48px;min-height:48px}
 .app .main .content{padding-bottom:75px}
}


/* Scrollable demo content and the nonmodal layer's independent elevation */
.layer-scroll-sample{margin:14px 0;border:1px solid var(--line);border-radius:9px;background:var(--panel2);overflow:hidden}
.layer-scroll-row{display:flex;justify-content:space-between;align-items:center;gap:14px;padding:12px 13px;border-bottom:1px solid var(--line);min-height:44px}
.layer-scroll-row:last-child{border:0}
.layer-scroll-row strong{font-size:10px;font-weight:650;color:var(--ink)}
.layer-scroll-row span{font-size:9px;color:var(--muted);text-align:right}
#layerDemo[data-mode="nonmodal"]{z-index:260}


/* V3.4 — scroll track anchored to the far-right edge of main workspace.
   Full-width scroll OWNER; centered content remains a separate inner container. */
.app .main .content{
  width:100%!important;
  max-width:none!important;
  min-width:0!important;
  margin:0!important;
  padding:0!important;
  overflow-x:hidden;
  overflow-y:auto;
  scrollbar-gutter:stable;
}
/* Every AFW background page uses exactly the same layout envelope as
   the legacy Dashboard. PageRouter is a display:contents host, so apply
   spacing to its actual route pages, not the empty host (which remains
   present even when the Dashboard is active). */
.app .main .content>.d-content-inner,
.app .main .content>#afwPageHost>.afw-route-page{
  box-sizing:border-box;
  width:100%;
  max-width:1590px;
  min-width:0;
  margin:0 auto;
  padding:26px 31px 100px;
}
@media(max-width:690px){
 .app .main .content>.d-content-inner,
 .app .main .content>#afwPageHost>.afw-route-page{padding:17px 14px 75px}
}
/* v3.2's broad .d-mini span rule turned the icon tile into display:block and
   added a 3px top margin. Override explicitly for the icon tile. */
.d-mini>.d-mini-icon{
  width:36px;
  height:36px;
  display:grid!important;
  place-items:center;
  align-content:center;
  justify-content:center;
  flex:0 0 36px;
  margin:0!important;
  padding:0;
  background:linear-gradient(145deg,var(--paper),var(--panel2));
  color:var(--orange-deep)!important;
}
.d-mini>.d-mini-icon>svg.i{
  display:block;
  width:17px;
  height:17px;
  justify-self:center;
  align-self:center;
  margin:0!important;
}
.d-mini>span:not(.d-mini-icon){margin-top:0}
.d-taskbar #taskPrev[hidden],
.d-taskbar #taskNext[hidden]{
  display:none!important;
}

/* LIVING DEMO / STUDIO */

/* Living Demo v0.1 — independently maintained shared showroom skin */
.ld-head{border:1px solid #956a45;border-radius:14px;background:radial-gradient(ellipse at 89% -33%,#f0a15a63,transparent 53%),linear-gradient(110deg,#493321,#2c2118);box-shadow:0 19px 35px -27px #24120aae;color:#fff3e4;margin:0 0 12px;padding:21px 24px}
.ld-head-row{display:flex;justify-content:space-between;gap:12px;align-items:center;flex-wrap:wrap}
.ld-overline{font-size:9px;font-weight:750;letter-spacing:.15em;color:#eac18b}
.ld-status{color:#e6d5bd;border:1px solid #ddba8269;border-radius:6px;padding:5px 8px;font-size:9px;font-weight:600;display:inline-flex;align-items:center;gap:6px}
.ld-status i{background:#aad29b;border-radius:50%;height:6px;width:6px}
.ld-head h2{font-size:22px;letter-spacing:-.05em;color:#fff5e9;margin:8px 0 5px}
.ld-head p{font-size:10.5px;line-height:1.75;color:#ddc9b2;max-width:660px;margin:0}
.ld-launch-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px;margin-top:18px}
.ld-launch-card{border:1px solid #e4c59866;background:#ffffff13;border-radius:9px;min-width:0;min-height:72px;display:flex;align-items:center;gap:9px;text-align:left;color:#fff4e6;padding:10px;transition:background .14s,border-color .14s}
.ld-launch-card:hover{background:#ffca8b22;border-color:#e5b16e}
.ld-launch-icon{width:31px;height:31px;flex:none;display:grid;place-items:center;border:1px solid #f2d09d7d;background:#ffd29920;border-radius:8px;font-size:17px;color:#ffd5a1}
.ld-launch-card>span:nth-child(2){min-width:0;flex:1}
.ld-launch-card strong{display:block;font-size:10px;font-weight:650;color:#fff5e8}
.ld-launch-card small{display:block;margin-top:4px;font-size:8.5px;line-height:1.5;color:#d8c0a4}
.ld-launch-arrow{color:#e0b17c;font-size:15px}
.ld-release-panel{border:1px solid var(--line);border-radius:10px;padding:12px 14px;margin:12px 0 14px;display:flex;gap:10px;align-items:start;background:linear-gradient(155deg,var(--paper),var(--panel2));box-shadow:var(--shadow-card)}
.ld-release-panel strong{color:var(--orange-deep);font-size:10px;flex:none}
.ld-release-panel span{font-size:9.5px;color:var(--muted);line-height:1.6}
.ld-release-panel b{color:var(--ink)}
.ld-gallery-win .d-win-body{background:linear-gradient(150deg,var(--paper),var(--panel));overscroll-behavior:contain}
.ld-gallery-win .d-win-content{padding:0;min-width:0;min-height:0}
.ld-gallery{display:flex;flex-direction:column;height:100%;min-height:100%;min-width:0}
.ld-gallery-header{display:flex;justify-content:space-between;gap:15px;align-items:start;padding:17px 21px 14px;border-bottom:1px solid var(--line);background:linear-gradient(135deg,var(--panel2),var(--paper))}
.ld-gallery-header .hint{font-size:9px;letter-spacing:.11em;text-transform:uppercase;font-weight:750;color:var(--orange-deep)}
.ld-gallery-header h2{font-size:15px;letter-spacing:-.035em;margin:4px 0;color:var(--ink-strong)}
.ld-gallery-header p{font-size:9.5px;margin:0;color:var(--muted);line-height:1.6}
.ld-review-label{font-size:9px;border:1px solid var(--line);padding:5px 8px;border-radius:6px;color:var(--muted);background:var(--paper);white-space:nowrap}
.ld-gallery-main{flex:1;padding:16px 20px 24px;min-height:0}
.ld-section{margin-bottom:16px;min-width:0}
.ld-section h3{font-size:11px;margin:0 0 10px;font-weight:700;color:var(--ink-strong)}
.ld-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:11px}
.ld-panel{background:linear-gradient(145deg,var(--paper),var(--panel2));border:1px solid var(--line);border-radius:10px;padding:14px;min-width:0}
.ld-panel.wide{grid-column:1/-1}
.ld-panel-header{display:flex;justify-content:space-between;align-items:center;gap:10px;border-bottom:1px solid var(--line);padding-bottom:10px;margin-bottom:12px}
.ld-panel-header strong{font-size:10.5px;color:var(--ink)}
.ld-panel-header small{font-size:9px;color:var(--muted)}

/* Semantic panels only; existing desktop d-panel styles remain governed by app-shell. */
[data-afw-component="panel"][data-afw-surface="flat"]{background:var(--paper);box-shadow:none;border:1px solid var(--line)}
[data-afw-component="panel"][data-afw-surface="raised"]{background:var(--panel);box-shadow:0 8px 24px #24170d18;border:1px solid var(--line)}
[data-afw-component="panel"][data-afw-surface="glass"]{background:color-mix(in srgb,var(--panel) 78%,transparent);backdrop-filter:blur(12px);border:1px solid var(--line)}
[data-afw-component="panel"][data-afw-padding="none"]{padding:0}
[data-afw-component="panel"][data-afw-padding="sm"]{padding:10px}
[data-afw-component="panel"][data-afw-padding="md"]{padding:16px}
[data-afw-component="panel"][data-afw-padding="lg"]{padding:24px}
.ld-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.ld-row+.ld-row{margin-top:11px}

/* R1 (AFW-DS-02 bod 8): version text in the shell comes from build.py VERSION. Two rules keep the locked shell layout unchanged:
   .ld-release-panel>strong - keeps the column width of the v0.30.0 heading (digits 0 and 3 differ by 0.44 px), so changing the version digits never reflows the text next to it;
   .afw-ver-base - the "baseline shellu v0.30.0" note is shown only where there is room (hidden on phones, where it would wrap the line). */
.ld-release-panel>strong{min-width:313.390625px;max-width:313.390625px;white-space:nowrap;overflow:visible}
@media(max-width:720px){.afw-ver-base{display:none}}
.ld-button{font:inherit;font-size:10px;font-weight:650;min-height:var(--control-h);padding:0 12px;display:inline-flex;gap:7px;align-items:center;justify-content:center;border-radius:8px;border:1px solid var(--line2);background:linear-gradient(155deg,var(--paper),var(--panel2));color:var(--ink);box-shadow:inset 0 1px #ffffff22;line-height:1.2}
.ld-button:hover:not(:disabled){border-color:var(--gold2);background:var(--hover);color:var(--ink)}
.ld-button.primary{background:linear-gradient(140deg,#ffc083,#f4781c 67%,#df6718);border-color:#ea7c28;color:#392417}
.ld-button.primary:hover:not(:disabled){background:linear-gradient(140deg,#ffca95,#fa8330 65%,#e46a1c);color:#352013}
.ld-button.danger{background:linear-gradient(140deg,#bd534d,#922d38);border-color:#af4448;color:#fffaf8!important}
.ld-button.danger:hover:not(:disabled),.ld-button.danger:focus-visible{background:linear-gradient(140deg,#ce6660,#a73943);color:#fffaf8!important}
.ld-button.ghost{background:transparent;border-color:transparent;box-shadow:none}
.ld-button.small{min-height:28px;font-size:9px;padding:0 9px}
.ld-button.icon-only{width:var(--control-h);padding:0;flex:none}
.ld-button.icon-only svg.i{display:block;width:16px;height:16px;margin:0}
.ld-button:disabled{opacity:.45;cursor:not-allowed}
.ld-button:focus-visible,.ld-field input:focus-visible,.ld-field textarea:focus-visible{outline:2px solid var(--orange);outline-offset:2px}

/* Shared foundation for all Button variants, including desktop chrome and taskbar. */
[data-afw-component="button"]{touch-action:manipulation}
[data-afw-component="button"]:focus-visible{outline:2px solid var(--orange);outline-offset:2px}

/* Public Button API v1 — semantic attributes, no caller CSS classes required. */
[data-afw-component="button"][data-afw-variant] {font:inherit; font-size:11px; font-weight:650; display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:var(--control-h);padding:0 13px;border:1px solid var(--line2);border-radius:8px;background:linear-gradient(145deg,var(--paper),var(--panel2));color:var(--ink);cursor:pointer;line-height:1.2;white-space:nowrap;vertical-align:middle}
[data-afw-component="button"][data-afw-variant]:hover:not(:disabled){filter:brightness(1.045);border-color:var(--gold2)}
[data-afw-component="button"][data-afw-variant="primary"]{background:linear-gradient(140deg,#ffc083,#f4781c 67%,#df6718);border-color:#ea7c28;color:#392417}
[data-afw-component="button"][data-afw-variant="secondary"]{background:var(--panel2);border-color:var(--line2)}
[data-afw-component="button"][data-afw-variant="success"]{background:#1e735c;border-color:#28876d;color:#fff}
[data-afw-component="button"][data-afw-variant="warning"]{background:#bd8a2e;border-color:#d49b36;color:#271d10}
[data-afw-component="button"][data-afw-variant="danger"]{background:linear-gradient(140deg,#bd534d,#922d38);border-color:#af4448;color:#fffaf8}
[data-afw-component="button"][data-afw-variant="ghost"],[data-afw-component="button"][data-afw-variant="quiet"]{background:transparent;border-color:transparent;box-shadow:none}
[data-afw-component="button"][data-afw-variant="outline"]{background:transparent;border-color:var(--orange);color:var(--orange-deep)}
[data-afw-component="button"][data-afw-variant="outline"]:hover:not(:disabled){background:var(--hover)}
[data-afw-component="button"][data-afw-size="xs"]{min-height:24px;font-size:9px;padding:0 7px}
[data-afw-component="button"][data-afw-size="sm"]{min-height:29px;font-size:10px;padding:0 9px}
[data-afw-component="button"][data-afw-size="md"]{min-height:var(--control-h);font-size:11px}
[data-afw-component="button"][data-afw-size="lg"]{min-height:44px;font-size:12px;padding:0 17px}
[data-afw-component="button"][data-afw-shape="square"]{border-radius:3px}
[data-afw-component="button"][data-afw-shape="pill"]{border-radius:100px}
[data-afw-component="button"][data-afw-full="true"]{width:100%}
[data-afw-component="button"][data-afw-icon-only="true"]{aspect-ratio:1;padding:0;min-width:var(--control-h)}
[data-afw-component="button"][data-afw-size="xs"][data-afw-icon-only="true"]{min-width:24px}
[data-afw-component="button"][data-afw-size="sm"][data-afw-icon-only="true"]{min-width:29px}
[data-afw-component="button"][data-afw-size="lg"][data-afw-icon-only="true"]{min-width:44px}
[data-afw-component="button"][data-afw-variant]:disabled{opacity:.5;cursor:not-allowed}
[data-afw-component="button"][data-afw-variant]:focus-visible{outline:2px solid var(--orange);outline-offset:2px}
.afw-button-spinner{width:13px;height:13px;display:inline-block;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:afw-spin .75s linear infinite}
@keyframes afw-spin{to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){.afw-button-spinner{animation-duration:2s}}
.ld-state{display:inline-flex;align-items:center;gap:6px;border-radius:6px;font-size:9px;font-weight:700;padding:5px 8px;background:var(--panel3);color:var(--muted)}
.ld-state:before{content:"";width:5px;height:5px;border-radius:50%;background:currentColor}
.ld-state.success{background:var(--green-bg);color:var(--green)}
.ld-state.warning{background:var(--warn-bg);color:var(--warn)}
.ld-state.error{background:var(--red-bg);color:var(--red)}

[data-afw-component="status"][data-afw-tone] {display:inline-flex;align-items:center;gap:5px;white-space:nowrap;border-radius:100px;line-height:1.2}
[data-afw-component="status"][data-afw-tone="info"]{background:#d5e8f6;color:#235876}
[data-afw-component="status"][data-afw-tone="neutral"]{background:var(--panel2);color:var(--ink)}
[data-afw-component="status"][data-afw-tone="success"],[data-afw-component="status"][data-afw-tone="active"]{background:#d6eee5;color:#1b684f}
[data-afw-component="status"][data-afw-tone="warning"],[data-afw-component="status"][data-afw-tone="pending"]{background:#faeccb;color:#826019}
[data-afw-component="status"][data-afw-tone="error"]{background:#f7d9da;color:#933940}
[data-afw-component="status"][data-afw-size="sm"]{font-size:9px;padding:3px 7px}
[data-afw-component="status"][data-afw-size="md"]{font-size:10px;padding:5px 10px}

/* v0.32 (B2): icon + text for every semantic tone, danger/running tones, dark-theme palette. */
[data-afw-component="status"][data-afw-tone].ld-state:before{display:none}
[data-afw-component="status"][data-afw-tone="danger"]{background:#f7d9da;color:#933940}
[data-afw-component="status"][data-afw-tone="running"]{background:#d5e8f6;color:#235876}
.afw-status-icon{display:inline-grid;place-items:center;width:11px;height:11px;flex:none}
.afw-status-icon .i{width:11px;height:11px}
.afw-status-spin{border:2px solid currentColor;border-right-color:transparent;border-radius:50%;box-sizing:border-box}
@media(prefers-reduced-motion:no-preference){.afw-status-spin{animation:afw-status-spin .9s linear infinite}}
@keyframes afw-status-spin{to{transform:rotate(360deg)}}
:root[data-theme="dark"] [data-afw-component="status"][data-afw-tone="info"],:root[data-theme="dark"] [data-afw-component="status"][data-afw-tone="running"]{background:#243d4d;color:#a9d3ec}
:root[data-theme="dark"] [data-afw-component="status"][data-afw-tone="success"],:root[data-theme="dark"] [data-afw-component="status"][data-afw-tone="active"]{background:var(--green-bg);color:var(--green)}
:root[data-theme="dark"] [data-afw-component="status"][data-afw-tone="warning"],:root[data-theme="dark"] [data-afw-component="status"][data-afw-tone="pending"]{background:var(--warn-bg);color:var(--warn)}
:root[data-theme="dark"] [data-afw-component="status"][data-afw-tone="error"],:root[data-theme="dark"] [data-afw-component="status"][data-afw-tone="danger"]{background:var(--red-bg);color:var(--red)}
.ld-field{display:flex;flex-direction:column;gap:6px;min-width:0;font-size:10px}
.ld-field>label{font-weight:650;color:var(--ink)}
.ld-field input,.ld-field textarea,.ld-field select{border:1px solid var(--line2);border-radius:8px;height:var(--control-h);min-width:0;width:100%;padding:0 10px;background:var(--paper);color:var(--ink);font:inherit;font-size:10.5px;outline:0}
.ld-field textarea{height:88px;resize:vertical;padding:10px}
.ld-field input:focus,.ld-field textarea:focus{border-color:var(--orange);box-shadow:var(--focus)}
.ld-field.is-invalid input{border-color:var(--red);box-shadow:0 0 0 2px color-mix(in srgb,var(--red) 12%,transparent)}
.ld-help{font-size:9px;line-height:1.55;color:var(--muted)}
.ld-help.error{color:var(--red)}

.afw-field[data-afw-size="sm"] input,.afw-field[data-afw-size="sm"] textarea{min-height:29px}
.afw-field[data-afw-size="lg"] input,.afw-field[data-afw-size="lg"] textarea{min-height:44px}
.afw-field input[aria-invalid="true"],.afw-field textarea[aria-invalid="true"]{border-color:var(--red);box-shadow:0 0 0 1px var(--red)}

/* v0.32 (B1): textarea counter, affixes, required/optional marks, readonly vs disabled */
.afw-field-foot{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}
.ld-counter{font-size:9px;color:var(--muted);margin-left:auto;white-space:nowrap;font-variant-numeric:tabular-nums}
.ld-counter.over{color:var(--red);font-weight:650}
.afw-req{color:var(--red)}
.afw-opt{font-weight:400;color:var(--quiet)}
.afw-field-group{display:flex;align-items:stretch;min-width:0}
.afw-field-group>input{flex:1;min-width:0}
.afw-affix{display:inline-flex;align-items:center;padding:0 9px;border:1px solid var(--line2);background:var(--panel2);color:var(--muted);font-size:10px;white-space:nowrap}
.afw-field-group>.afw-affix:first-child{border-right:0;border-radius:8px 0 0 8px}
.afw-field-group>.afw-affix:last-child{border-left:0;border-radius:0 8px 8px 0}
.afw-field-group>.afw-affix:first-child+input{border-radius:0 8px 8px 0}
.afw-field-group>input:has(+.afw-affix){border-radius:8px 0 0 8px}
.afw-field-group>.afw-affix:first-child+input:has(+.afw-affix){border-radius:0}
.afw-field textarea[data-afw-autosize]{resize:none;min-height:52px;height:auto;line-height:1.5}
.afw-field textarea[data-afw-limit]{height:auto;min-height:72px}
/* readonly: readable, focusable, copyable, but visibly "not editable"; disabled: dimmed, out of tab order */
.ld-field input[readonly],.ld-field textarea[readonly]{background:var(--panel2);border-style:dashed;color:var(--ink)}
.ld-field input[readonly]:focus,.ld-field textarea[readonly]:focus{border-color:var(--line2)}
.ld-field input:disabled,.ld-field textarea:disabled{background:var(--panel3);color:var(--quiet);cursor:not-allowed;opacity:.7;border-style:solid}
.ld-field.is-disabled>label{color:var(--quiet)}
.ld-field.is-readonly>label::after{content:" · jen pro čtení";font-weight:400;color:var(--quiet)}

/* R1 (AFW-DS-02, bod 1-3): ONE field grid for label / control / help.
   Every field-like unit (Field, DatePicker field, Select wrapper, composition filter, modal field) shares these metrics:
   label line = --afw-label-lh, gap = --afw-field-gap, control = --control-h (Premium Compact), help line = --afw-help-lh.
   Help text sits directly under the control and an error replaces the hint in the same slot, so rows of fields use
   align-items:start and label and control stay on the same axes whatever the neighbour shows below. */
/* The metrics equal the shipped v0.30.0 look of .ld-field (Poppins 10 px label = 15 px line, 9 px help x 1.55), so the locked shell scenes
   stay pixel-identical; the modal (.layer-input, locked look) keeps its own 7 px gap and is deliberately not part of this rule. */
:root{--afw-label-lh:15px;--afw-field-gap:6px;--afw-help-lh:13.95px}
.ld-field,.afw-cld-f{display:flex;flex-direction:column;gap:var(--afw-field-gap);min-width:0;align-content:flex-start}
.ld-field>label,.afw-cld-lab{display:block;line-height:var(--afw-label-lh);min-height:var(--afw-label-lh)}
.afw-cld-lab{font-size:10px;font-weight:650;color:var(--ink-strong)}
.ld-form-grid,.ld-af-fields,.ld-pick-grid{align-items:start}
.ld-choice{display:flex;align-items:center;gap:8px;font-size:10px;color:var(--ink);min-height:29px}
.ld-choice input{width:16px;height:16px;margin:0;accent-color:var(--orange)}

[data-afw-component="choice"]:focus-visible{outline:2px solid var(--orange);outline-offset:2px}

/* v0.32 (B1): Switch, hinted choice, group with legend */
.ld-choice-hinted,.ld-switch{align-items:flex-start}
.ld-switch-text{display:flex;flex-direction:column;gap:2px;min-width:0}
.ld-choice-hint{font-size:9px;color:var(--muted);line-height:1.5}
.ld-switch{cursor:pointer;gap:10px;padding:2px 0}
.ld-switch>input[role="switch"]{position:absolute;opacity:0;width:32px;height:18px;margin:0}
.ld-switch-track{position:relative;flex:none;width:32px;height:18px;border-radius:99px;background:var(--panel3);border:1px solid var(--line2);transition:background .16s,border-color .16s}
.ld-switch-track::after{content:"";position:absolute;top:2px;left:2px;width:12px;height:12px;border-radius:50%;background:var(--paper);box-shadow:0 1px 2px #2b190d40;transition:transform .16s}
.ld-switch>input:checked~.ld-switch-track{background:var(--orange);border-color:var(--orange-deep)}
.ld-switch>input:checked~.ld-switch-track::after{transform:translateX(14px)}
.ld-switch>input:focus-visible~.ld-switch-track{outline:2px solid var(--orange);outline-offset:2px}
.ld-switch>input:disabled~.ld-switch-track,.ld-switch>input:disabled~.ld-switch-text{opacity:.5}
.ld-switch.is-disabled{cursor:not-allowed}
@media(prefers-reduced-motion:reduce){.ld-switch-track,.ld-switch-track::after{transition:none}}
.afw-choice-group{border:1px solid var(--line);border-radius:9px;padding:8px 12px 10px;margin:0;min-width:0;display:flex;flex-direction:column;gap:6px;background:var(--panel)}
.afw-choice-group legend{padding:0 6px;font-size:10px;font-weight:650;color:var(--ink)}
.afw-choice-group.is-invalid{border-color:var(--red);background:var(--red-bg)}
.afw-choice-items{display:flex;flex-direction:column;gap:2px}
.ld-choice-all{padding-bottom:4px;border-bottom:1px dashed var(--line2);margin-bottom:2px}
.afw-choice-group .ld-help.error[hidden]{display:none}
.ld-switch{position:relative}
.ld-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.ld-form-grid .wide{grid-column:1/-1}

/* Form composition D2: reuses shared Field, Select, Choice, Button, Status. */
.ld-af-panel{margin-top:14px;overflow:hidden}
.ld-af-panel .ld-panel-header{margin-bottom:13px}
.ld-af-form{position:relative;border:1px solid var(--line);border-radius:10px;background:var(--paper);overflow:hidden}
.ld-af-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 18px;border-bottom:1px solid var(--line);background:var(--panel2)}
.ld-af-head h3{font-size:15px;line-height:1.4;margin:0;color:var(--ink-strong)}
.ld-af-head p{font-size:10px;color:var(--muted);margin:4px 0 0}
.ld-af-dirty[data-dirty=true]{color:var(--orange-deep);font-weight:700}
.ld-af-fields{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px;padding:17px 18px}
.ld-af-fields>.ld-field{display:flex;flex-direction:column;gap:6px;min-width:0}
.ld-af-fields>.wide{grid-column:1/-1}
.ld-af-fields label{font-size:10px;color:var(--ink-strong);font-weight:650}
.ld-af-fields label b{color:var(--red)}
.ld-af-fields input,.ld-af-fields textarea{display:block;width:100%;min-width:0;max-width:100%;box-sizing:border-box;border:1px solid var(--line2);border-radius:7px;background:var(--paper);color:var(--ink);padding:9px 11px;font:inherit;font-size:10.5px}
.ld-af-fields input{min-height:var(--control-h)}
.ld-af-fields textarea{min-height:74px;resize:vertical}
.ld-af-fields input[aria-invalid=true]{border-color:var(--red)}
.ld-af-fields input:focus-visible,.ld-af-fields textarea:focus-visible{outline:2px solid var(--orange);outline-offset:1px}
.ld-af-fields [hidden],.ld-af-panel [hidden]{display:none!important}
.ld-af-fields .ld-filter-combo{width:100%;min-width:0}
.ld-af-checkline{grid-column:1/-1;font-size:10px}
.ld-af-checkline label{display:flex;align-items:center;gap:8px}
.ld-af-checkline input{width:16px;min-height:16px;height:16px;accent-color:var(--orange)}
.ld-af-check{display:block;min-height:13px;font-size:9px;color:var(--muted);line-height:1.5}
.ld-af-check[data-tone=success]{color:var(--green)}
.ld-af-check[data-tone=error]{color:var(--red)}
.ld-af-config{margin:0 18px 14px;border:1px solid var(--line);border-radius:8px;padding:10px 12px;background:var(--panel2);font-size:10px}
.ld-af-config summary{cursor:pointer;color:var(--orange-deep);font-weight:700}
.ld-af-config p{margin:7px 0 0;color:var(--muted);font-size:9px}
.ld-af-options{display:flex;flex-wrap:wrap;gap:10px 16px;padding:13px 0 5px}
.ld-af-options label{display:flex;align-items:center;gap:6px;font-size:9.5px;color:var(--ink)}
.ld-af-options input{accent-color:var(--orange)}
.ld-af-status{font-size:10px;line-height:1.6;color:var(--muted);padding:10px 18px;background:var(--panel2);border-top:1px solid var(--line)}
.ld-af-status[data-tone=error]{color:var(--red);background:var(--red-bg)}
.ld-af-status[data-tone=success]{color:var(--green)}
.ld-af-actions{display:flex;justify-content:flex-end;flex-wrap:wrap;gap:8px;padding:12px 18px;border-top:1px solid var(--line)}
.ld-af-panel .ld-af-actions button:disabled{opacity:.58}
@media(max-width:720px){
 .ld-af-fields{grid-template-columns:minmax(0,1fr);padding:13px;gap:12px}
 .ld-af-head{padding:13px}
 .ld-af-head h3{font-size:13px}
 .ld-af-actions{padding:12px}
 .ld-af-config{margin:0 12px 12px}
 .ld-af-status{padding:10px 12px}
}

/* v0.24 usability: the interactive scenario is visually first, static examples second. */
.ld-af-guide{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;margin:0 0 12px;padding:13px 15px;border:1px solid var(--orange);border-radius:9px;background:var(--panel2)}
.ld-af-guide strong{font-size:11px;color:var(--ink-strong);display:block}
.ld-af-guide p{margin:5px 0 0;font-size:10px;line-height:1.6;color:var(--muted);max-width:560px}
.ld-af-guide-actions{display:flex;gap:7px;flex-wrap:wrap}
.ld-af-guide-actions .ld-button{white-space:nowrap}
.ld-af-legacy-title{display:flex;gap:9px;flex-wrap:wrap;align-items:center;justify-content:space-between;margin:24px 0 12px;padding:10px 12px;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.ld-af-legacy-title strong{font-size:11px;color:var(--ink-strong)}
.ld-af-legacy-title span{font-size:9px;letter-spacing:.02em;color:var(--muted);font-weight:650}
@media(max-width:720px){.ld-af-guide{padding:11px}.ld-af-guide-actions .ld-button{flex:1 1 auto;white-space:normal}.ld-af-legacy-title{margin-top:17px}}

/* v0.32 (B1): error summary, feedback banner, submit lock */
.afw-form-feedback{display:flex;flex-direction:column;gap:8px;empty-cells:hide}
.afw-form-feedback:empty,.afw-form-feedback:not(:has(:not([hidden]))){display:none}
.afw-form-summary{border:1px solid var(--red);background:var(--red-bg);border-radius:9px;padding:9px 12px;font-size:10.5px;color:var(--ink);outline:0}
.afw-form-summary:focus-visible{box-shadow:var(--focus)}
.afw-form-summary strong{color:var(--red);font-size:10.5px}
.afw-form-summary ul{margin:6px 0 0;padding-left:18px;display:flex;flex-direction:column;gap:2px}
.afw-form-summary a{color:var(--red);text-decoration:underline;text-underline-offset:2px;cursor:pointer}
.afw-form-summary a:focus-visible{outline:2px solid var(--orange);outline-offset:2px}
.afw-form-banner{display:flex;align-items:center;justify-content:space-between;gap:10px;border:1px solid var(--line2);background:var(--panel2);border-radius:9px;padding:8px 12px;font-size:10.5px;color:var(--ink)}
.afw-form-banner[data-kind="success"]{border-color:var(--green);background:var(--green-bg)}
.afw-form-banner[data-kind="error"]{border-color:var(--red);background:var(--red-bg);color:var(--red)}
.afw-form-banner[hidden],.afw-form-summary[hidden]{display:none}
form[aria-busy="true"] [type=submit]{cursor:progress}

/* R1 (AFW-DS-02, bod 7): the working form follows its container (maximized window): 3 columns from 900 px, readable maximum width. */
.ld-af-panel{container-type:inline-size;container-name:afw-form}
@container afw-form (min-width:900px){
 .ld-af-fields{grid-template-columns:repeat(3,minmax(0,1fr))}
 .ld-af-form{max-width:1240px}
}
@container afw-form (max-width:520px){.ld-af-fields{grid-template-columns:minmax(0,1fr)}}
.ld-file{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.ld-file label{display:inline-flex;align-items:center;gap:7px;cursor:pointer;border:1px solid var(--line2);background:var(--paper);border-radius:8px;font-size:10px;font-weight:650;min-height:var(--control-h);padding:0 11px}
.ld-file label input{position:absolute;width:1px;height:1px;opacity:0}.ld-file label:focus-within{outline:2px solid var(--orange);outline-offset:2px}
.ld-file small{color:var(--muted);font-size:9.5px}

/* v0.32 (B2): attachment list. Tokens only; compact scale of Select/DataTable. */
.afw-upload{display:flex;flex-direction:column;gap:10px;min-width:0;max-width:100%}
.afw-upload-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.afw-upload-pick{display:inline-flex;align-items:center;gap:7px;cursor:pointer;border:1px solid var(--line2);background:var(--paper);color:var(--ink);border-radius:8px;font-size:10px;font-weight:650;min-height:var(--control-h);padding:0 12px;position:relative}
.afw-upload-pick:hover{background:var(--hover)}
.afw-upload-pick:focus-within{outline:2px solid var(--orange);outline-offset:2px}
.afw-upload-pick.is-disabled{opacity:.5;cursor:not-allowed}
.afw-upload-input{position:absolute;width:1px;height:1px;opacity:0;overflow:hidden}
.afw-upload-hint{font-size:9.5px;color:var(--muted)}
.afw-upload-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px;min-width:0}
.afw-upload-item{display:grid;grid-template-columns:minmax(0,1fr) minmax(70px,140px) auto;align-items:center;gap:10px;border:1px solid var(--line);background:var(--paper);border-radius:8px;padding:7px 10px;min-width:0}
.afw-upload-item[data-state="error"]{border-color:var(--red);background:var(--red-bg)}
.afw-upload-item[data-state="done"] .afw-upload-status{color:var(--green)}
.afw-upload-item[data-state="error"] .afw-upload-status{color:var(--red);font-weight:650}
.afw-upload-main{display:flex;flex-direction:column;gap:2px;min-width:0}
.afw-upload-name{font-size:10.5px;font-weight:650;color:var(--ink-strong);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.afw-upload-meta{font-size:9px;color:var(--muted)}
.afw-upload-item progress{width:100%;height:6px;accent-color:var(--orange)}
.afw-upload-item progress[hidden]{display:block;visibility:hidden}
.afw-upload-side{display:flex;align-items:center;gap:8px;justify-content:flex-end;font-size:9.5px;color:var(--muted);flex-wrap:wrap}
.afw-upload-btn{font:inherit;font-size:9.5px;font-weight:650;min-height:26px;padding:0 9px;border:1px solid var(--line2);border-radius:6px;background:var(--paper);color:var(--ink);cursor:pointer}
.afw-upload-btn:hover{background:var(--hover)}
.afw-upload-btn:focus-visible{outline:2px solid var(--orange);outline-offset:1px}
.afw-upload-btn[hidden]{display:none}
.afw-upload-live{margin:0;font-size:9.5px;color:var(--muted);min-height:1em}
@media(max-width:730px){.afw-upload-item{grid-template-columns:minmax(0,1fr) auto}.afw-upload-item progress{grid-column:1/-1;grid-row:2}}
/* AFW Visual Studio — shared DataTable pattern candidate.
   Uses existing Emersion tokens; only table-local density changes. */
.ld-panel.ld-dt{padding:0;overflow:hidden;background:var(--paper);border-color:var(--line)}
.ld-dt-heading{display:flex;align-items:center;justify-content:space-between;gap:18px;flex-wrap:wrap;padding:19px 21px 17px;border-bottom:1px solid var(--line);background:linear-gradient(135deg,var(--paper),var(--panel2))}
.ld-dt-eyebrow{display:block;margin-bottom:5px;font-size:9px;letter-spacing:.085em;font-weight:700;color:var(--orange-deep)}
.ld-dt-eyebrow span{color:var(--quiet);padding:0 4px}
.ld-dt-heading h3{font-size:16px;letter-spacing:-.025em;font-weight:700;line-height:1.4;margin:0;color:var(--ink-strong)}
.ld-dt-heading p{font-size:10px;color:var(--muted);margin:5px 0 0;line-height:1.5}
.ld-dt-heading-actions{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.ld-dt-heading-actions .ld-button{white-space:nowrap}
.ld-dt .ld-toolbar{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin:0;padding:13px 20px;border-bottom:1px solid var(--line);background:var(--paper)}
.ld-dt-search{flex:1 1 235px;min-width:160px;position:relative}
.ld-dt-search-icon{position:absolute;left:11px;top:50%;transform:translateY(-50%);font-size:19px;line-height:1;color:var(--quiet);pointer-events:none;z-index:1}
.ld-dt-search input{width:100%;height:var(--control-h);border:1px solid var(--line2);border-radius:7px;background:var(--paper);color:var(--ink);padding:0 12px 0 34px;min-width:0;font-size:10.5px}
.ld-dt-search input:focus-visible{outline:2px solid var(--orange);outline-offset:1px}
.ld-dt .ld-toolbar .ld-filter-combo{flex:0 1 150px;min-width:127px}
.ld-dt .ld-toolbar .ld-filter-combo .ld-combo-control{min-width:0}
.ld-dt .ld-toolbar .ld-count{font-size:10px;color:var(--muted);font-weight:600;white-space:nowrap}
.ld-dt-toolbar-spacer{flex:1 1 8px}
.ld-dt-meta{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;padding:8px 20px;background:var(--panel2);border-bottom:1px solid var(--line);font-size:9px;color:var(--muted)}
.ld-dt-mobilehint{display:none}
.ld-dt-density{display:flex;align-items:center;gap:5px}
.ld-dt-density>span{margin-right:5px;font-weight:600}
.ld-dt .ld-dt-toggle{font:inherit;font-size:9px;min-height:26px;border:1px solid transparent;border-radius:6px;background:transparent;padding:4px 9px;color:var(--muted)}
.ld-dt .ld-dt-toggle[aria-pressed=true]{background:var(--paper);border-color:var(--line2);color:var(--ink-strong);font-weight:700;box-shadow:0 1px 2px #00000008}
.ld-dt .ld-dt-toggle:focus-visible{outline:2px solid var(--orange)}
.ld-tablewrap{overflow-x:auto;min-width:0;max-width:100%;scrollbar-color:var(--line2) transparent}
.ld-tablewrap:focus-visible{outline:2px solid var(--orange);outline-offset:-2px}
.ld-table{width:100%;min-width:630px;border-collapse:collapse;table-layout:auto;text-align:left}
.ld-table th{background:var(--paper);color:var(--muted);font-size:9px;font-weight:700;letter-spacing:.035em;text-transform:uppercase;border-bottom:1px solid var(--line);padding:10px 14px;white-space:nowrap}
.ld-table td{padding:11px 14px;border-bottom:1px solid var(--line);font-size:10.5px;color:var(--ink);vertical-align:middle;line-height:1.5}
.ld-table td strong{font-size:10.5px;font-weight:650;color:var(--ink-strong)}
.ld-table td .ld-dt-id{font-size:9px;display:block;margin-top:3px;color:var(--muted);font-variant-numeric:tabular-nums}
.ld-table tr:last-child td{border-bottom:0}
.ld-table tbody tr:hover{background:var(--hover)}
.ld-table tbody tr[data-selected=true]{background:var(--selected)}
.ld-table .ld-dt-selectcol{width:43px;padding-left:17px;padding-right:7px}
.ld-table td:first-child{width:43px;padding-left:17px;padding-right:7px}
.ld-table .ld-dt-actioncol{text-align:right}
.ld-table td:last-child{text-align:right;white-space:nowrap}
.ld-table input[type=checkbox]{width:16px;height:16px;accent-color:var(--orange)}
.ld-table .ld-dt-sort{display:inline-flex;align-items:center;gap:6px;margin:-5px -7px;padding:5px 7px;border:0;border-radius:5px;background:transparent;color:inherit;font:inherit;font-size:inherit;font-weight:inherit;letter-spacing:inherit;text-transform:inherit;min-height:26px}
.ld-table .ld-dt-sort:hover{background:var(--hover);color:var(--ink-strong)}
.ld-table .ld-dt-sort[aria-pressed=true]{color:var(--ink-strong)}
.ld-table [data-ld-sort-arrow]{font-size:12px;color:var(--orange-deep)}
.ld-dt[data-ld-table-density=compact] .ld-table td{padding-top:9px;padding-bottom:9px}
.ld-dt[data-ld-table-density=comfort] .ld-table td{padding-top:17px;padding-bottom:17px}
.ld-dt[data-ld-table-density=comfort] .ld-table td strong{font-size:11px}
.ld-dt .ld-dt-empty td{text-align:center;padding:38px 14px;color:var(--muted)}
.ld-dt-empty strong{font-size:12px;display:block;color:var(--ink-strong)}
.ld-dt-empty span{display:block;margin-top:6px;font-size:10px}
.ld-dt-bottom{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;padding:11px 19px;border-top:1px solid var(--line);background:var(--panel2)}
.ld-dt-bulk,.ld-dt-paging{display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.ld-dt-bulk strong{font-size:10px;color:var(--ink-strong)}
.ld-dt-bulk button{min-height:27px}
.ld-dt-paging{font-size:9.5px;color:var(--muted)}
.ld-dt-paging label{font-size:9px}
.ld-dt-paging select{height:29px;padding:0 7px;border:1px solid var(--line2);border-radius:6px;background:var(--paper);color:var(--ink);min-width:58px}
.ld-dt-range{margin-right:5px;font-variant-numeric:tabular-nums;white-space:nowrap}
.ld-dt .ld-dt-page{width:28px;height:28px;min-height:28px;display:grid;place-items:center;padding:0;border:1px solid var(--line2);border-radius:6px;background:var(--paper);color:var(--ink-strong);font-size:18px}
.ld-dt .ld-dt-page:disabled{opacity:.4;cursor:default}
.ld-dt-page-no{min-width:30px;text-align:center;font-variant-numeric:tabular-nums}
.ld-dt-sr{position:absolute;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;width:1px;height:1px}
@media(max-width:730px){
 .ld-dt-heading{padding:15px 13px;gap:11px}
 .ld-dt-heading-actions{width:100%}
 .ld-dt .ld-toolbar{padding:11px 12px;gap:8px}
 .ld-dt-search{flex:1 0 100%}
 .ld-dt .ld-toolbar .ld-filter-combo{flex:1 1 132px}
 .ld-dt-toolbar-spacer{display:none}
 .ld-dt-meta{padding:8px 12px}
 .ld-dt-meta-note{display:none}
 .ld-dt-mobilehint{display:block;width:100%;font-size:9px;color:var(--muted)}
 .ld-dt-bottom{padding:10px 12px}
 .ld-dt-paging{width:100%;justify-content:space-between;gap:5px}
}

/* v0.22.0 — one table, configurable controls and simulated asynchronous adapter. */
.ld-dt [hidden]{display:none!important}
.ld-dt-demo{padding:10px 20px;border-bottom:1px solid var(--line);background:color-mix(in srgb,var(--panel2) 58%,var(--paper));font-size:9.5px}
.ld-dt-source-controls{display:flex;align-items:center;flex-wrap:wrap;gap:11px}
.ld-dt-source-controls label{display:flex;align-items:center;gap:7px;color:var(--muted);font-weight:600}
.ld-dt-source-controls select{height:31px;background:var(--paper);color:var(--ink);border:1px solid var(--line2);border-radius:7px;padding:0 10px;font-size:10px;max-width:220px}
.ld-dt-source-controls input{accent-color:var(--orange)}
.ld-dt-demo details{margin-top:9px;border-top:1px dashed var(--line);padding-top:7px}
.ld-dt-demo summary{font-weight:600;color:var(--orange-deep);cursor:pointer;list-style-position:inside}
.ld-dt-options{display:flex;gap:7px 14px;flex-wrap:wrap;padding:11px 0 5px}
.ld-dt-options label{display:flex;align-items:center;gap:5px;cursor:pointer;white-space:nowrap;color:var(--ink);font-size:9.5px}
.ld-dt-options input{accent-color:var(--orange)}
.ld-dt-alert{display:flex;align-items:center;gap:12px;justify-content:space-between;padding:10px 19px;font-size:10px;line-height:1.5;border-bottom:1px solid var(--line);background:var(--tint);color:var(--ink)}
.ld-dt-alert[data-state="error"]{background:var(--red-bg);color:var(--red)}
.ld-dt-alert[data-state="loading"]{background:var(--panel2);color:var(--muted)}
.ld-dt [data-ld-unpaged]{font-size:9px;line-height:1.5;color:var(--muted);margin-left:auto}
.ld-dt .ld-toolbar [data-ld-part="filters"],.ld-dt .ld-toolbar [data-ld-part="sort"]{display:block;flex:0 1 155px;min-width:130px}
.ld-dt .ld-toolbar [data-ld-part="filters"] .ld-filter-combo,.ld-dt .ld-toolbar [data-ld-part="sort"] .ld-filter-combo{width:100%}
.ld-dt .ld-table [data-ld-plain-label]{font-weight:700}
@media(max-width:730px){
 .ld-dt-demo{padding:10px 12px}
 .ld-dt-source-controls{align-items:stretch}
 .ld-dt-source-controls>label:first-child{flex-wrap:wrap}
 .ld-dt .ld-toolbar [data-ld-part="filters"],.ld-dt .ld-toolbar [data-ld-part="sort"]{flex:1 1 128px;min-width:120px}
 .ld-dt-alert{padding:10px 12px}
}

/* v0.32 (B2) — configurable columns, bulk bar, permissioned row actions, stable layout, sticky header.
   Everything below is scoped to opt-in attributes; the original gallery table is unchanged. */
.ld-dt[data-ld-bar] .ld-dt-bulk{display:none}
.ld-dt-bulkbar{display:flex;align-items:center;gap:9px;flex-wrap:wrap;padding:8px 20px;border-bottom:1px solid var(--line);background:var(--panel2);font-size:10px;color:var(--ink);min-height:44px}
.ld-dt-bulk-text{font-weight:650;color:var(--ink-strong);margin-right:2px}
.ld-dt-bulk-actions{display:inline-flex;gap:7px;flex-wrap:wrap}
.ld-dt-bulkbar [data-ld-bulk-reset]{margin-left:auto}
.ld-dt-link{color:var(--orange-deep);text-decoration:none;font-weight:600}
.ld-dt-link:hover{text-decoration:underline}
.ld-dt-link:focus-visible{outline:2px solid var(--orange);outline-offset:2px;border-radius:3px}
.ld-table td:last-child .afw-dt-acts{justify-content:flex-end}
.afw-dt-acts{display:flex;gap:4px;flex-wrap:nowrap;align-items:center}
.afw-dt-actwrap{position:relative;display:inline-flex}
.afw-dt-act{display:inline-flex;align-items:center;gap:5px;font:inherit;font-size:9.5px;font-weight:650;min-height:26px;padding:0 8px;border:1px solid var(--line2);border-radius:6px;background:var(--paper);color:var(--ink);cursor:pointer;white-space:nowrap}
.afw-dt-act .i{width:12px;height:12px}
.afw-dt-act:hover{background:var(--hover)}
.afw-dt-act:focus-visible{outline:2px solid var(--orange);outline-offset:1px}
.afw-dt-act.is-danger{color:var(--red)}
.afw-dt-act[aria-disabled="true"]{opacity:.5;cursor:not-allowed;background:var(--panel2)}
.afw-dt-tip{position:absolute;right:calc(100% + 6px);top:50%;transform:translateY(-50%);z-index:5;display:none;white-space:nowrap;background:var(--brown);color:#fff5eb;font-size:9.5px;line-height:1.4;padding:5px 8px;border-radius:6px;box-shadow:var(--shadow-float);pointer-events:none}
.afw-dt-actwrap:hover .afw-dt-tip,.afw-dt-act:focus-visible+.afw-dt-tip{display:block}
.ld-dt-link-cell{white-space:nowrap}
/* stable layout: the notice slot is reserved and the table region keeps its height while loading / empty / error */
.ld-dt[data-ld-stable][data-ld-remote="true"] .ld-dt-alert[hidden]{display:flex!important;visibility:hidden}
.ld-dt[data-ld-stable] .ld-tablewrap{min-height:min(var(--ld-dt-minh,0px),var(--ld-dt-maxh,560px))}
.ld-dt[data-ld-busy] tbody{opacity:.55;transition:opacity .12s}
.ld-dt[data-ld-stable] .ld-table{min-width:720px}
.ld-dt[data-ld-stable] .ld-table td{white-space:nowrap}
.ld-dt[data-ld-sticky]{--ld-dt-maxh:min(68vh,560px)}
.ld-dt[data-ld-sticky] .ld-tablewrap{max-height:var(--ld-dt-maxh);overflow:auto}
.ld-dt[data-ld-sticky] .ld-table thead th{position:sticky;top:0;z-index:3;box-shadow:inset 0 -1px 0 var(--line)}
.ld-dt .ld-dt-empty .afw-state,.ld-dt .ld-dt-error .afw-state,.ld-dt .ld-dt-loading .afw-state{max-width:460px;margin:8px auto;text-align:left;white-space:normal}
.ld-dt .ld-dt-loading td,.ld-dt .ld-dt-error td{padding:20px 14px}
@media(prefers-reduced-motion:reduce){.ld-dt[data-ld-busy] tbody{transition:none}}
@media(max-width:730px){
 .ld-dt-bulkbar{padding:8px 12px}
 .ld-dt[data-ld-stable] .ld-table{min-width:640px}
 .afw-dt-tip{right:auto;left:0;top:calc(100% + 4px);transform:none}
}
.ld-dt[data-ld-stable] .ld-table td:first-child:not(:has([data-ld-check])){width:auto;padding-left:14px;padding-right:14px}
.ld-dt[data-ld-stable] .ld-table td:last-child:not(:has(.afw-dt-acts)){text-align:left}

/* R1 (AFW-DS-02, bod 6): horizontal-scroll affordance. The scroll host is NOT the scroller (so the shadows stay put);
   data-more-start / data-more-end are set by data-table.js on scroll and resize. Row actions are never clipped silently. */
.ld-tablescroll{position:relative;min-width:0;max-width:100%}
.ld-tablescroll::before,.ld-tablescroll::after{content:"";position:absolute;top:0;bottom:0;width:38px;z-index:4;pointer-events:none;opacity:0;transition:opacity .15s;display:flex;align-items:center;font-size:20px;line-height:1;font-weight:700;color:var(--orange-deep)}
.ld-tablescroll::before{left:0;content:"‹";justify-content:flex-start;padding-left:7px;background:linear-gradient(to right,color-mix(in srgb,var(--ink) 22%,transparent),color-mix(in srgb,var(--ink) 6%,transparent) 55%,transparent)}
.ld-tablescroll::after{right:0;content:"›";justify-content:flex-end;padding-right:7px;background:linear-gradient(to left,color-mix(in srgb,var(--ink) 22%,transparent),color-mix(in srgb,var(--ink) 6%,transparent) 55%,transparent)}
.ld-tablescroll[data-more-start]::before,.ld-tablescroll[data-more-end]::after{opacity:1}
@media(prefers-reduced-motion:reduce){.ld-tablescroll::before,.ld-tablescroll::after{transition:none}}
.ld-smallnote{font-size:9.5px;line-height:1.7;color:var(--muted);margin:9px 0}
.ld-layergrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}
.ld-layer-card{display:flex;gap:10px;align-items:start;border:1px solid var(--line);background:linear-gradient(145deg,var(--paper),var(--panel2));border-radius:9px;padding:12px}
.ld-layer-card .icon{width:35px;height:35px;display:grid;place-items:center;flex:none;color:var(--orange-deep);font-size:17px;border-radius:9px;background:var(--tint)}
.ld-layer-card strong{display:block;font-size:10px;color:var(--ink)}.ld-layer-card p{margin:4px 0 8px;font-size:9px;color:var(--muted);line-height:1.6}
.ld-layer-card button{margin-top:3px}
.ld-footer{display:flex;align-items:center;justify-content:space-between;gap:9px;flex-wrap:wrap;padding-top:12px;border-top:1px solid var(--line)}
.ld-footer p{font-size:9px;color:var(--muted);margin:0}
.ld-screen-links{display:flex;gap:8px;flex-wrap:wrap}
.ld-screen-links button{font-size:9px}
@media(max-width:1250px){.ld-launch-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:730px){.ld-head{padding:17px}.ld-head h2{font-size:19px}.ld-head-row{align-items:start}.ld-launch-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.ld-launch-card{padding:8px;min-height:75px}.ld-launch-card small{font-size:8px}.ld-release-panel{flex-direction:column}.ld-gallery-header{padding:15px}.ld-gallery-main{padding:12px}.ld-grid,.ld-form-grid,.ld-layergrid{grid-template-columns:1fr}.ld-panel.wide,.ld-form-grid .wide{grid-column:auto}}
/* Living Demo v0.2 — catalogue as purposeful information architecture */
.side-nav .side-link[hidden]{display:none!important}
.ld-scope-note{display:flex;align-items:center;flex-wrap:wrap;gap:9px;background:linear-gradient(140deg,var(--selected),var(--paper));border:1px solid color-mix(in srgb,var(--orange) 22%,var(--line));border-radius:10px;padding:12px 14px;margin:10px 0;color:var(--ink)}
.ld-scope-note .ld-scope-kicker{font-size:9px;letter-spacing:.09em;font-weight:800;color:var(--orange-deep)}
.ld-scope-note strong{font-size:10px;color:var(--ink-strong)}
.ld-scope-note>span:last-child{font-size:9.5px;color:var(--muted);line-height:1.55;flex-basis:100%}
.ld-demo-divider{padding:15px 0 10px;border-top:1px solid var(--line);margin-top:25px}
.ld-demo-divider span{font-size:9px;letter-spacing:.1em;color:var(--orange-deep);font-weight:750}
.ld-demo-divider h2{font-size:15px;letter-spacing:-.03em;color:var(--ink-strong);margin:5px 0}
.ld-demo-divider p{font-size:9.5px;color:var(--muted);margin:0}
.ld-launch-icon svg.i{width:17px;height:17px;display:block}
.ld-gallery-header{min-height:90px}
.ld-catalog-index{display:flex;flex-direction:column;gap:16px}
.ld-catalog-method{display:flex;flex-direction:column;gap:6px;padding:12px 14px;border-radius:10px;background:linear-gradient(125deg,var(--tint),var(--panel2));border:1px solid var(--line);font-size:10px;color:var(--muted);line-height:1.7}
.ld-catalog-method strong{font-size:10.5px;color:var(--ink)}
.ld-catalog-group{padding-bottom:14px;border-bottom:1px solid var(--line)}
.ld-catalog-group:last-of-type{border-bottom:0}
.ld-catalog-group-head{display:flex;flex-direction:column;gap:4px;margin-bottom:10px}
.ld-catalog-group h3{font-size:11.5px;letter-spacing:-.02em;color:var(--ink-strong);margin:0}
.ld-catalog-group p{font-size:9.5px;color:var(--muted);margin:0}
.ld-pattern-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}
.ld-pattern-card{border:1px solid var(--line);border-radius:10px;background:linear-gradient(125deg,var(--paper),var(--panel2));display:flex;gap:10px;align-items:flex-start;text-align:left;padding:13px 12px;min-width:0;min-height:93px;color:var(--ink)}
.ld-pattern-card:hover{border-color:var(--gold2);background:var(--hover);box-shadow:var(--shadow-card)}
.ld-pattern-card:focus-visible,.ld-breadcrumb:focus-visible{outline:2px solid var(--orange);outline-offset:2px}
.ld-pattern-symbol{width:35px;height:35px;flex:none;display:grid;place-items:center;border-radius:9px;background:linear-gradient(135deg,#fbe9d4,#f7c590);color:#9e531b;border:1px solid #eecb9f}
:root[data-theme=dark] .ld-pattern-symbol{background:#5a3a25;color:#efad7a;border-color:#79533b}
.ld-pattern-symbol .i{width:17px;height:17px;display:block}
.ld-pattern-text{flex:1;min-width:0;display:flex;flex-direction:column;align-items:flex-start;gap:5px}
.ld-pattern-text strong{font-size:10.5px;color:var(--ink-strong)}
.ld-pattern-text small{font-size:9px;line-height:1.5;color:var(--muted)}
.ld-pattern-status{color:var(--orange-deep);font-size:8px;font-weight:750;letter-spacing:.07em;line-height:1.5}
.ld-pattern-link{font-size:16px;color:var(--gold2);flex:none}
.ld-catalog-foot{font-size:9.5px;color:var(--muted);border-top:1px solid var(--line);padding-top:11px;line-height:1.7}
.ld-review-label,.ld-pattern-status{white-space:normal}
.ld-breadcrumb{border:1px solid var(--line2);background:var(--paper);color:var(--orange-deep);font-size:9.5px;font-weight:650;border-radius:7px;padding:7px 10px;margin-bottom:13px}
.ld-breadcrumb:hover{background:var(--hover)}
.ld-example-stage{border:1px solid var(--line);border-radius:11px;overflow:visible;margin-bottom:14px;background:var(--paper)}
.ld-example-stage-head{display:flex;justify-content:space-between;flex-wrap:wrap;gap:8px;align-items:center;padding:11px 13px;border-bottom:1px solid var(--line);background:linear-gradient(130deg,var(--panel2),var(--paper));border-radius:10px 10px 0 0}
.ld-example-stage-head strong{font-size:11px;color:var(--ink-strong)}
.ld-example-stage-head span{font-size:8.5px;font-weight:700;color:var(--muted);letter-spacing:.06em}
.ld-example-surface{padding:17px;min-height:96px}
.ld-guidance{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:12px 0 15px}
.ld-guidance article{border:1px solid var(--line);border-radius:10px;background:linear-gradient(140deg,var(--paper),var(--panel2));padding:12px}
.ld-guidance h3{font-size:10px;color:var(--ink-strong);margin:0 0 6px}
.ld-guidance p{font-size:9.5px;color:var(--muted);line-height:1.7;margin:0}
.ld-gallery-win .d-win-body{overflow-y:auto;scrollbar-gutter:stable}
.ld-gallery-win .ld-gallery{min-height:100%}
@media(max-width:720px){
 .ld-pattern-grid,.ld-guidance{grid-template-columns:1fr}
 .ld-pattern-card{min-height:77px}
 .ld-scope-note{align-items:flex-start;flex-direction:column}
}
/* AFW Visual Studio — API workbench, only within demo windows */
.api-studio {--api-border:var(--line);height:100%;display:flex;flex-direction:column;min-height:0}
.api-studio .ld-gallery-header{flex:0 0 auto;padding-bottom:13px}
.api-header-meta{display:flex;flex-wrap:wrap;gap:6px;justify-content:flex-end;align-items:center}
.api-pill{font-size:9px;font-weight:650;border:1px solid var(--line);border-radius:100px;padding:6px 9px;color:var(--ink);background:var(--panel2)}
.api-studio-body{display:grid;grid-template-columns:225px minmax(0,1fr);gap:0;min-height:0;flex:1;overflow:hidden;border:1px solid var(--line);border-radius:13px;background:var(--panel)}
.api-studio-side{background:var(--panel2);border-right:1px solid var(--line);overflow-y:auto;padding:14px 10px;scrollbar-width:thin}
.api-nav-title{font-size:9px;color:var(--muted);font-weight:800;letter-spacing:.09em;margin:10px 7px 8px}
.api-nav-button{width:100%;text-align:left;display:block;border:1px solid transparent;background:transparent;border-radius:8px;padding:10px 11px;color:var(--ink);font:inherit;font-size:11px;font-weight:600;margin:2px 0;cursor:pointer}
.api-nav-button:hover{background:var(--hover)}
.api-nav-button.selected{background:var(--paper);border-color:var(--gold2);box-shadow:0 2px 8px #4c2c1420}
.api-search{width:calc(100% - 10px);margin:3px 5px 8px;border:1px solid var(--line2);background:var(--paper);padding:8px 9px;border-radius:8px;font:inherit;font-size:10px;color:var(--ink)}
.api-inventory-row{padding:8px 7px;border-bottom:1px solid var(--line);display:flex;gap:8px;align-items:flex-start;justify-content:space-between}
.api-inventory-row[hidden]{display:none}
.api-inventory-row strong{display:block;font-size:10px;font-weight:700;color:var(--ink)}
.api-inventory-row small{display:block;font-size:9px;color:var(--muted);line-height:1.45;margin-top:3px}
.api-inventory-row em{font-size:8px;white-space:nowrap;font-style:normal;color:var(--orange-deep)}
.api-workbench{min-width:0;min-height:0;overflow:auto;padding:20px 22px 25px;scrollbar-width:thin}
.api-workbench-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}
.api-workbench-heading small{font-size:9px;letter-spacing:.08em;color:var(--orange-deep);font-weight:800}
.api-workbench-heading h3{font-size:19px;letter-spacing:-.035em;margin:5px 0 0;color:var(--ink)}
.api-draft{font-size:8px;color:var(--muted);padding:6px 9px;border:1px solid var(--line);border-radius:6px;text-align:right;white-space:nowrap}
.api-description{font-size:11px;color:var(--muted);margin:9px 0 17px}
.api-controls{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;background:var(--panel2);padding:13px;border:1px solid var(--line);border-radius:10px;margin-bottom:19px}
.api-control{min-width:0;display:flex;flex-direction:column;gap:6px;font-size:10px;color:var(--muted);font-weight:650}
.api-control .ld-combo{min-width:0}
.api-checks{grid-column:1/-1;display:flex;gap:16px;flex-wrap:wrap;font-size:10px;color:var(--ink)}
.api-checks label{display:flex;gap:5px;align-items:center;cursor:pointer}
.api-preview-label,.api-code-label{display:flex;justify-content:space-between;align-items:center;gap:8px;margin:17px 0 8px;font-size:10px}
.api-preview-label strong,.api-code-label strong{letter-spacing:.06em;font-weight:800}
.api-preview-label small,.api-code-label span{color:var(--muted);font-size:9px}
.api-preview{min-height:112px;border:1px dashed var(--gold2);background:var(--paper);border-radius:10px;padding:20px;display:flex;align-items:center;justify-content:flex-start;overflow:auto}
.api-preview>.api-tags{display:flex;flex-wrap:wrap;gap:8px}
.api-preview>.api-stack{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.api-preview>.api-stack .ld-field{width:min(330px,100%)}
.api-preview .d-menu-action{max-width:350px}
.api-preview>.ld-panel{width:100%;max-width:460px}
.api-code{white-space:pre-wrap;overflow-wrap:anywhere;font:10px/1.6 ui-monospace,SFMono-Regular,Consolas,monospace;padding:14px 15px;border-radius:9px;color:var(--ink);background:var(--panel2);border:1px solid var(--line);margin:0;min-height:62px}
.api-footnote{margin:11px 0 0;font-size:10px;line-height:1.5;color:var(--muted)}
.api-studio-footer{display:flex;justify-content:space-between;gap:8px;padding:12px 3px 0;color:var(--muted);font-size:9px}
.api-matrix{display:flex;flex-direction:column;gap:9px;width:100%}
.api-matrix-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.api-matrix-row strong{width:70px;font-size:10px}
@media(max-width:760px){.api-studio .ld-gallery-header{display:block}.api-header-meta{justify-content:flex-start;margin-top:10px}.api-studio-body{grid-template-columns:1fr;overflow:auto}.api-studio-side{border-right:none;border-bottom:1px solid var(--line);max-height:190px}.api-nav-button{display:inline-block;width:auto;margin:3px;padding:7px 9px}.api-inventory{display:none}.api-workbench{overflow:visible;padding:15px}.api-controls{grid-template-columns:repeat(2,minmax(0,1fr))}.api-workbench-heading{flex-wrap:wrap}.api-draft{white-space:normal}.api-studio-footer{flex-wrap:wrap}}


/* Public entry point uses the same semantic button contract as API Studio. */
.api-entry-bar{display:flex;align-items:center;justify-content:space-between;gap:18px;margin:10px 0 14px;padding:14px 17px;background:var(--panel);border:1px solid var(--line);border-radius:12px;box-shadow:0 2px 14px #412f2012}
.api-entry-bar div{display:flex;flex-direction:column;gap:3px;min-width:0}
.api-entry-bar small{font-size:9px;letter-spacing:.09em;color:var(--orange-deep);font-weight:800}
.api-entry-bar strong{font-size:12px;font-weight:750;color:var(--ink)}
.api-entry-bar span{font-size:10px;color:var(--muted);line-height:1.5}
.api-entry-bar button{flex:none}
@media(max-width:730px){.api-entry-bar{align-items:flex-start;flex-direction:column}.api-entry-bar button{width:100%}}
/* Shared semantic toast contract — info never impersonates success. */
.d-toast{border-left-color:var(--orange);background:linear-gradient(120deg,var(--tint),var(--paper) 78%);max-width:min(390px,calc(100vw - 24px));min-width:0}
.d-toast>svg.i{width:17px;height:17px;flex:0 0 17px;color:var(--orange-deep)}
.d-toast[data-tone=success]{border-left-color:var(--green);background:linear-gradient(115deg,var(--green-bg),var(--paper) 75%)}
.d-toast[data-tone=success]>svg.i{color:var(--green)}
.d-toast[data-tone=warning]{border-left-color:var(--warn);background:linear-gradient(115deg,var(--warn-bg),var(--paper) 75%)}
.d-toast[data-tone=warning]>svg.i{color:var(--warn)}
.d-toast[data-tone=error]{border-left-color:var(--red);background:linear-gradient(115deg,var(--red-bg),var(--paper) 75%)}
.d-toast[data-tone=error]>svg.i{color:var(--red)}
@media(max-width:720px){.d-toast{right:12px;bottom:70px}}
.layer-form-tabs{display:flex;flex:none;gap:5px;align-items:stretch;overflow-x:auto;overscroll-behavior:contain;scrollbar-width:thin;padding:0 18px;background:linear-gradient(120deg,var(--panel2),var(--paper));border-bottom:1px solid var(--line);min-height:47px}
.layer-form-tabs [role=tab]{display:inline-flex;align-items:center;justify-content:center;white-space:nowrap;font:inherit;font-size:10px;font-weight:600;color:var(--muted);padding:12px 13px 10px;background:transparent;border:0;border-bottom:3px solid transparent}
.layer-form-tabs [role=tab]:hover{color:var(--ink);background:var(--hover)}
.layer-form-tabs [role=tab][aria-selected=true]{color:var(--orange-deep);border-bottom-color:var(--orange);font-weight:750}
.layer-form-tabs [role=tab]:focus-visible{outline:2px solid var(--orange);outline-offset:-3px}
@media(max-width:720px){
.layer-form-tabs{padding:0 8px;min-height:44px}
.layer-form-tabs [role=tab]{font-size:9px;padding:11px 10px 9px}
}

/* R1 (AFW-DS-02, bod 6): form-modal tab strip is a scroller; the host gets data-more-start/end from form-modal.js. */
.layer-form-tabs-host{position:relative;flex:none;min-width:0}
.layer-form-tabs-host::before,.layer-form-tabs-host::after{content:"";position:absolute;top:0;bottom:1px;width:26px;z-index:2;pointer-events:none;opacity:0;transition:opacity .15s}
.layer-form-tabs-host::before{left:0;background:linear-gradient(to right,color-mix(in srgb,var(--ink) 20%,transparent),transparent)}
.layer-form-tabs-host::after{right:0;background:linear-gradient(to left,color-mix(in srgb,var(--ink) 20%,transparent),transparent)}
.layer-form-tabs-host[data-more-start]::before,.layer-form-tabs-host[data-more-end]::after{opacity:1}
/* AFW Living Demo 0.3: canonical tabbed form modal (candidate). Header, tabs and
   footer do not scroll. Only .layer-form-scroll scrolls. */
.layer-shell{position:relative}
.layer-form-scroll{flex:1;min-height:0;overflow-y:auto;padding:22px 24px 32px;overscroll-behavior:contain;scrollbar-gutter:stable}
.layer-form-scroll [role=tabpanel][hidden]{display:none!important}
.layer-form-scroll [role=tabpanel]>.layer-label{margin:0 0 7px}
.layer-form-scroll [role=tabpanel]>h2{font-size:18px}
.layer-form-scroll [role=tabpanel]>p{max-width:640px}
.layer-form-scroll .layer-input{max-width:650px}
.layer-form-scroll textarea,.layer-form-scroll select,.layer-form-local input{display:block;width:100%;padding:9px 11px;max-width:100%;background:var(--paper);color:var(--ink);border:1px solid var(--line2);border-radius:8px;font:inherit;font-size:10.5px}
.layer-form-scroll textarea{resize:vertical;min-height:82px;line-height:1.6}
.layer-form-scroll select{height:var(--control-h);padding:0 9px}
.layer-form-scroll input:focus-visible,.layer-form-scroll textarea:focus-visible,.layer-form-scroll select:focus-visible{outline:2px solid var(--orange);outline-offset:1px}
.layer-form-scroll input[aria-invalid=true]{border-color:var(--red);box-shadow:0 0 0 2px color-mix(in srgb,var(--red) 11%,transparent)}
.layer-form-help{font-size:9px;line-height:1.55;color:var(--muted)}
.layer-form-help.invalid{color:var(--red)}
.layer-form-hint{font-size:10px;line-height:1.7;border-radius:8px;border:1px solid var(--line);background:var(--panel2);padding:12px 14px;color:var(--muted);max-width:650px}
.layer-form-toggle{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 12px;border-bottom:1px solid var(--line);min-height:51px}
.layer-form-toggle:nth-of-type(even){background:color-mix(in srgb,var(--panel2) 52%,transparent)}
.layer-form-toggle strong{display:block;color:var(--ink);font-size:10px}
.layer-form-toggle small{display:block;color:var(--muted);font-size:9px;margin-top:3px}
.layer-form-toggle input{width:17px;height:17px;accent-color:var(--orange);flex:none}
.layer-form-local{max-width:610px;border:1px solid var(--line);border-radius:10px;padding:15px;background:var(--panel2);display:flex;flex-direction:column;gap:8px;margin-top:15px}
.layer-form-local>label{font-size:10px;font-weight:700;color:var(--ink)}
.layer-form-local-row{display:flex;gap:9px;align-items:center}
.layer-form-local-row input{flex:1;min-width:0;min-height:var(--control-h)}
.layer-form-local-row button{white-space:nowrap}
.layer-form-local small{font-size:9px;line-height:1.6;color:var(--muted)}
.layer-form-rule-list{font-size:10px;line-height:1.85;color:var(--ink);margin:13px 0;padding-left:25px}
.layer-form-rule-list li{padding:4px 0}
.layer-form-footer{position:relative;z-index:1;min-height:66px;padding:12px 23px;background:linear-gradient(120deg,var(--panel2),var(--paper));box-shadow:0 -4px 12px #26130708;flex-wrap:wrap}
.layer-form-status{font-size:9.5px;color:var(--muted);line-height:1.5;min-width:0}
.layer-form-status.changed{color:var(--orange-deep);font-weight:750}
.layer-form-actions{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:9px;margin-left:auto}
.layer-form-footer .btn{min-height:var(--control-h)}
.layer-form-guard[hidden]{display:none!important}
.layer-form-guard{position:absolute;inset:0;z-index:40;display:flex;justify-content:center;align-items:center;padding:16px;background:#170e08b9;backdrop-filter:blur(4px)}
.layer-form-guard-card{width:min(465px,100%);padding:23px;border:1px solid var(--line2);background:var(--paper);color:var(--ink);border-radius:13px;box-shadow:var(--shadow-float)}
.layer-form-guard-card h2{font-size:18px;color:var(--ink-strong);margin:5px 0 10px}
.layer-form-guard-card p{font-size:10.5px;line-height:1.75;color:var(--muted);margin:0 0 16px}
.layer-form-guard-card .btn.danger{background:linear-gradient(125deg,#c25d55,#9f343e);color:#fffaf6;border-color:#a64343}
.layer-form-guard-card .btn.danger:hover{background:linear-gradient(125deg,#d16b62,#af3e46);color:#fffaf6}
@media(max-width:720px){
.layer-form-scroll{padding:14px 15px 22px;scrollbar-gutter:auto}
.layer-form-footer{padding:10px 13px;gap:9px;min-height:63px}
.layer-form-local-row{flex-wrap:wrap}
.layer-form-local-row .btn{flex:1}
.layer-form-guard-card{padding:18px}
}

/* R1 (AFW-DS-02, bod 5): the modal's metrics (field gap 7 px, margin 13 px, padding, footer) are the locked v0.30.0 look
   (shell-baseline-compare scene "layer"), so geometry is NOT restyled here; R1 adds behaviour only (focus trap, Enter submit,
   error at the field + live status, tab-strip edge shadow). Any visual re-spacing of the modal needs a director decision. */
.layer-form-scroll{overscroll-behavior:contain}
/* Select component styles; reads shared design tokens. */
.ld-combo-trigger:focus-visible{outline:2px solid var(--orange);outline-offset:2px}
.ld-combo{position:relative;min-width:0}
.ld-combo-control{border:1px solid var(--line2);border-radius:8px;display:flex;align-items:center;gap:0;background:var(--paper);height:var(--control-h)}
.ld-combo:focus-within .ld-combo-control{border-color:var(--orange);box-shadow:var(--focus)}
.ld-combo-trigger{display:flex;align-items:center;min-width:0;flex:1;height:100%;border:0;background:transparent;color:var(--ink);font-size:10.5px;text-align:left;padding:0 10px}
.ld-combo-trigger .placeholder{color:var(--muted)}
.ld-combo-clear,.ld-combo-expand{border:0;background:transparent;width:30px;height:30px;flex:none;display:grid;place-items:center;color:var(--muted);font-size:16px}
.ld-combo-clear:hover,.ld-combo-expand:hover{background:var(--hover);color:var(--ink)}
.ld-combo-clear[hidden]{display:none}
.ld-combo-popup{display:none;position:absolute;left:0;right:0;top:calc(100% + 5px);z-index:1000;background:var(--paper);border:1px solid var(--line2);border-radius:9px;padding:8px;box-shadow:var(--shadow-float);min-width:190px}
.ld-combo.open .ld-combo-popup{display:block}
.ld-combo-popup>input{height:31px;border:1px solid var(--line2);background:var(--paper);border-radius:6px;padding:0 8px;color:var(--ink);font-size:10px;width:100%;outline:0}
.ld-combo-options{max-height:155px;overflow-y:auto;margin-top:7px;overscroll-behavior:contain}
.ld-combo-option{display:flex;width:100%;text-align:left;align-items:center;min-height:31px;background:transparent;border:1px solid transparent;border-radius:6px;color:var(--ink);font-size:10px;padding:5px 9px}
.ld-combo-option:hover,.ld-combo-option:focus{background:var(--hover);border-color:var(--line)}
.ld-combo-option[aria-selected=true]{color:var(--orange-deep);background:var(--selected);font-weight:650}
.ld-combo-empty{font-size:9px;color:var(--muted);padding:7px}
/* Native select remains state source; shared visual combobox is used in
   tables AND dashboard filters, not a second unrelated design. */
select[data-afw-modern-select].afw-select-native{display:none!important}
.ld-filter-combo{min-width:145px;max-width:240px;width:auto;flex:0 0 auto}
.ld-filter-combo .ld-combo-trigger{font-weight:600;white-space:nowrap;overflow:hidden}
.ld-filter-combo .ld-combo-trigger span{min-width:0;overflow:hidden;text-overflow:ellipsis}
.ld-filter-combo .ld-combo-clear{font-size:16px}
.ld-filter-combo .ld-combo-expand .i{width:13px;height:13px}
.ld-filter-combo .ld-combo-popup{min-width:200px}
.ld-filter-combo.open.above .ld-combo-popup{top:auto;bottom:calc(100% + 5px)}
@media(max-width:720px){.ld-filter-combo{min-width:134px;max-width:min(240px,100%)}}

/* One Select primitive across gallery forms, modal forms, toolbars and layer configuration. */
.ld-field .ld-filter-combo,
.layer-control .ld-filter-combo,
.layer-form-scroll .ld-filter-combo{width:100%;max-width:100%;min-width:0}
.ld-field .ld-combo-control,
.layer-control .ld-combo-control,
.layer-form-scroll .ld-combo-control{width:100%}
.layer-control .ld-filter-combo{font-size:10px}
.layer-control .ld-filter-combo .ld-combo-trigger{font:inherit;font-size:10px}
.layer-form-scroll .ld-filter-combo{max-width:650px}
.layer-form-scroll select[data-afw-modern-select].afw-select-native{display:none!important}
.layer-form-scroll .ld-filter-combo .ld-combo-popup,
.layer-control .ld-filter-combo .ld-combo-popup{z-index:15}

.afw-select-field [data-afw-size="sm"]+.ld-combo{min-height:29px}
.afw-select-field [data-afw-size="lg"]+.ld-combo{min-height:44px}
.afw-select-field [aria-invalid="true"]+.ld-combo .ld-combo-control{border-color:var(--red)}

/* Select v0.26 opt-in multiple and remote modes share the native Select bridge. */
.ld-pick-demo{margin-top:15px;padding:16px}
.ld-pick-lead{font-size:10.5px;color:var(--muted);line-height:1.55;margin:10px 0 13px}
.ld-pick-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px}
.ld-pick-grid .ld-field{display:flex;flex-direction:column;gap:6px;min-width:0}
.ld-pick-grid label{font-size:10px;color:var(--ink-strong);font-weight:650}
.ld-pick-grid .ld-field.wide{grid-column:1/-1}
.ld-pick-grid .ld-filter-combo{width:100%;max-width:none;min-width:0}
.ld-pick-grid .ld-combo-control{width:100%}
.ld-pick-bar{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;border:1px solid var(--line);background:var(--panel2);border-radius:7px;padding:10px 12px;margin-top:13px;font-size:10px}
.ld-pick-bar label{display:flex;align-items:center;gap:7px;cursor:pointer;font-weight:650}
.ld-pick-bar input{accent-color:var(--orange)}
.ld-pick-bar span{color:var(--muted);flex:1 1 250px;text-align:right}
.ld-smart-combo .ld-combo-trigger{font-weight:550}
.ld-smart-combo .ld-smart-summary{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ld-smart-combo .ld-combo-popup{min-width:225px}
.ld-smart-combo .ld-combo-options{max-height:215px;overscroll-behavior:contain}
.ld-smart-combo .ld-combo-option[aria-selected=true]{font-weight:700}
.ld-smart-combo .ld-smart-message{font-size:9px;line-height:1.5;color:var(--muted);margin:6px 4px 0}
.ld-smart-combo .ld-smart-more{font-size:10px;min-height:30px;background:var(--panel2);border:1px solid var(--line2);border-radius:6px;color:var(--ink);padding:5px 9px;margin-top:7px;width:100%}
.ld-smart-combo .ld-smart-more:hover{background:var(--hover)}
.ld-smart-combo [hidden],.ld-pick-demo [hidden]{display:none!important}
@media(max-width:720px){
 .ld-pick-grid{grid-template-columns:1fr;gap:12px}
 .ld-pick-grid .ld-field.wide{grid-column:auto}
 .ld-pick-demo{padding:12px}
 .ld-pick-bar span{text-align:left}
}

.ld-smart-combo .ld-combo-option:disabled{opacity:.45;cursor:not-allowed}

/* v0.27.0: distinct remote request states and accessible multi-selection marks. */
.ld-smart-combo .ld-smart-error{
 display:flex;align-items:flex-start;gap:10px;
 padding:12px 11px;margin-top:8px;
 border-radius:8px;border:1px solid var(--red);
 background:var(--red-bg);color:var(--ink);
}
.ld-smart-combo .ld-smart-error-icon{
 display:grid;place-items:center;flex:0 0 18px;
 width:18px;height:18px;border-radius:50%;
 color:var(--red);border:1.5px solid currentColor;
 font-size:12px;font-weight:800;line-height:1;
}
.ld-smart-combo .ld-smart-error-detail{flex:1;min-width:0}
.ld-smart-combo .ld-smart-error-detail strong{
 display:block;color:var(--ink-strong);
 font-size:11.5px;line-height:1.5;font-weight:700;
}
.ld-smart-combo .ld-smart-error-detail p{
 margin:4px 0 9px;font-size:10.5px;line-height:1.55;color:var(--muted);
}
.ld-smart-combo .ld-smart-retry{
 display:inline-flex;align-items:center;justify-content:center;
 width:auto;min-height:34px;margin:0;
 padding:6px 12px;border:1px solid var(--line2);
 background:var(--paper);color:var(--ink-strong);
 font-size:10.5px;font-weight:700;
}
.ld-smart-combo .ld-smart-retry:hover{border-color:var(--orange);background:var(--hover)}
.ld-smart-combo .ld-smart-retry:focus-visible{
 outline:2px solid var(--orange);outline-offset:2px;
}
.ld-smart-combo .ld-smart-empty{
 display:flex;flex-direction:column;gap:4px;
 padding:17px 10px;text-align:center;
}
.ld-smart-combo .ld-smart-empty strong{
 font-size:10.5px;color:var(--ink-strong);font-weight:650;
}
.ld-smart-combo .ld-smart-empty span{
 font-size:10px;color:var(--muted);line-height:1.5;
}
.ld-smart-combo .ld-smart-loading{
 display:flex;gap:9px;align-items:center;min-height:45px;
 padding:10px;color:var(--muted);font-size:10.5px;
}
.ld-smart-combo .ld-smart-spinner{
 display:block;flex:0 0 16px;width:16px;height:16px;
 border:2px solid var(--line2);border-top-color:var(--orange);
 border-radius:50%;animation:ld-smart-spin .8s linear infinite;
}
@keyframes ld-smart-spin{to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){.ld-smart-combo .ld-smart-spinner{animation:none}}
.ld-smart-combo .ld-combo-option{
 display:flex;align-items:center;gap:10px;min-height:40px;
 padding:8px 10px;line-height:1.45;
}
.ld-smart-combo .ld-combo-option:focus-visible{
 outline:2px solid var(--orange);outline-offset:-2px;
}
.ld-smart-combo .ld-smart-check{
 display:grid;place-items:center;flex:0 0 18px;
 width:18px;height:18px;box-sizing:border-box;
 border-radius:4px;border:1.5px solid var(--line2);
 background:var(--paper);color:var(--paper);
}
.ld-smart-combo .ld-smart-check-tick{
 display:none;font-size:14px;font-weight:800;line-height:1;
}
.ld-smart-combo .ld-combo-option[aria-selected=true] .ld-smart-check{
 border-color:var(--orange);background:var(--orange);color:#fff;
}
.ld-smart-combo .ld-combo-option[aria-selected=true] .ld-smart-check-tick{display:block}
.ld-smart-combo .ld-smart-option-label{flex:1;min-width:0;overflow-wrap:anywhere}
.ld-smart-combo .ld-combo-option:disabled .ld-smart-check{opacity:.65}
.ld-smart-combo [hidden]{display:none!important}
.ld-dp-gallery{margin-top:16px;padding:16px}
.ld-dp-intro{margin:9px 0 15px;font-size:10.5px;line-height:1.6;color:var(--muted)}
.ld-dp-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.ld-dp-grid .ld-dp-example{min-width:0;border:1px solid var(--line);border-radius:9px;padding:14px;background:var(--paper)}
.ld-dp-example h4{margin:0 0 7px;font-size:12px;color:var(--ink-strong)}
.ld-dp-example>p{font-size:10px;color:var(--muted);line-height:1.5;margin:0 0 12px}
.ld-dp-fields{display:grid;grid-template-columns:minmax(0,1fr);gap:11px}
.ld-dp-card[data-dp-mode=range] .ld-dp-fields{grid-template-columns:repeat(2,minmax(0,1fr))}
.ld-dp-field{display:flex;flex-direction:column;gap:6px;min-width:0}
.ld-dp-field label{font-size:10px;font-weight:650;color:var(--ink-strong)}
.ld-dp-input-row{display:flex;gap:6px;align-items:stretch;min-width:0}
.ld-dp-input-row input{flex:1 1 0;min-width:0;width:100%;box-sizing:border-box;min-height:36px;padding:7px 8px;font:inherit;font-size:10.5px;border:1px solid var(--line2);border-radius:7px;color:var(--ink);background:var(--paper)}
.ld-dp-input-row input[aria-invalid=true]{border-color:var(--red)}
.ld-dp-open{flex:0 0 36px;width:36px;min-height:36px;background:var(--panel2);border:1px solid var(--line2);border-radius:7px;color:var(--ink);font-size:18px}
.ld-dp-input-row:has(input[type=time]) .ld-dp-open{display:none}
.ld-dp-input-row input:focus-visible,.ld-dp-open:focus-visible{outline:2px solid var(--orange);outline-offset:1px}
.ld-dp-zone{margin-top:12px;border:1px solid var(--line);border-radius:7px;background:var(--panel2);padding:9px 11px;display:flex;align-items:center;flex-wrap:wrap;gap:6px 9px;font-size:10px}
.ld-dp-zone span{color:var(--muted)}
.ld-dp-zone strong{color:var(--ink-strong)}
.ld-dp-zone small{flex:1 1 100%;color:var(--muted);font-size:9.5px;line-height:1.5}
.ld-dp-feedback{font-size:10px;line-height:1.6;color:var(--muted);margin-top:10px;min-height:18px}
.ld-dp-feedback[data-error=true]{color:var(--red);font-weight:650}
.ld-dp-card [hidden]{display:none!important}
.ld-dp-calendar{margin-top:10px;padding:12px;border:1px solid var(--line2);border-radius:9px;background:var(--panel2);max-width:320px}
.ld-dp-calendar-head{display:flex;align-items:center;justify-content:space-between;gap:7px;margin-bottom:9px}
.ld-dp-calendar-head strong{font-size:12px;color:var(--ink-strong);text-transform:capitalize}
.ld-dp-calendar-head button,.ld-dp-calendar-foot button{min-height:32px;padding:5px 10px;color:var(--ink);background:var(--paper);border:1px solid var(--line);border-radius:6px;font-size:11px;cursor:pointer}
.ld-dp-week,.ld-dp-days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:3px}
.ld-dp-week span{text-align:center;font-size:9px;font-weight:700;color:var(--muted);padding:5px 0}
.ld-dp-day{display:grid;place-items:center;min-height:32px;border:1px solid transparent;border-radius:6px;background:transparent;color:var(--ink);font-size:10.5px;cursor:pointer}
.ld-dp-day:hover:not(:disabled){background:var(--hover);border-color:var(--line2)}
.ld-dp-day[data-today=true]{border-color:var(--orange)}
.ld-dp-day[data-in-range=true]{background:var(--tint)}
.ld-dp-day[aria-pressed=true]{background:var(--orange);color:#fff;font-weight:700}
.ld-dp-day:disabled{opacity:.28;cursor:not-allowed}
.ld-dp-day:focus-visible,.ld-dp-calendar button:focus-visible{outline:2px solid var(--orange);outline-offset:1px}
.ld-dp-calendar-foot{display:flex;justify-content:space-between;gap:8px;margin-top:10px}
@media(max-width:750px){.ld-dp-grid{grid-template-columns:1fr}.ld-dp-gallery{padding:12px}.ld-dp-grid .ld-dp-example{padding:12px}}
@media(max-width:360px){.ld-dp-card[data-dp-mode=range] .ld-dp-fields{grid-template-columns:1fr}}
/* One visual calendar opener. The input stays a real editable native date field. */
.ld-dp-input-row input[type=date]::-webkit-calendar-picker-indicator{display:none}
.ld-dp-open{display:grid;place-items:center;font-size:0;position:relative}
.ld-dp-open::before{
 content:"";display:block;width:16px;height:16px;box-sizing:border-box;
 border:1.5px solid currentColor;border-radius:3px;
 background:linear-gradient(to bottom,currentColor 0 4px,transparent 4px 100%);
 opacity:.75;
}
.ld-dp-open::after{
 content:"";position:absolute;top:19px;left:15px;
 width:4px;height:4px;border-radius:1px;background:currentColor;
}

/* v0.30 — Emersion anchored popup. Portaled to <body> to avoid Form/Window reflow. */
.ld-dp-floating{
 position:fixed;left:0;top:0;z-index:150000;
 box-sizing:border-box;max-width:calc(100vw - 16px);
 background:var(--paper);border:1px solid var(--line2);border-radius:11px;
 box-shadow:0 12px 36px rgba(30,31,32,.19),0 3px 9px rgba(30,31,32,.08);
 padding:12px;overflow:auto;max-height:calc(100vh - 16px);
}
.ld-dp-floating[hidden],.ld-dp-input-row input[hidden]{display:none!important}
.ld-dp-calendar{width:300px;margin:0}
.ld-dp-calendar-head{margin-bottom:10px;padding-bottom:9px;border-bottom:1px solid var(--line)}
.ld-dp-calendar-head strong{font-size:13px}
.ld-dp-calendar-head button{width:34px;min-height:34px;display:grid;place-items:center;
 font-size:19px;border-radius:7px;background:var(--panel2)}
.ld-dp-week{margin-bottom:5px}
.ld-dp-week span{font-size:9.5px;padding:5px 0}
.ld-dp-day{min-height:34px;font-size:11px;border-radius:7px}
.ld-dp-calendar-foot{padding-top:10px;margin-top:10px;border-top:1px solid var(--line)}
.ld-dp-calendar-foot button{min-height:34px;font-weight:600}
.ld-dp-open{
 display:flex!important;align-items:center!important;justify-content:center!important;
 flex:0 0 36px;min-width:36px;width:36px;height:36px;
 padding:0!important;line-height:1!important;position:relative;
 color:var(--ink);cursor:pointer;
}
.ld-dp-open svg{display:block;flex:none;width:18px;height:18px;max-width:18px;max-height:18px}
.ld-dp-open::before,.ld-dp-open::after{display:none!important;content:none!important}
.ld-dp-open:hover{border-color:var(--orange);color:var(--orange-deep)}
.ld-dp-open[aria-expanded=true]{border-color:var(--orange);color:var(--orange-deep);background:var(--hover)}
.ld-dp-input-row input[type=date]::-webkit-calendar-picker-indicator{display:none}
.ld-dp-input-row input[type=text]{font-variant-numeric:tabular-nums}
.ld-dp-input-row input::selection{background:var(--orange);color:#fff}
.ld-dp-timepopup{width:286px}
.ld-dp-timehead{display:flex;align-items:baseline;justify-content:space-between;
 gap:8px;border-bottom:1px solid var(--line);padding-bottom:10px;margin-bottom:11px}
.ld-dp-timehead strong{font-size:13px;color:var(--ink-strong)}
.ld-dp-timehead span{font-size:9.5px;color:var(--muted)}
.ld-dp-timecolumns{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.ld-dp-timecolumns>div{min-width:0}
.ld-dp-timecolumns>div>strong{display:block;font-size:10.5px;color:var(--ink-strong);margin-bottom:6px}
.ld-dp-timelist{height:188px;overflow:auto;overscroll-behavior:contain;
 padding:3px;background:var(--panel2);border:1px solid var(--line);border-radius:8px}
.ld-dp-timelist button{display:block;width:100%;min-height:33px;padding:5px 10px;
 font:inherit;font-size:11px;font-weight:550;text-align:center;
 background:transparent;border:1px solid transparent;border-radius:6px;
 color:var(--ink);cursor:pointer;font-variant-numeric:tabular-nums}
.ld-dp-timelist button:hover{background:var(--hover)}
.ld-dp-timelist button[aria-pressed=true]{background:var(--orange);color:#fff;font-weight:750}
.ld-dp-timelist button:focus-visible{outline:2px solid var(--orange);outline-offset:-2px}
.ld-dp-timefoot{display:flex;flex-direction:column;gap:10px;
 margin-top:11px;padding-top:10px;border-top:1px solid var(--line)}
.ld-dp-timefoot span{font-size:9.5px;color:var(--muted);line-height:1.5}
.ld-dp-timefoot button{align-self:flex-end;min-height:34px;padding:6px 14px;
 background:var(--panel2);border:1px solid var(--line2);
 color:var(--ink-strong);font-weight:650;font-size:10.5px;border-radius:7px;cursor:pointer}
.ld-dp-timefoot button:hover{border-color:var(--orange);background:var(--hover)}
@media(max-width:350px){
 .ld-dp-floating{padding:9px}
 .ld-dp-day{min-height:31px}
 .ld-dp-timepopup{width:280px}
}

/* R1 (AFW-DS-02, bod 1-4): shared field grid. Label / control / help row use the same metrics as Field
   (--afw-label-lh, --afw-field-gap, --control-h, --afw-help-lh in field.css), so a DatePicker sits on the same axes as its neighbours. */
.ld-dp-fields{align-items:start}
.ld-dp-field{gap:var(--afw-field-gap,6px)}
.ld-dp-field label{font-size:10px;font-weight:650;line-height:var(--afw-label-lh,14px);min-height:var(--afw-label-lh,14px);color:var(--ink-strong)}
.ld-dp-input-row{align-items:stretch}
.ld-dp-input-row input{height:var(--control-h);min-height:var(--control-h);padding:0 10px;border-radius:8px}
.ld-dp-open{flex:0 0 var(--control-h);min-width:var(--control-h);width:var(--control-h);height:var(--control-h);min-height:var(--control-h);border-radius:8px}
.ld-dp-input-row input[aria-invalid=true]{border-color:var(--red);box-shadow:0 0 0 1px var(--red)}
/* the status line is a help row: fixed height (reserved), so "Nevybráno" / a chosen range / an error never moves the grid */
.ld-dp-feedback{font-size:9px;line-height:var(--afw-help-lh,14px);min-height:var(--afw-help-lh,14px);margin-top:var(--afw-field-gap,6px);overflow-wrap:anywhere}
/* example cards in a 2-column grid share their title / description / field rows, so fields align across cards */
@media(min-width:751px){
 .ld-dp-grid{grid-auto-rows:auto}
 .ld-dp-grid .ld-dp-example{display:grid;grid-template-rows:subgrid;grid-row:span 3;row-gap:0}
 .ld-dp-grid .ld-dp-example>p{margin-bottom:12px}
}
/* AFW v0.13 Mobile Workspace. Desktop sizing and visual tokens remain unchanged. */
.afw-mobile-top,.afw-mobile-nav-backdrop{display:none!important}
@media(max-width:720px){
/* One functional top bar, not a miniature desktop navigation ribbon. */
.app{inset:0 0 calc(49px + env(safe-area-inset-bottom,0px)) 0!important}
.app .main .topbar{flex:0 0 50px!important;min-height:50px!important;height:50px!important;padding:0 10px!important;z-index:12}
.app .sidebar{position:fixed!important;z-index:310!important;top:0;left:0;bottom:calc(49px + env(safe-area-inset-bottom,0px));width:min(300px,84vw)!important;height:auto!important;max-height:calc(100dvh - 49px - env(safe-area-inset-bottom,0px));min-height:0!important;flex:none!important;display:flex!important;flex-direction:column!important;align-items:stretch!important;overflow-y:hidden!important;overflow-x:hidden!important;gap:10px!important;padding:16px 12px 10px!important;transform:translateX(-104%);transition:transform .2s ease,visibility .2s;visibility:hidden;box-shadow:20px 0 45px #24160e66}
.app.afw-mobile-nav-open .sidebar{transform:translateX(0);visibility:visible}
.app .sidebar .logo{padding:0 10px;margin-bottom:3px;flex:0 0 auto!important}
.app .sidebar .logo>div:last-child,.app .sidebar .side-link span,.app .sidebar .section-label,.app .sidebar .side-foot>div:last-child{display:block!important}
.app .sidebar .side-nav{display:grid!important;gap:3px!important;flex:1 1 auto!important;min-height:0!important;align-content:start!important;overflow-y:auto!important;overflow-x:hidden!important;width:auto!important;scrollbar-width:thin;overscroll-behavior:contain;padding-right:3px}
.app .sidebar .side-link{height:42px!important;min-height:42px!important;width:100%!important;justify-content:flex-start!important;text-align:left;padding:0 13px!important}
.app .sidebar .side-foot{display:flex!important;flex:0 0 auto!important;margin-top:0!important;padding-top:10px!important;padding-bottom:2px!important;min-height:53px}
.afw-mobile-nav-backdrop{position:fixed;inset:0;z-index:300;border:0;background:#1d130cb8;backdrop-filter:blur(3px);cursor:default}
.app.afw-mobile-nav-open>.afw-mobile-nav-backdrop{display:block!important}
.app .main .topbar>.crumb,.app .main .topbar>.top-actions{display:none!important}
.afw-mobile-top{position:relative;display:flex!important;align-items:center;gap:9px;width:100%;min-width:0;height:100%}
.afw-mobile-top-button{display:grid;place-items:center;flex:none;width:36px;height:36px;border:1px solid var(--line2);border-radius:9px;background:var(--panel2);color:var(--ink);font:inherit;font-size:19px;cursor:pointer}
.afw-mobile-top-button .i{width:20px;height:20px}
.afw-mobile-context{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}
.afw-mobile-context strong{font-size:12px;font-weight:750;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--ink)}
.afw-mobile-context span{font-size:8px;letter-spacing:.12em;font-weight:750;color:var(--orange-deep)}
.afw-mobile-avatar{display:grid;place-items:center;flex:none;width:32px;height:32px;border-radius:50%;background:linear-gradient(140deg,#f3ad68,#f4781c);color:#382113;font-size:10px;font-weight:800}
.afw-mobile-more{position:absolute;right:38px;top:calc(100% + 6px);z-index:340;width:min(265px,calc(100vw - 20px));padding:12px;background:var(--paper);border:1px solid var(--line2);border-radius:12px;box-shadow:0 16px 45px #1e130d57;display:flex;flex-direction:column;gap:6px}
.afw-mobile-more[hidden]{display:none!important}
.afw-mobile-more strong{font-size:11px;margin:2px 2px 8px}
.afw-mobile-more button,.afw-mobile-more a{font:inherit;text-align:left;font-size:11px;padding:10px 9px;border:0;border-radius:7px;background:var(--panel2);color:var(--ink);text-decoration:none;cursor:pointer}
.afw-mobile-more button:hover,.afw-mobile-more a:hover{background:var(--selected)}
.d-top .preview-controls{display:none!important}
.d-top .preview-badge{font-size:9px}
.app .main .content>.d-content-inner, .app .main .content>#afwPageHost>.afw-route-page{padding-top:14px}
/* Mobile-only 49px Taskbar. Available width is shared by quick windows, both
   overview controls show count UNDER icon. No desktop edge arrows. */
.d-taskbar{height:calc(49px + env(safe-area-inset-bottom,0px))!important;padding:4px 2px calc(4px + env(safe-area-inset-bottom,0px)) 3px!important;gap:4px!important;align-items:center}
#taskbar{padding-left:3px!important;padding-right:2px!important}
.d-taskbar .d-task-brand{height:39px!important;width:37px!important;min-width:37px!important;max-width:37px!important;padding:0!important}
.d-taskbar .d-task-brand .mark{width:30px;height:30px}
.d-taskbar .d-task-sep{display:none}
.d-taskbar .d-task{flex:0 0 37px!important;min-width:37px!important;max-width:37px!important;height:37px!important;padding:0!important}
.d-taskbar .d-task-scroll{display:none!important}
.d-taskbar #taskOverview{flex:none;min-width:36px!important;width:36px!important;height:39px!important;padding:3px 0!important;display:flex;flex-direction:column;justify-content:center;gap:1px}
.d-taskbar #taskOverview .i{width:18px;height:18px}
.d-taskbar #taskOverviewCount{font-size:9px;line-height:10px;min-height:10px}
.d-taskbar #afwDesktopSwitcher{flex:none}
.d-taskbar #afwDesktopManage{display:flex;flex-direction:column;gap:1px;width:36px!important;height:39px!important;min-width:36px!important;padding:3px 0!important}
.d-taskbar .afw-ds-launch-symbol{height:19px;width:22px}
.d-taskbar .afw-ds-launch-symbol .i{height:18px;width:18px}
.d-taskbar .afw-ds-launch-count{height:10px;min-width:0;border:0;background:none;border-radius:0;line-height:10px;font-size:9px;color:#ffcb92;padding:0}
.d-taskbar #taskShowDesktop{display:grid!important;place-items:center;flex:none;position:relative;width:32px!important;min-width:32px!important;max-width:32px!important;height:42px!important;border:0!important;background:transparent!important;box-shadow:none!important;padding:0!important;margin-left:auto!important}
.d-taskbar #taskShowDesktop .i{display:none!important}
.d-taskbar #taskShowDesktop::after{content:"";display:block;width:5px;height:29px;border-radius:5px;background:#d9bd8390;transition:background .15s,width .15s}
.d-taskbar #taskShowDesktop[aria-pressed=true]::after{background:#f4781c;width:6px;box-shadow:0 0 0 2px #f4781c25}
.d-window-area{bottom:calc(49px + env(safe-area-inset-bottom,0px))!important}
.d-win,.d-win.maximized{height:calc(100dvh - 49px - env(safe-area-inset-bottom,0px))!important}
body{padding-bottom:0!important}
.afw-mission-window{bottom:calc(60px + env(safe-area-inset-bottom,0px))}
}
@media(max-width:720px) and (prefers-reduced-motion:reduce){.app .sidebar{transition:none}}
/* AFW v0.14 — consistent task/window overview affordances.
   Button counts are below their icon on desktop AND mobile.
   A visible thin Show Desktop strip has a larger real hit target. */
#taskbar{padding-left:12px;padding-right:35px}
.d-taskbar #taskOverview{
 display:flex;flex-direction:column;align-items:center;justify-content:center;
 gap:1px;flex:none;width:40px;min-width:40px;height:42px;padding:3px 0;
}
.d-taskbar #taskOverview .i{width:18px;height:18px}
.d-taskbar #taskOverviewCount{display:block;min-height:11px;font-size:10px;line-height:11px;font-weight:750}
.d-taskbar #afwDesktopManage{
 display:flex;flex-direction:column;justify-content:center;align-items:center;
 gap:1px;width:42px;min-width:42px;height:42px;padding:3px 0;
}
.d-taskbar .afw-ds-launch-symbol{display:grid;place-items:center;width:23px;height:20px}
.d-taskbar .afw-ds-launch-symbol .i{width:18px;height:18px}
.d-taskbar .afw-ds-launch-count{
 display:block;min-width:0;height:11px;line-height:11px;
 border:0;border-radius:0;background:transparent;padding:0;
 font-size:10px;font-weight:750;color:#ffcb92;
}
.d-taskbar #taskShowDesktop{
 position:fixed;right:0;bottom:10px;width:29px;min-width:29px;max-width:29px;
 height:42px;margin:0!important;padding:0;border:0;background:transparent;
 box-shadow:none;display:grid;place-items:center;
}
.d-taskbar #taskShowDesktop .i{display:none}
.d-taskbar #taskShowDesktop::after{
 content:"";display:block;width:5px;height:29px;border-radius:5px;
 background:#d9bd83a8;transition:background .15s,width .15s;
}
.d-taskbar #taskShowDesktop:hover::after{background:#f5bf89}
.d-taskbar #taskShowDesktop[aria-pressed=true]::after{width:6px;background:#f4781c;box-shadow:0 0 0 2px #f4781c25}
@media(max-width:720px){
 #taskbar{padding-left:3px!important;padding-right:2px!important}
 /* Use all remaining space for actual open windows. 5 compact tasks
    fit on 375px screens; narrower screens can swipe horizontally. */
 .d-taskbar #taskList{
   flex:1 1 0;min-width:0;max-width:none;display:flex;gap:3px;
   overflow-x:auto;overflow-y:hidden;scrollbar-width:none;
   touch-action:pan-x;overscroll-behavior-x:contain;
   -webkit-overflow-scrolling:touch;
 }
 .d-taskbar #taskList::-webkit-scrollbar{display:none}
 .d-taskbar #taskList[data-scroll-more="true"]{
   -webkit-mask-image:linear-gradient(to right,#000 0%,#000 88%,transparent 100%);
   mask-image:linear-gradient(to right,#000 0%,#000 88%,transparent 100%);
 }
 .d-taskbar #taskList[data-scroll-back="true"]{
   -webkit-mask-image:linear-gradient(to right,transparent 0%,#000 12%,#000 88%,transparent 100%);
   mask-image:linear-gradient(to right,transparent 0%,#000 12%,#000 88%,transparent 100%);
 }
 .d-taskbar #taskList[data-scroll-back="true"][data-scroll-more="false"]{
   -webkit-mask-image:linear-gradient(to right,transparent 0%,#000 12%,#000 100%);
   mask-image:linear-gradient(to right,transparent 0%,#000 12%,#000 100%);
 }
 .d-taskbar #taskOverview{margin-left:0!important;min-width:36px;width:36px;height:39px}
 .d-taskbar #afwDesktopManage{width:36px;min-width:36px;height:39px}
 .d-taskbar #taskShowDesktop{
  position:relative!important;right:auto!important;bottom:auto!important;
  width:28px!important;min-width:28px!important;max-width:28px!important;
  height:42px!important;margin-left:0!important;
 }
 .d-taskbar #taskShowDesktop::after{height:29px}
}
@media(prefers-reduced-motion:reduce){
 .d-taskbar #taskShowDesktop::after{transition:none}
}

/* v0.16: Window Overview is a mobile sheet, not a desktop dropdown.
   #windowOverview previously had inline right:55px, forcing x:-25px at
   375px viewport. On mobile the existing DOM is portaled to <body>, and
   Overview uses safe viewport positioning, bounded scrolling and scrim.
   Desktop dropdown placement remains unchanged. */
#afwTaskPopoverScrim{display:none}
@media(max-width:720px){
 #afwTaskPopoverScrim{
  display:none;position:fixed;inset:0 0 calc(49px + env(safe-area-inset-bottom,0px)) 0;
  z-index:9300;pointer-events:none;background:rgba(32,19,12,.44);
  backdrop-filter:blur(2px);
 }
 body:has(#windowOverview.open) #afwTaskPopoverScrim{display:block}
 #windowOverview.d-task-popover{
  position:fixed!important;
  left:8px!important;right:8px!important;
  bottom:calc(49px + env(safe-area-inset-bottom,0px) + 8px)!important;
  width:auto!important;
  max-width:none!important;
  max-height:calc(100dvh - 49px - env(safe-area-inset-bottom,0px) - 50px - 24px)!important;
  margin:0!important;
  z-index:9310!important;
  overflow:hidden;
  border-radius:15px;
  box-shadow:0 20px 65px rgba(23,13,8,.54);
 }
 #windowOverview .d-task-popover-body{
  flex:1 1 auto;min-height:0;max-height:none;overflow-y:auto;
  overscroll-behavior:contain;-webkit-overflow-scrolling:touch;
 }
 #windowOverview .d-task-popover-head, #windowOverview .d-task-popover-foot{
  flex:0 0 auto;
 }
}

/* KIT PACKAGES */
/* Kit gallery: layout helpers for component demos. Tokens only (src/tokens/theme.css), light/dark/density aware. */
.afw-kit-host{display:flex;flex-direction:column;gap:14px;min-width:0}
.afw-kit-section{background:var(--paper);border:1px solid var(--line);border-radius:10px;padding:var(--card-pad);box-shadow:var(--shadow-card);min-width:0}
.afw-kit-section-title{margin:0 0 10px;font-size:11px;letter-spacing:.04em;text-transform:uppercase;color:var(--orange-deep)}
.afw-kit-section-body{display:flex;flex-direction:column;gap:10px;min-width:0}
.afw-kit-group{margin:6px 0 0;font-size:11px;color:var(--muted)}
.afw-kit-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:10px}
.afw-kit-card{border:1px solid var(--line);border-radius:9px;background:var(--panel);padding:10px 12px;display:flex;flex-direction:column;gap:6px;align-items:flex-start}
.afw-kit-card p{margin:0;color:var(--muted);font-size:10px}
.afw-kit-tag{font-size:9.5px;border:1px solid var(--line2);border-radius:99px;padding:0 7px;color:var(--muted)}
.afw-kit-note{margin:0;font-size:10.5px;color:var(--muted);line-height:1.6}
.afw-kit-note a{color:var(--orange-deep)}
.afw-kit-contract h4{margin:12px 0 6px;font-size:10.5px}
.afw-kit-contract h4:first-child{margin-top:0}
.afw-kit-scroll{overflow-x:auto;max-width:100%}
.afw-kit-table{border-collapse:collapse;width:100%;font-size:10px}
.afw-kit-table th,.afw-kit-table td{border:1px solid var(--line);padding:5px 8px;text-align:left;vertical-align:top}
.afw-kit-table th{background:var(--panel2);color:var(--ink)}
.afw-kit-code,.afw-kit code{background:var(--panel2);border-radius:4px;padding:0 4px;font-size:.95em}
.afw-kit-pre{margin:0;padding:10px;background:var(--panel2);border:1px solid var(--line);border-radius:8px;overflow:auto;font-size:10px;line-height:1.55;white-space:pre-wrap}
.afw-kit-row{display:flex;flex-wrap:wrap;gap:10px;align-items:stretch}
@media(max-width:730px){.afw-kit-section{padding:12px}.afw-kit-cards{grid-template-columns:1fr}}
/* Composition intro strip (AFWKit.compose) */
.afw-compose-intro{background:var(--paper);border:1px solid var(--line);border-radius:10px;padding:8px 12px;display:flex;flex-direction:column;gap:6px;min-width:0}
.afw-compose-head{display:flex;flex-wrap:wrap;gap:4px 12px;align-items:baseline;font-size:11px}
.afw-compose-head strong{font-size:11px;letter-spacing:.04em;text-transform:uppercase;color:var(--orange-deep)}
.afw-compose-context{color:var(--muted);font-size:10.5px}
.afw-compose-parts{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:4px 6px}
.afw-compose-parts a{display:inline-block;font-size:10px;border:1px solid var(--line2);border-radius:99px;padding:1px 8px;color:var(--ink);text-decoration:none;background:var(--panel)}
.afw-compose-parts a:hover{border-color:var(--orange);color:var(--orange-deep)}
.afw-compose-parts a:focus-visible{outline:2px solid var(--orange);outline-offset:2px}
/* R2f (AFW-DS-02): composition chrome is muted (no frame), the label never wraps */
.afw-compose-intro{background:none;border:0;border-radius:0;padding:2px 2px 0;gap:4px}
.afw-compose-head strong{font-size:9.5px;font-weight:600;letter-spacing:.06em;color:var(--muted)}
.afw-compose-context{font-size:10px}
.afw-compose-intro .afw-kit-note{font-size:10px;color:var(--muted)}
.afw-compose-parts a{font-size:9.5px;border-color:transparent;background:none;color:var(--muted);text-decoration:underline;text-underline-offset:2px;padding:0 4px}
.ld-gallery-header[title^="?demo="] .ld-review-label{white-space:nowrap}
/* R2g: local light/dark switch next to the label (reachable in a maximized window and on phones) */
.ld-gallery-tools{display:flex;align-items:center;gap:8px;flex:none;align-self:flex-start}
.ld-theme-toggle{appearance:none;display:inline-flex;align-items:center;gap:7px;min-height:28px;padding:4px 11px 4px 9px;font:inherit;font-size:11px;font-weight:600;color:var(--ink);background:var(--paper);border:1px solid var(--line);border-radius:999px;cursor:pointer;white-space:nowrap}
.ld-theme-toggle:hover{border-color:var(--orange);color:var(--orange-deep)}
.ld-theme-toggle:focus-visible{outline:2px solid var(--orange);outline-offset:2px}
.ld-theme-dot{width:12px;height:12px;border-radius:50%;background:linear-gradient(90deg,var(--ink) 50%,var(--paper) 50%);border:1px solid var(--ink)}
/* Alert: inline banner, tokens only. */
.afw-alert{display:flex;gap:10px;align-items:flex-start;padding:10px 12px;border:1px solid var(--line2);border-left-width:3px;border-radius:9px;background:var(--panel);color:var(--ink);min-width:0}
.afw-alert-icon{flex:none;width:18px;height:18px;display:grid;place-items:center;color:var(--muted)}
.afw-alert-icon svg,.afw-alert-icon .i{width:15px;height:15px}
.afw-alert-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}
.afw-alert-title{font-size:11px}
.afw-alert-text{margin:0;font-size:10.5px;line-height:1.6;color:var(--muted);overflow-wrap:anywhere}
.afw-alert-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:5px}
.afw-alert-link{font-size:10px;font-weight:650;color:var(--orange-deep);text-decoration:underline;text-underline-offset:2px;min-height:28px;display:inline-flex;align-items:center}
.afw-alert-link:focus-visible{outline:2px solid var(--orange);outline-offset:2px;border-radius:4px}
.afw-alert-close{flex:none;margin:-4px -6px 0 0;width:28px;min-height:28px!important;padding:0!important}
.afw-alert-close svg,.afw-alert-close .i{width:14px;height:14px}
.afw-alert-info{border-color:var(--line2);border-left-color:var(--gold2)}
.afw-alert-success{background:var(--green-bg);border-color:var(--green);color:var(--ink)}
.afw-alert-success .afw-alert-icon{color:var(--green)}
.afw-alert-warning{background:var(--warn-bg);border-color:var(--warn)}
.afw-alert-warning .afw-alert-icon{color:var(--warn)}
.afw-alert-danger{background:var(--red-bg);border-color:var(--red)}
.afw-alert-danger .afw-alert-icon{color:var(--red)}
.afw-alert-success .afw-alert-text,.afw-alert-warning .afw-alert-text,.afw-alert-danger .afw-alert-text{color:var(--ink)}
@media(max-width:730px){.afw-alert{padding:10px}}
/* Auth layout: full-viewport modal dialog. Dark brand plane (board tokens, dark in both themes) + light form card (theme surface tokens).
   Tokens only. No transform/container-type at rest. Field, Button, Choice keep their own styles; this file only scales them for the sign-in context. */
dialog.afw-auth:not([open]){display:none}
dialog.afw-auth{position:fixed;inset:0;margin:0;padding:0;border:0;width:100%;height:100%;max-width:none;max-height:none;overflow:auto;overscroll-behavior:contain;background:var(--page);color:var(--ink);font:inherit;font-size:12px;line-height:1.5;text-align:left;box-sizing:border-box;scrollbar-color:var(--line2) transparent}
dialog.afw-auth *{box-sizing:border-box}
dialog.afw-auth::backdrop{background:var(--page)}
dialog.afw-auth:focus,dialog.afw-auth:focus-visible{outline:0}
.afw-auth-shell{position:relative;display:grid;grid-template-columns:clamp(380px,42%,640px) minmax(0,1fr);min-height:100%}
/* brand plane */
.afw-auth-brand{position:sticky;top:0;align-self:start;height:100vh;height:100dvh;overflow:hidden;display:flex;flex-direction:column;padding:34px 44px 26px;background:var(--sf-board-bg);color:var(--sf-board-fg);border-right:1px solid var(--sf-board-bd)}
.afw-auth-brandhead{position:relative;z-index:1;flex:none;display:flex;align-items:center;gap:10px}
.afw-auth-mark{display:grid;place-items:center;width:32px;height:32px;border-radius:10px;background:linear-gradient(145deg,#ffb76d,#ee761b 72%);box-shadow:0 6px 18px #f4781c38;color:#3b2719;font-size:21px;font-weight:700;letter-spacing:-.06em;line-height:1}
.afw-auth-word{font-size:12.5px;font-weight:600;letter-spacing:.16em;color:var(--sf-board-fg)}
.afw-auth-art{position:absolute;right:0;bottom:62px;width:100%;height:44%;color:var(--sf-board-icon);pointer-events:none;opacity:.85;-webkit-mask-image:linear-gradient(180deg,transparent 0,#000 34%,#000 80%,transparent 100%);mask-image:linear-gradient(180deg,transparent 0,#000 34%,#000 80%,transparent 100%)}
.afw-auth-art svg{display:block;width:100%;height:100%}
.afw-auth-pitch{position:relative;z-index:1;flex:1 1 auto;display:flex;flex-direction:column;justify-content:center;max-width:420px;min-height:0;padding-bottom:clamp(28px,12vh,120px)}
.afw-auth-eyebrow{margin:0 0 12px;font-size:10.5px;font-weight:600;letter-spacing:.18em;color:var(--sf-board-fg3)}
.afw-auth-pitchtitle{margin:0 0 12px;font-size:29px;line-height:1.18;font-weight:600;letter-spacing:-.025em;color:var(--sf-board-fg)}
.afw-auth-pitchtext{margin:0 0 22px;font-size:13px;line-height:1.6;color:var(--sf-board-fg2);max-width:38ch}
.afw-auth-points{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:11px;font-size:12px;color:var(--sf-board-fg)}
.afw-auth-points li{display:flex;align-items:center;gap:11px}
.afw-auth-ptile{flex:none;display:grid;place-items:center;width:28px;height:28px;border-radius:8px;background:#ffffff14;border:1px solid #f5d6a840;color:var(--sf-board-icon)}
.afw-auth-ptile .afw-auth-ic{width:15px;height:15px}
.afw-auth-foot{position:relative;z-index:1;flex:none;display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;font-size:11px;color:var(--sf-board-fg3)}
.afw-auth-links{display:flex;gap:18px}
.afw-auth-links a{color:var(--sf-board-fg2);text-decoration:none;border-bottom:1px solid transparent}
.afw-auth-links a:hover{color:var(--sf-board-fg);border-bottom-color:currentColor}
.afw-auth-links a:focus-visible{outline:2px solid var(--sf-board-focus);outline-offset:3px;border-radius:3px}
.afw-auth-sys{display:inline-flex;align-items:center;gap:7px}
.afw-auth-dot{width:7px;height:7px;border-radius:50%;background:var(--sf-board-ok);box-shadow:0 0 0 3px #8fdcab33}
.afw-auth-mfoot{display:none}
/* main + card */
.afw-auth-main{position:relative;min-width:0;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:76px 32px 40px}
.afw-auth-exit{position:absolute;top:20px;right:24px;display:inline-flex;align-items:center;gap:8px;min-height:32px;padding:0 10px 0 11px;border:1px solid var(--line2);border-radius:8px;background:var(--paper);color:var(--ink);font:inherit;font-size:11px;font-weight:650;cursor:pointer}
.afw-auth-exit:hover{background:var(--hover);border-color:var(--gold2)}
.afw-auth-exit:focus-visible{outline:2px solid var(--orange);outline-offset:2px}
.afw-auth-exit .afw-auth-ic{width:14px;height:14px}
.afw-auth-kbd{padding:1px 5px;border:1px solid var(--line2);border-radius:4px;font:inherit;font-size:9px;font-weight:600;color:var(--muted)}
.afw-auth-card{width:100%;max-width:432px;padding:32px 32px 26px;background:var(--paper);border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow-card)}
.afw-auth-view{min-width:0}
.afw-auth-ic{flex:none;width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.afw-auth-head{margin:0 0 22px}
.afw-auth-tile{display:grid;place-items:center;width:44px;height:44px;margin:0 0 16px;border-radius:12px;background:var(--tint);border:1px solid var(--line2);color:var(--orange-deep)}
.afw-auth-tile .afw-auth-ic{width:22px;height:22px}
.afw-auth-tile[data-tone="ok"]{background:var(--green-bg);color:var(--green);border-color:color-mix(in srgb,var(--green) 40%,transparent)}
.afw-auth-tile[data-tone="warn"]{background:var(--warn-bg);color:var(--warn);border-color:color-mix(in srgb,var(--warn) 40%,transparent)}
.afw-auth-title{margin:0 0 6px;font-size:22px;line-height:1.25;font-weight:600;letter-spacing:-.025em;color:var(--ink-strong)}
.afw-auth-title:focus{outline:0}
.afw-auth-lead{margin:0 0 8px;font-size:12.5px;line-height:1.6;color:var(--muted)}
.afw-auth-lead:last-child{margin-bottom:0}
.afw-auth-lead strong{color:var(--ink);font-weight:600;overflow-wrap:anywhere}
.afw-auth-form{display:flex;flex-direction:column;gap:0;min-width:0}
.afw-auth-fs{display:flex;flex-direction:column;gap:16px;min-width:0;margin:0;padding:0;border:0}
.afw-auth-fs:disabled{opacity:.85}
/* fields scaled for the sign-in context */
.afw-auth .ld-field>label{font-size:11.5px;color:var(--ink-strong)}
.afw-auth .ld-field input{height:44px;font-size:13px;padding:0 12px;border-radius:9px}
.afw-auth .ld-field input::placeholder{color:var(--quiet)}
.afw-auth .ld-help{font-size:11px;line-height:1.5}
.afw-auth .ld-help[hidden]{display:none}
.afw-auth-pw{position:relative;display:block}
.afw-auth-pw input{padding-right:46px!important}
.afw-auth-eye{position:absolute;top:0;right:0;display:grid;place-items:center;width:44px;height:44px;margin:0;padding:0;border:0;border-radius:0 9px 9px 0;background:transparent;color:var(--muted);cursor:pointer}
.afw-auth-eye:hover{color:var(--ink)}
.afw-auth-eye[aria-pressed="true"]{color:var(--orange-deep)}
.afw-auth-eye:focus-visible{outline:2px solid var(--orange);outline-offset:-3px}
.afw-auth-eye .afw-auth-ic{width:18px;height:18px}
.afw-auth-caps{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--warn);font-weight:600}
.afw-auth-caps[hidden]{display:none}
.afw-auth-caps .afw-auth-ic{width:14px;height:14px}
.afw-auth-row{display:flex;align-items:center;justify-content:space-between;gap:8px 16px;flex-wrap:wrap}
.afw-auth .ld-choice{font-size:11.5px;min-height:24px;cursor:pointer}
.afw-auth .ld-choice input{width:17px;height:17px}
.afw-auth-linkbtn{display:inline;padding:2px 0;margin:0;border:0;border-bottom:1px solid transparent;background:transparent;color:var(--orange-deep);font:inherit;font-size:11.5px;font-weight:600;cursor:pointer;text-decoration:none}
.afw-auth-linkbtn:hover:not(:disabled){border-bottom-color:currentColor}
.afw-auth-linkbtn:focus-visible{outline:2px solid var(--orange);outline-offset:3px;border-radius:3px}
.afw-auth-linkbtn:disabled{color:var(--muted);cursor:default;font-weight:500}
.afw-auth-btn{width:100%}
.afw-auth-btn .afw-auth-ic{width:16px;height:16px}
.afw-auth-btn .afw-auth-btnl{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.afw-auth-form>.afw-auth-fs>.afw-auth-btn{margin-top:4px}
.afw-auth-extra{display:flex;flex-direction:column;gap:14px;margin-top:16px}
.afw-auth-or{display:flex;align-items:center;gap:12px;color:var(--muted);font-size:11px}
.afw-auth-or::before,.afw-auth-or::after{content:"";flex:1;height:1px;background:var(--line)}
.afw-auth-help,.afw-auth-note{margin:0;font-size:11px;line-height:1.55;color:var(--muted)}
.afw-auth-center{margin:16px 0 0;text-align:center;font-size:11.5px}
.afw-auth-center:empty{display:none}
.afw-auth-actions{display:flex;flex-direction:column;gap:10px;margin-top:20px}
.afw-auth-tools{display:flex;align-items:center;justify-content:space-between;gap:8px 14px;flex-wrap:wrap;margin-top:16px}
.afw-auth-sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
/* error / info summary */
.afw-auth-feedback{display:flex;align-items:flex-start;gap:10px;margin:0 0 16px;padding:11px 13px;border:1px solid color-mix(in srgb,var(--red) 45%,transparent);border-radius:10px;background:var(--red-bg);color:var(--ink);font-size:12px;line-height:1.5}
.afw-auth-feedback[hidden]{display:none}
.afw-auth-feedback:focus{outline:0}
/* R5f: the alert takes programmatic focus only (tabindex -1, announced as role=alert); no orange ring around the red box */
.afw-auth-feedback:focus-visible{outline:0}
.afw-auth-fbic{margin-top:1px;color:var(--red)}
.afw-auth-fbbody{min-width:0}
.afw-auth-fbbody strong{display:block;font-weight:650;color:var(--ink-strong)}
.afw-auth-fbbody p{margin:2px 0 0;color:var(--ink)}
.afw-auth-fbbody ul{margin:4px 0 0;padding:0 0 0 16px}
.afw-auth-fbbody a{color:var(--ink);text-decoration:underline;text-underline-offset:2px}
/* info box */
.afw-auth-box{display:flex;align-items:flex-start;gap:10px;margin:16px 0 0;padding:11px 13px;border:1px solid var(--line);border-radius:10px;background:var(--panel2);color:var(--ink);font-size:12px;line-height:1.5}
.afw-auth-box .afw-auth-ic{margin-top:2px;color:var(--orange-deep)}
.afw-auth-dl{display:grid;grid-template-columns:auto minmax(0,1fr);gap:8px 18px;margin:0 0 4px;padding:13px 14px;border:1px solid var(--line);border-radius:10px;background:var(--panel2);font-size:12px}
.afw-auth-dl dt{color:var(--ink)}
.afw-auth-dl dd{margin:0;color:var(--ink);font-weight:600;overflow-wrap:anywhere}
.afw-auth-dl code{font:inherit;font-weight:700;letter-spacing:.03em}
/* password requirements */
.afw-auth-req{padding:12px 14px;border:1px solid var(--line);border-radius:10px;background:var(--panel2)}
.afw-auth-reqh{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin:0 0 8px;font-size:11.5px}
.afw-auth-reqh strong{font-weight:650;color:var(--ink-strong)}
.afw-auth-reqc{font-size:11px;color:var(--ink);font-variant-numeric:tabular-nums}
.afw-auth-req ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}
.afw-auth-req li{display:flex;align-items:center;gap:8px;font-size:11.5px;color:var(--ink)}
.afw-auth-req li[data-met="false"] .afw-auth-ic{color:var(--muted)}
.afw-auth-req li .afw-auth-ic{width:14px;height:14px}
.afw-auth-req li[data-met="true"]{color:var(--ink)}
.afw-auth-req li[data-met="true"] .afw-auth-ic{color:var(--green)}
/* 2FA */
.afw-auth .ld-field input.afw-auth-code{height:56px;font-size:24px;font-weight:600;letter-spacing:.45em;text-align:center;padding:0 0 0 .45em;font-variant-numeric:tabular-nums}
.afw-auth-attempts{margin:-4px 0 0;font-size:11px;color:var(--muted)}
/* organisations */
.afw-auth-count{margin:8px 0;font-size:11px;color:var(--muted)}
.afw-auth-ohead{display:flex;align-items:center;gap:8px;min-width:0}
.afw-auth-ohead .afw-auth-oname{min-width:0}
.afw-auth-orgs{display:flex;flex-direction:column;gap:8px;margin:0 0 14px;max-height:max(180px,min(404px,calc(100dvh - 470px)));overflow:auto;padding:3px;margin-left:-3px;margin-right:-3px}
.afw-auth-org{display:flex;align-items:center;gap:12px;min-height:58px;padding:9px 12px;border:1px solid var(--line);border-radius:11px;background:var(--paper);cursor:pointer}
.afw-auth-org[hidden]{display:none}
.afw-auth-org:hover{background:var(--hover);border-color:var(--gold2)}
.afw-auth-org[aria-selected="true"]{border-color:var(--orange);background:var(--selected);box-shadow:0 0 0 1px var(--orange)}
.afw-auth-org:focus{outline:0}
.afw-auth-org:focus-visible{outline:2px solid var(--orange);outline-offset:2px}
.afw-auth-otile{flex:none;display:grid;place-items:center;width:36px;height:36px;border-radius:10px;font-size:12px;font-weight:700;letter-spacing:.02em;color:#3b2719;background:linear-gradient(145deg,#ffd9ad,#f1a560)}
.afw-auth-otile[data-tone="2"]{background:linear-gradient(145deg,#f4e3b5,#d9bd83)}
.afw-auth-otile[data-tone="3"]{background:linear-gradient(145deg,#e6c9a8,#c99a6b)}
.afw-auth-otile[data-tone="4"]{background:linear-gradient(145deg,#ffcfb4,#ec8f66)}
.afw-auth-otile[data-tone="5"]{background:linear-gradient(145deg,#ecdcc0,#bfa275)}
.afw-auth-otext{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:2px}
.afw-auth-oname{font-size:12.5px;font-weight:650;color:var(--ink-strong);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.afw-auth-ometa{display:flex;align-items:center;gap:8px;font-size:11px;color:color-mix(in srgb,var(--ink) 74%,var(--paper));min-width:0;white-space:nowrap}
.afw-auth-ometa span:last-child{overflow:hidden;text-overflow:ellipsis}
.afw-auth-orole{flex:none;padding:0 7px;border-radius:99px;background:var(--panel3);color:var(--ink);font-weight:600;line-height:17px}
.afw-auth-otail{flex:none;display:flex;align-items:center;gap:8px}
.afw-auth-odef{flex:none;padding:0 7px;border-radius:99px;border:1px solid var(--line2);font-size:10px;font-weight:600;line-height:16px;color:var(--ink)}
.afw-auth-ocheck{width:18px;height:18px;color:var(--orange-deep);opacity:0}
.afw-auth-org[aria-selected="true"] .afw-auth-ocheck{opacity:1}
.afw-auth-empty{margin:0 0 14px;padding:16px;border:1px dashed var(--line2);border-radius:10px;text-align:center;color:var(--muted);font-size:12px}
.afw-auth-empty[hidden]{display:none}
.afw-auth-form>.afw-auth-remember{margin:0 0 14px}
/* verify */
.afw-auth-bar{height:6px;margin:0 0 18px;border-radius:99px;background:var(--panel3);overflow:hidden}
.afw-auth-bar span{display:block;height:100%;border-radius:99px;background:linear-gradient(90deg,#ffc083,var(--orange));transition:width .35s ease}
.afw-auth-steps{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:12px}
.afw-auth-steps+.afw-auth-count{margin-top:14px}
.afw-auth-steps li{display:flex;align-items:center;gap:12px;font-size:12.5px;color:var(--muted)}
.afw-auth-steps li[data-state="current"]{color:var(--ink-strong);font-weight:600}
.afw-auth-steps li[data-state="done"]{color:var(--ink)}
.afw-auth-smark{flex:none;display:grid;place-items:center;width:22px;height:22px;border-radius:50%;border:1.5px solid var(--line2);color:var(--green)}
.afw-auth-steps li[data-state="done"] .afw-auth-smark{background:var(--green-bg);border-color:color-mix(in srgb,var(--green) 55%,transparent)}
.afw-auth-steps li[data-state="current"] .afw-auth-smark{border-color:var(--orange);color:var(--orange-deep)}
.afw-auth-smark .afw-auth-ic{width:12px;height:12px;stroke-width:2.4}
.afw-auth-smark .afw-button-spinner{width:11px;height:11px;border-width:2px}
@media(prefers-reduced-motion:no-preference){dialog.afw-auth[open]{animation:afw-auth-in .2s ease-out}}
@keyframes afw-auth-in{from{opacity:0}to{opacity:1}}
@media(prefers-reduced-motion:reduce){.afw-auth-bar span{transition:none}}
@media(max-height:700px) and (min-width:601px){.afw-auth-brand{padding-top:24px;padding-bottom:18px}.afw-auth-pitchtitle{font-size:24px}.afw-auth-pitchtext{margin-bottom:14px}}
@media(max-width:900px) and (min-width:601px){.afw-auth-brand{padding:28px 28px 22px}.afw-auth-pitchtitle{font-size:24px}.afw-auth-main{padding:76px 20px 32px}}
/* phone: dark strip with the brand on top, form across the whole width */
@media(max-width:600px){
 .afw-auth-shell{display:block}
 .afw-auth-brand{position:relative;height:auto;flex-direction:row;align-items:center;padding:0 14px;min-height:56px;border-right:0;border-bottom:1px solid var(--sf-board-bd)}
 .afw-auth-art,.afw-auth-pitch,.afw-auth-foot{display:none}
 .afw-auth-main{display:block;position:static;padding:0}
 .afw-auth-orgs{max-height:none;overflow:visible}
 .afw-auth-exit{top:12px;right:12px;background:#ffffff14;border-color:#f5d6a85c;color:var(--sf-board-fg)}
 .afw-auth-exit:hover{background:#ffffff26;border-color:#f5d6a8a0}
 .afw-auth-exit:focus-visible{outline-color:var(--sf-board-focus)}
 .afw-auth-kbd{display:none}
 .afw-auth-card{max-width:none;padding:24px 18px 22px;border:0;border-radius:0;box-shadow:none;background:var(--paper)}
 .afw-auth-title{font-size:21px}
 .afw-auth-mfoot{display:flex;flex-direction:column;align-items:center;gap:10px;padding:18px 18px 28px;font-size:11px;color:var(--ink)}
 .afw-auth-mfoot .afw-auth-links a{color:var(--ink);border-bottom-color:var(--line2)}
 .afw-auth-mfoot .afw-auth-dot{box-shadow:0 0 0 3px color-mix(in srgb,var(--green) 25%,transparent);background:var(--green)}
}
@media(max-width:360px){.afw-auth-exit-label{max-width:104px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.afw-auth-card{padding:22px 16px 20px}.afw-auth-ometa span:first-child{display:none}.afw-auth .ld-field input.afw-auth-code{letter-spacing:.3em}}
/* QA V2 / V18: demo data collapsed under the form; one focus ring on the code field (border + 1 px shadow, no second halo) */
.afw-auth-demo{margin-top:14px;font-size:10.5px;color:var(--muted)}
.afw-auth-demo>summary{cursor:pointer;width:fit-content;border-radius:4px}
.afw-auth-demo>summary:focus-visible{outline:2px solid var(--orange);outline-offset:2px}
.afw-auth-demo>p{margin:6px 0 0}
.afw-auth .ld-field input.afw-auth-code:focus,.afw-auth .ld-field input.afw-auth-code:focus-visible{outline:0;border-color:var(--orange);box-shadow:0 0 0 1px var(--orange)}
.afw-auth .ld-field input.afw-auth-code[aria-invalid="true"]:focus{border-color:var(--red);box-shadow:0 0 0 1px var(--red)}
/* Auth layout demo (?demo=auth-layout): launcher layout only; tokens only. */
.afw-ald-groups{display:flex;flex-direction:column;gap:14px;min-width:0}
.afw-ald-group{min-width:0}
.afw-ald-row{display:flex;flex-wrap:wrap;gap:8px}
/* Breadcrumb: tokens only. Never wider than its parent; long labels are cut with an ellipsis. */
.afw-crumbs{display:block;min-width:0;max-width:100%;font-size:10.5px;color:var(--muted)}
.afw-crumbs-list{display:flex;align-items:center;flex-wrap:nowrap;min-width:0;margin:0;padding:0;list-style:none;overflow:hidden}
.afw-crumbs-item{display:flex;align-items:center;min-width:0;flex:0 1 auto}
.afw-crumbs-item+.afw-crumbs-item::before{content:"/";flex:none;margin:0 6px;color:var(--quiet)}
.afw-crumbs-link,.afw-crumbs-current{display:block;min-width:0;max-width:24ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-radius:4px;padding:2px 3px}
.afw-crumbs-link{color:var(--muted);text-decoration:none}
.afw-crumbs-link:hover{color:var(--orange-deep);text-decoration:underline}
.afw-crumbs-link:focus-visible,.afw-crumbs-ellipsis:focus-visible{outline:2px solid var(--orange);outline-offset:1px}
.afw-crumbs-current{color:var(--ink);font-weight:650}
.afw-crumbs-ellipsis{font:inherit;line-height:1;color:var(--muted);background:var(--panel2);border:1px solid var(--line2);border-radius:5px;padding:1px 7px 4px;cursor:pointer}
.afw-crumbs-ellipsis:hover,.afw-crumbs-ellipsis[aria-expanded=true]{background:var(--hover);color:var(--ink)}
@media(max-width:720px){
/* mobile: only the parent and the current item */
.afw-crumbs-item:nth-last-child(n+3){display:none}
.afw-crumbs-item:nth-last-child(2)::before{display:none}
.afw-crumbs-link{max-width:16ch}
.afw-crumbs-current{max-width:20ch}
}
/* Card / Board system. Tokens only: --sf-* surface aliases mapped by [data-surface] (src/tokens/theme.css), light/dark/density aware. */
.afw-card-host{display:block;min-width:0}
.afw-card{--tone:var(--sf-fg2);position:relative;box-sizing:border-box;display:flex;flex-direction:column;gap:10px;min-width:0;width:100%;height:100%;padding:calc(var(--card-pad) - 2px) var(--card-pad);
 border:1px solid var(--sf-bd);border-radius:12px;background:var(--sf-bg);color:var(--sf-fg);box-shadow:var(--sf-shadow);overflow:hidden;font:inherit;text-align:left;text-decoration:none;line-height:1.4;isolation:isolate}
.afw-card>*{position:relative;z-index:1}
.afw-card::before{content:"";position:absolute;inset:0;z-index:0;pointer-events:none;opacity:0;background:radial-gradient(120% 100% at 100% 0,color-mix(in srgb,var(--sf-icon) 20%,transparent),transparent 62%)}
.afw-card .i{width:16px;height:16px;stroke-width:1.6}
.afw-sr{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
/* typography */
.afw-card-title{margin:0;font-size:12.5px;font-weight:600;letter-spacing:-.015em;line-height:1.3;color:var(--sf-fg)}
.afw-card-text{margin:0;font-size:10.5px;line-height:1.55;color:var(--sf-fg2)}
.afw-card-eyebrow{font-size:9.5px;font-weight:700;letter-spacing:.15em;text-transform:uppercase;color:var(--sf-icon);line-height:1.3}
.afw-card-label{font-size:10.5px;font-weight:500;color:var(--sf-fg2);line-height:1.3}
.afw-card-main{display:flex;flex-direction:column;gap:3px;min-width:0;flex:1}
span.afw-card-title,span.afw-card-text,span.afw-card-eyebrow{display:block}
/* icon tile and trailing glyph */
.afw-card-icon{flex:none;width:32px;height:32px;display:grid;place-items:center;border-radius:9px;color:var(--sf-icon);background:color-mix(in srgb,var(--sf-icon) 13%,transparent);border:1px solid color-mix(in srgb,var(--sf-icon) 28%,transparent)}
.afw-card-icon .i{width:17px;height:17px}
.afw-card-icon.sm{width:28px;height:28px;border-radius:8px}
.afw-card-icon.sm .i{width:15px;height:15px}
.afw-card-go{flex:none;align-self:center;width:24px;height:24px;display:grid;place-items:center;border-radius:50%;color:var(--sf-icon);border:1px solid color-mix(in srgb,var(--sf-icon) 32%,transparent)}
.afw-card-go .i{width:13px;height:13px;stroke-width:1.8}
.afw-card-go.solid{background:color-mix(in srgb,var(--sf-icon) 16%,transparent)}
/* row-style cards */
.afw-card[data-role="navigation"],.afw-card[data-role="action"],.afw-card[data-state="empty"]{flex-direction:row;align-items:center;gap:11px}
.afw-card[data-state="empty"]{align-items:flex-start}
.afw-card[data-role="navigation"] .afw-card-main,.afw-card[data-role="action"] .afw-card-main{gap:2px}
/* interactive cards: the card is the one interactive target */
.afw-card[data-interactive]{cursor:pointer;appearance:none;-webkit-appearance:none}
.afw-card:focus-visible{outline:2px solid var(--sf-focus);outline-offset:2px}
.afw-card[data-interactive]:hover:not([data-disabled]){border-color:color-mix(in srgb,var(--sf-icon) 60%,var(--sf-bd))}
.afw-card[data-interactive]:hover:not([data-disabled])::before{opacity:1}
.afw-card[data-interactive]:hover:not([data-disabled]) .afw-card-go{background:var(--sf-icon);color:var(--sf-ref);border-color:var(--sf-icon)}
.afw-card[data-interactive]:active:not([data-disabled]){transform:translateY(0)}
.afw-card[data-selected]{box-shadow:inset 0 0 0 1.5px var(--sf-focus),var(--sf-shadow);border-color:var(--sf-focus)}
.afw-card[data-selected] .afw-card-go{background:var(--sf-icon);color:var(--sf-ref);border-color:var(--sf-icon)}
.afw-card[data-selected]::before{opacity:1}
.afw-card[data-disabled]{opacity:.62;cursor:not-allowed;filter:saturate(.6)}
.afw-card[data-state="loading"][data-interactive]{cursor:progress}
/* hero / feature board */
.afw-card[data-role="hero"]{display:block;min-height:156px;padding:22px 24px;border-radius:14px}
.afw-card[data-role="hero"] .afw-card-main{max-width:60%;gap:8px}
.afw-card[data-role="hero"] .afw-card-title{font-size:21px;line-height:1.22;letter-spacing:-.04em;font-weight:600}
.afw-card[data-role="hero"] .afw-card-text{font-size:11px;line-height:1.6;max-width:54ch}
.afw-card-top{display:flex;flex-wrap:wrap;gap:6px 10px;align-items:center}
.afw-card[data-role="info"] .afw-card-head{justify-content:flex-start}
.afw-card-art{position:absolute!important;z-index:0!important;top:0;right:0;bottom:0;width:50%;color:var(--sf-icon);pointer-events:none}
.afw-card-motif{display:block;width:100%;height:100%}
.afw-card-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:6px}
.afw-card[data-role="hero"] .afw-card-actions [data-afw-component="button"]{min-height:30px}
.afw-card[data-surface="accent"] .afw-card-actions [data-afw-variant="primary"]{background:linear-gradient(140deg,#5a3d27,#3b2a1d);border-color:#3b2a1d;color:#fff5e8}
.afw-card[data-surface="board"] .afw-card-actions [data-afw-variant="outline"]{background:#ffffff0f;border-color:#f5d6a85c;color:var(--sf-fg)}
.afw-card[data-surface="board"] .afw-card-actions [data-afw-variant="outline"]:hover:not(:disabled){background:#ffffff1c;border-color:#f5d6a8a0}
.afw-card[data-surface="accent"] .afw-card-actions [data-afw-variant="outline"]{background:transparent;border-color:#2b1d1066;color:var(--sf-fg)}
.afw-card-actions [data-afw-component="button"]:focus-visible,.afw-card-link:focus-visible{outline:2px solid var(--sf-focus);outline-offset:2px}
/* badge and delta chips */
.afw-card-badge,.afw-card-delta{--tone:var(--sf-fg2);display:inline-flex;align-items:center;gap:5px;flex:none;font-size:10px;font-weight:650;line-height:1.2;padding:2px 8px 2px 6px;border-radius:99px;color:var(--tone);background:color-mix(in srgb,var(--tone) 12%,transparent);border:1px solid color-mix(in srgb,var(--tone) 34%,transparent);white-space:nowrap}
.afw-card-badge .i{width:12px;height:12px;stroke-width:2}
[data-tone="ok"]{--tone:var(--sf-ok)}[data-tone="warn"]{--tone:var(--sf-warn)}[data-tone="bad"]{--tone:var(--sf-bad)}[data-tone="neutral"]{--tone:var(--sf-fg2)}
.afw-card-delta{padding:2px 8px;font-weight:600}
.afw-card-delta b{font-weight:650}
.afw-card-delta-glyph{font-size:8px;line-height:1}
.afw-card-delta-label{font-weight:500;color:var(--sf-fg3);margin-left:2px}
/* KPI */
.afw-card[data-role="kpi"]{gap:6px}
.afw-card-head{display:flex;align-items:center;justify-content:space-between;gap:10px;min-width:0}
.afw-card[data-role="status"] .afw-card-head{align-items:flex-start}
.afw-card-value{display:flex;align-items:baseline;gap:5px;margin-top:2px}
.afw-card-num{font-size:28px;font-weight:600;letter-spacing:-.045em;line-height:1.05;color:var(--sf-fg)}
.afw-card-unit{font-size:12px;font-weight:500;color:var(--sf-fg3)}
.afw-card-foot{display:flex;align-items:flex-end;justify-content:space-between;gap:10px;min-height:22px;margin-top:auto}
.afw-card-foot.between{align-items:center}
.afw-card-spark{display:block;flex:0 1 46%;min-width:64px;height:34px;margin-left:auto}
/* status / health */
.afw-card-meter{height:6px;border-radius:4px;background:color-mix(in srgb,var(--sf-fg) 12%,transparent);overflow:hidden}
.afw-card-meter i{display:block;height:100%;border-radius:4px;background:var(--tone)}
.afw-card-meter[data-tone="neutral"] i{background:var(--sf-icon)}
.afw-card-meter-label{display:flex;justify-content:space-between;gap:8px;font-size:10px;color:var(--sf-fg3);margin-top:-4px}
.afw-card-meta{display:inline-flex;align-items:center;gap:6px;font-size:10px;color:var(--sf-fg3)}
.afw-card-meta .i{width:13px;height:13px;color:var(--sf-icon)}
/* content / media */
.afw-card[data-role="content"]{padding:0;gap:0}
.afw-card[data-role="content"]>.afw-card-main{padding:12px var(--card-pad) 4px}
.afw-card[data-role="content"]>.afw-card-foot{padding:6px var(--card-pad) 13px;margin-top:0}
.afw-card-media{position:relative;height:92px;overflow:hidden;color:var(--sf-board-icon);background:var(--sf-board-bg);border-bottom:1px solid var(--sf-bd)}
.afw-card-media[data-tone="gold"]{background:var(--sf-accent-bg);color:var(--sf-accent-icon)}
.afw-card-media[data-tone="tint"]{background:var(--sf-tint-bg);color:var(--sf-tint-icon)}
.afw-card-media img{display:block;width:100%;height:100%;object-fit:cover}
.afw-card-media-art{position:absolute;inset:0}
.afw-card-media-tag{position:absolute;left:10px;top:10px;font-size:9px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;padding:2px 8px;border-radius:99px;background:#1e1612a6;color:#fff5e8;border:1px solid #f5d6a85c}
.afw-card-link{appearance:none;display:inline-flex;align-items:center;gap:5px;font:inherit;font-size:10.5px;font-weight:650;color:var(--sf-icon);background:none;border:0;padding:3px 2px;cursor:pointer;border-radius:5px}
.afw-card-link .i{width:13px;height:13px;stroke-width:1.8;transition:transform .15s}
.afw-card-link:hover .i{transform:translateX(2px)}
.afw-card-link:hover{text-decoration:underline;text-underline-offset:3px}
/* info / summary */
.afw-card-dl{margin:0;display:flex;flex-direction:column}
.afw-card-dl>div{display:flex;justify-content:space-between;align-items:baseline;gap:12px;padding:6px 0;border-top:1px solid color-mix(in srgb,var(--sf-fg) 11%,transparent)}
.afw-card-dl>div:first-child{border-top:0;padding-top:2px}
.afw-card-dl dt{font-size:10.5px;color:var(--sf-fg2)}
.afw-card-dl dd{margin:0;font-size:11px;font-weight:600;color:var(--sf-fg);text-align:right;font-variant-numeric:tabular-nums}
.afw-card-note{margin:0;font-size:10px;line-height:1.5;color:var(--sf-fg3)}
/* loading skeleton */
.afw-card-skel{display:flex;flex-direction:column;gap:9px;width:100%;padding:3px 0}
.afw-card-skel-line{display:block;height:9px;width:var(--w,80%);border-radius:5px;background:linear-gradient(90deg,color-mix(in srgb,var(--sf-fg) 10%,transparent),color-mix(in srgb,var(--sf-fg) 20%,transparent),color-mix(in srgb,var(--sf-fg) 10%,transparent));background-size:220% 100%}
.afw-card-skel-line.head{height:13px}
.afw-card[data-state="loading"][data-role="hero"] .afw-card-art{opacity:.4}
.afw-card[data-state="loading"][data-role="content"]{padding:calc(var(--card-pad) - 2px) var(--card-pad)}
/* grid / board */
.afw-card-grid{container-type:inline-size;container-name:afw-cards;min-width:0}
.afw-card-grid-in{display:grid;gap:12px;grid-template-columns:minmax(0,1fr);align-items:stretch}
.afw-card-cell{min-width:0;display:flex;container-type:inline-size;container-name:afw-card-cell}
.afw-card-cell>.afw-card{flex:1 1 auto}
.afw-card-cell[data-span="full"]{grid-column:1/-1}
@container afw-cards (min-width:440px){.afw-card-grid-in{grid-template-columns:repeat(2,minmax(0,1fr))}.afw-card-cell[data-span="2"]{grid-column:span 2}.afw-card-cell[data-span="3"]{grid-column:1/-1}}
@container afw-cards (min-width:660px){.afw-card-grid-in{grid-template-columns:repeat(3,minmax(0,1fr))}}
@container afw-cards (min-width:900px){.afw-card-grid-in{grid-template-columns:repeat(4,minmax(0,1fr))}.afw-card-cell[data-span="3"]{grid-column:span 3}}
@container afw-card-cell (max-width:520px){.afw-card[data-role="hero"]{padding:18px 18px 20px}.afw-card[data-role="hero"] .afw-card-main{max-width:100%}.afw-card[data-role="hero"] .afw-card-art{width:72%;opacity:.4}.afw-card[data-role="hero"] .afw-card-title{font-size:19px}}
/* R2g: in a narrower hero the contour motif fades out toward the text instead of running through it */
@container afw-ch (max-width:720px){.afw-card[data-role="hero"] .afw-card-art{width:60%;opacity:.7;-webkit-mask-image:linear-gradient(90deg,transparent 0,#000 60%);mask-image:linear-gradient(90deg,transparent 0,#000 60%)}}
@container afw-ch (max-width:520px){.afw-card[data-role="hero"] .afw-card-art{width:70%;opacity:.45;-webkit-mask-image:linear-gradient(90deg,transparent 10%,#000 75%);mask-image:linear-gradient(90deg,transparent 10%,#000 75%)}}
@media(max-width:730px){.afw-card[data-role="hero"] .afw-card-main{max-width:100%}.afw-card[data-role="hero"] .afw-card-art{width:72%;opacity:.4}}
@media(prefers-reduced-motion:no-preference){
 .afw-card{transition:transform .16s ease,border-color .16s ease,box-shadow .16s ease,filter .16s}
 .afw-card::before{transition:opacity .2s ease}
 .afw-card-go{transition:background .16s,color .16s,border-color .16s,transform .16s}
 .afw-card[data-interactive]:hover:not([data-disabled]){transform:translateY(-1px)}
 .afw-card[data-interactive]:hover:not([data-disabled]) .afw-card-go{transform:translate(1px,-1px)}
 .afw-card-skel-line{animation:afw-card-shimmer 1.4s linear infinite}
}
@keyframes afw-card-shimmer{from{background-position:220% 0}to{background-position:-220% 0}}
@media(forced-colors:active){.afw-card{border:1px solid CanvasText}.afw-card:focus-visible{outline:2px solid Highlight}.afw-card[data-selected]{outline:2px solid Highlight}}
/* demo helpers (icon sheet, motif sheet) */
.afw-iconsheet{display:grid;grid-template-columns:repeat(auto-fill,minmax(112px,1fr));gap:8px}
.afw-iconsheet-cell{display:flex;align-items:center;gap:8px;padding:7px 9px;border:1px solid var(--line);border-radius:9px;background:var(--panel);color:var(--orange-deep);min-width:0}
.afw-iconsheet-cell .i{width:20px;height:20px;stroke-width:1.6;flex:none}
.afw-iconsheet-cell code{font-size:9.5px;color:var(--muted);background:none;padding:0;overflow:hidden;text-overflow:ellipsis}
.afw-iconsheet.motifs{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}
.afw-motif-cell{margin:0;display:flex;flex-direction:column;gap:5px}
.afw-motif-cell .afw-card-media{height:76px;border:1px solid var(--line);border-radius:9px}
.afw-motif-cell figcaption{font-size:9.5px;color:var(--muted)}
/* demo plane: the cards sit on the page colour like on the real dashboard */
.afw-card-demo{padding:14px;border-radius:12px;background:var(--page);border:1px solid var(--line);display:flex;flex-direction:column;gap:10px}
.afw-card-demo .afw-kit-note{margin:0}
/* R2b (AFW-DS-02): hero key figures, dense status row, panel (section frame) */
.afw-card[data-role="hero"]{display:flex;flex-direction:column}
.afw-card[data-role="hero"] .afw-card-main{flex:none}
.afw-card-stats{display:flex;flex-wrap:wrap;gap:12px 0;margin:auto 0 0;padding:14px 0 0;border-top:1px solid color-mix(in srgb,var(--sf-icon) 24%,transparent)}
.afw-card[data-role="hero"]>.afw-card-main:has(+.afw-card-stats){margin-bottom:18px}
.afw-card-stats>div{display:flex;flex-direction:column;gap:3px;padding:0 24px;min-width:0;border-left:1px solid color-mix(in srgb,var(--sf-icon) 24%,transparent)}
.afw-card-stats>div:first-child{padding-left:0;border-left:0}
.afw-card-stats dt{font-size:10px;font-weight:500;letter-spacing:.02em;color:var(--sf-fg3);line-height:1.3}
.afw-card-stats dd{margin:0;display:flex;align-items:baseline;gap:4px}
.afw-card-stats b{font-size:20px;font-weight:600;letter-spacing:-.04em;line-height:1.1;color:var(--sf-fg);font-variant-numeric:tabular-nums}
.afw-card-stats dd span{font-size:11px;color:var(--sf-fg3)}
.afw-card[data-role="status"][data-dense]{flex-direction:row;align-items:center;gap:11px;padding-top:9px;padding-bottom:9px}
.afw-card[data-role="status"][data-dense] .afw-card-main{gap:1px}
.afw-card[data-role="status"][data-dense] .afw-card-text{font-size:10px;color:var(--sf-fg3)}
.afw-card-panel{display:flex;flex-direction:column;gap:12px;min-width:0;box-sizing:border-box}
.afw-card-panel[data-frame="true"]{padding:calc(var(--card-pad) - 2px) var(--card-pad);border:1px solid var(--sf-bd);border-radius:12px;background:var(--sf-bg);color:var(--sf-fg);box-shadow:var(--sf-shadow)}
.afw-card-panel[data-frame="false"]{--sf-fg:var(--ink);--sf-fg2:color-mix(in srgb,var(--ink) 74%,var(--page));--sf-fg3:color-mix(in srgb,var(--ink) 66%,var(--page));--sf-icon:var(--orange-deep);--sf-focus:var(--orange)}
.afw-card-panel-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;min-height:34px}
.afw-card-panel-titles{min-width:0}
.afw-card-panel-title{margin:0;font-size:13px;font-weight:600;letter-spacing:-.02em;line-height:1.3;color:var(--sf-fg)}
.afw-card-panel-sub{margin:2px 0 0;font-size:10.5px;line-height:1.4;color:var(--sf-fg2)}
.afw-card-panel-body{display:flex;flex-direction:column;gap:8px;min-width:0;flex:1}
.afw-card-panel-body>.afw-card-host{flex:1 1 auto;display:flex}
.afw-card-panel-body>.afw-card-host>.afw-card{flex:1 1 auto}
.afw-card-panel .afw-card-link{flex:none;padding:3px 2px}
/* timeline inside a panel takes the surface tokens (day label, dot, text) */
.afw-card-panel .afw-tl{color:var(--sf-fg)}
.afw-card-panel .afw-tl-day{position:static;background:none;color:var(--sf-icon);font-weight:650}
.afw-card-panel .afw-tl-dot{border-color:var(--sf-ref);background:var(--sf-icon)}
.afw-card-panel .afw-tl-list{border-left-color:color-mix(in srgb,var(--sf-fg) 16%,transparent)}
.afw-card-panel .afw-tl-time{color:var(--sf-fg3)}
.afw-card-panel .afw-tl-action{color:var(--sf-fg2)}
.afw-card-panel .afw-tl-actor{color:var(--sf-fg)}
/* panel with the heading on the page plane and the body as a surface card (aligns headings with unframed columns) */
.afw-card-panel[data-frame="body"]{--sf-fg:var(--ink);--sf-fg2:color-mix(in srgb,var(--ink) 74%,var(--page));--sf-fg3:color-mix(in srgb,var(--ink) 66%,var(--page));--sf-icon:var(--orange-deep);--sf-focus:var(--orange)}
.afw-card-panel[data-frame="body"]>.afw-card-panel-body{box-sizing:border-box;padding:calc(var(--card-pad) - 2px) var(--card-pad);border:1px solid var(--sf-bd);border-radius:12px;background:var(--sf-bg);color:var(--sf-fg);box-shadow:var(--sf-shadow)}
.afw-card-panel .afw-tl-end{display:none}
.afw-card[data-role="info"] .afw-card-foot{margin-top:auto;padding-top:4px}
.afw-card[data-role="info"] .afw-card-note+.afw-card-foot,.afw-card[data-role="info"] .afw-card-dl+.afw-card-foot{margin-top:auto}
.afw-card-panel .afw-tl-list{gap:17px}
.afw-card-panel .afw-tl-groups{gap:22px}
/* contrast: chip text is pulled toward the surface text colour so tone text stays >= 4.5:1 on its own tinted chip */
.afw-card-badge,.afw-card-delta{color:color-mix(in srgb,var(--tone) 80%,var(--sf-fg))}
.afw-card-delta-label{color:var(--sf-fg2)}
.afw-card-panel[data-frame="false"],.afw-card-panel[data-frame="body"]{--sf-icon:color-mix(in srgb,var(--orange-deep) 78%,var(--ink))}
/* R2f (AFW-DS-02): narrow-card behaviour by container width, KPI period, info status block, compact action, unbreakable segments */
.afw-card-host{container-type:inline-size;container-name:afw-ch}
.afw-card-seg{white-space:nowrap}
.afw-card-period{font-weight:500;color:var(--sf-fg3);white-space:nowrap}
.afw-card-sect{margin-top:4px;padding-top:9px;border-top:1px solid color-mix(in srgb,var(--sf-fg) 20%,transparent);font-size:9.5px;font-weight:700;letter-spacing:.13em;text-transform:uppercase;color:var(--sf-fg3);line-height:1.3}
.afw-card-dl[data-kind="status"]>div:first-child{padding-top:4px}
.afw-card-dl dd .afw-card-badge{vertical-align:baseline}
.afw-card[data-role="action"][data-dense]{gap:10px;padding-top:7px;padding-bottom:7px}
.afw-card[data-role="action"][data-dense] .afw-card-icon{width:28px;height:28px;border-radius:8px}
.afw-card[data-role="action"][data-dense] .afw-card-go{width:22px;height:22px}
.afw-card[data-role="action"][data-surface="board"]{padding-top:11px;padding-bottom:11px}
@container afw-ch (max-width:260px){
 .afw-card[data-role="kpi"]{gap:4px;padding:12px 13px}
 .afw-card[data-role="kpi"] .afw-card-num{font-size:21px}
 .afw-card[data-role="kpi"] .afw-card-unit{font-size:11px}
 .afw-card[data-role="kpi"] .afw-card-spark{display:none}
 .afw-card[data-role="kpi"] .afw-card-label{font-size:10px}
 .afw-card[data-role="kpi"] .afw-card-head{align-items:flex-start;gap:6px}
 .afw-card[data-role="kpi"] .afw-card-delta{flex:0 1 auto;min-width:0;border:0;background:none;padding:0;white-space:normal;flex-wrap:wrap;row-gap:0}
 .afw-card[data-role="kpi"] .afw-card-delta-label{flex-basis:100%;margin:0;font-size:9.5px}
}
@container afw-ch (max-width:520px){
 /* R2g: a stacked info panel stays compact — the note and the footer link share one row */
 .afw-card[data-role="info"]{flex-flow:row wrap;align-content:flex-start;gap:8px 12px}
 .afw-card[data-role="info"]>*{flex:1 1 100%;min-width:0}
 .afw-card[data-role="info"]>.afw-card-note{flex:1 1 0;align-self:center}
 .afw-card[data-role="info"]>.afw-card-foot{flex:0 0 auto;margin:0 0 0 auto;padding-top:0;min-height:0}
 .afw-card-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}
 .afw-card-stats>div{padding:0 8px 0 10px;display:flex;flex-direction:column}
 .afw-card-stats dd{margin-top:auto}
 .afw-card-stats>div:first-child{padding-left:0}
 .afw-card-stats b{font-size:17px}
 .afw-card-stats dt{font-size:9.5px}
}
/* QA (AFW-DS-02): a text that is one single segment (no " · ") must wrap, otherwise a dense status text runs under its badge (W4) */
.afw-card-text>.afw-card-seg:only-child{white-space:normal}
/* hero key figures never break a number ("1 284 300 Kč"); the unit moves under the value instead (W3) */
.afw-card-stats b{white-space:nowrap}
.afw-card-stats dd{flex-wrap:wrap;column-gap:4px;row-gap:0}
/* Card / Board gallery composition: GRID LAYOUT AND CAPTIONS ONLY. Every visual style belongs to the card and chart packages.
   The two .cbg-sim-* rules repeat the card's own :hover / :focus-visible rules so the gallery can show those states statically. */
.afw-cbg{container-type:inline-size;container-name:cbg;display:flex;flex-direction:column;gap:16px;min-width:0}
.afw-cbg [hidden]{display:none!important}
.afw-cbg .afw-kit-section{min-width:0}
.cbg-block{display:flex;flex-direction:column;gap:10px;min-width:0;padding-top:6px}
.cbg-block+.cbg-block{border-top:1px solid var(--line);padding-top:14px}
.cbg-h{margin:0;font-size:13px;font-weight:600;color:var(--ink)}
.cbg-h2{margin:6px 0 0;font-size:11px;font-weight:600;color:var(--muted);letter-spacing:.02em}
.cbg-g{display:grid;gap:12px;grid-template-columns:minmax(0,1fr);align-items:stretch;min-width:0}
.cbg-cell{display:flex;flex-direction:column;gap:6px;min-width:0}
.cbg-cap{display:flex;flex-direction:column;gap:1px;min-width:0}
.cbg-cap-t{font-size:11px;font-weight:600;color:var(--ink)}
.cbg-cap-s{font-size:10px;color:var(--muted);overflow-wrap:anywhere}
.cbg-host{flex:1 1 auto;display:flex;flex-direction:column;min-width:0}
.cbg-host>.afw-card{flex:1 1 auto}
.cbg-chart{flex:1 1 auto;min-width:0;border:1px solid var(--line);border-radius:10px;background:var(--paper);padding:10px;box-shadow:var(--shadow-card)}
.cbg-legend{flex:1 1 auto;display:flex;flex-direction:column;gap:6px;border:1px dashed var(--line2);border-radius:10px;padding:12px;justify-content:center}
.cbg-frame{display:flex;flex-direction:column;gap:6px;min-width:0;max-width:100%}
.cbg-frame[data-w="420"]{width:420px}
.cbg-frame[data-w="700"]{width:700px}
.cbg-frame>div{border:1px dashed var(--line2);border-radius:10px;padding:8px;min-width:0}
@container cbg (min-width:440px){.cbg-g[data-n="4"],.cbg-g[data-n="8"]{grid-template-columns:repeat(2,minmax(0,1fr))}}
@container cbg (min-width:620px){.cbg-g[data-n="3"]{grid-template-columns:repeat(3,minmax(0,1fr))}}
@container cbg (min-width:760px){.cbg-g[data-n="2"]{grid-template-columns:repeat(2,minmax(0,1fr))}}
@container cbg (min-width:900px){.cbg-g[data-n="4"],.cbg-g[data-n="8"]{grid-template-columns:repeat(4,minmax(0,1fr))}}
@container cbg (min-width:1000px){.cbg-g[data-n="3w"]{grid-template-columns:repeat(3,minmax(0,1fr))}}
.cbg-sim-hover>.afw-card{border-color:color-mix(in srgb,var(--sf-icon) 60%,var(--sf-bd))}
.cbg-sim-hover>.afw-card::before{opacity:1}
.cbg-sim-hover>.afw-card .afw-card-go{background:var(--sf-icon);color:var(--sf-ref);border-color:var(--sf-icon)}
.cbg-sim-focus>.afw-card{outline:2px solid var(--sf-focus);outline-offset:2px}
.cbg-cap-s{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:9.5px}
/* AFW.chart: tokens only. Host may sit on any [data-surface]; falls back to the neutral surface role. */
.afw-chart{--c-fg:var(--sf-fg,var(--sf-surface-fg));--c-fg2:var(--sf-fg2,var(--sf-surface-fg2));--c-fg3:var(--sf-fg3,var(--sf-surface-fg3));--c-ref:var(--sf-ref,var(--sf-surface-ref));--c-icon:var(--sf-icon,var(--sf-surface-icon));--c-bad:var(--sf-bad,var(--sf-surface-bad));
 display:flex;flex-direction:column;gap:8px;min-width:0;color:var(--c-fg2);font-size:10.5px}
.afw-chart .afw-sr{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.afw-chart-stage{position:relative;height:var(--afw-chart-h,230px);min-width:0}
.afw-chart-stage[hidden],.afw-chart-legend[hidden],.afw-chart-table[hidden],.afw-chart-state[hidden]{display:none}
.afw-chart-stage canvas{display:block;width:100%!important;height:100%!important;transition:opacity .2s}
.afw-chart-stage canvas:focus-visible{outline:2px solid var(--c-icon);outline-offset:2px}
.afw-chart[data-type="sparkline"]{gap:0}
.afw-chart[data-type="sparkline"] .afw-chart-stage{height:var(--afw-chart-h,36px)}
/* legend: mirrors the mark (line key for lines, box for bars/segments); text never wears the data colour */
.afw-chart-legend{display:flex;flex-wrap:wrap;gap:4px 14px;margin:0;padding:0}
.afw-chart-key{appearance:none;display:inline-flex;align-items:center;gap:6px;font:inherit;font-size:10.5px;font-weight:500;color:var(--c-fg2);background:none;border:0;padding:3px 2px;border-radius:5px;cursor:pointer}
.afw-chart-key[aria-pressed="false"]{opacity:.5;text-decoration:line-through}
.afw-chart-key:hover{color:var(--c-fg)}
.afw-chart-key:focus-visible,.afw-chart-toggle:focus-visible,.afw-chart-retry:focus-visible,.afw-chart-table:focus-visible{outline:2px solid var(--c-icon);outline-offset:2px}
.afw-chart-swatch{display:inline-block;flex:none;width:9px;height:9px;border-radius:2.5px}
.afw-chart-swatch[data-shape="line"]{width:14px;height:2.5px;border-radius:2px}
/* text alternative */
.afw-chart-toggle{appearance:none;align-self:flex-start;font:inherit;font-size:10.5px;font-weight:650;color:var(--c-icon);background:none;border:0;padding:3px 2px;border-radius:5px;cursor:pointer}
.afw-chart-toggle:hover{text-decoration:underline;text-underline-offset:3px}
.afw-chart-table{container-type:inline-size;container-name:afw-chart-table;overflow:auto;max-height:280px;border:1px solid color-mix(in srgb,var(--c-fg) 14%,transparent);border-radius:8px}
/* R2h: the shell's global `table{min-width:660px}` and `td{height:var(--table-row-h)}` (locked app-shell.css) must not
   reach the chart table — it kept every row 660 px wide in a 311 px region and pushed the values out of view. */
.afw-chart-table table{width:100%;min-width:0;border-collapse:collapse;font-size:10.5px}
.afw-chart-table caption{text-align:left;padding:7px 10px;font-weight:600;color:var(--c-fg)}
.afw-chart-table th,.afw-chart-table td{height:auto;padding:5px 10px;text-align:right;border-top:1px solid color-mix(in srgb,var(--c-fg) 10%,transparent);font-variant-numeric:tabular-nums;white-space:nowrap}
.afw-chart-table thead th{color:var(--c-fg3);font-weight:600;font-size:10px}
.afw-chart-table th:first-child,.afw-chart-table tbody th{text-align:left;font-weight:500;color:var(--c-fg2)}
.afw-chart-table td{color:var(--c-fg);font-weight:500}
/* R2g: narrow table region (phones, narrow cards) — every row becomes a small record: period on top, each value
   with its column label (data-label), so no value is ever pushed out of view and nothing scrolls sideways. */
@container afw-chart-table (max-width:479px){
 .afw-chart-table table,.afw-chart-table tbody{display:block;font-size:11.5px}
 .afw-chart-table thead{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0 0 0 0)}
 .afw-chart-table caption{display:block}
 .afw-chart-table tr{display:flex;flex-direction:column;gap:2px;padding:7px 10px;border-top:1px solid color-mix(in srgb,var(--c-fg) 10%,transparent)}
 .afw-chart-table tbody th,.afw-chart-table td{display:flex;justify-content:space-between;align-items:baseline;gap:12px;padding:0;border:0;white-space:normal}
 .afw-chart-table tbody th{font-weight:600;color:var(--c-fg);margin-bottom:2px}
 .afw-chart-table td::before{content:attr(data-label);text-align:left;font-weight:500;color:var(--c-fg2)}
}
/* states in the language of the cards */
.afw-chart-state{position:absolute;inset:0;z-index:2;display:flex;align-items:center;justify-content:center;gap:12px;padding:12px 16px;background:var(--c-ref);border-radius:10px}
.afw-chart-state[data-kind="empty"],.afw-chart-state[data-kind="error"]{border:1px dashed color-mix(in srgb,var(--c-fg) 22%,transparent);background:color-mix(in srgb,var(--c-fg) 3.5%,var(--c-ref))}
.afw-chart-state[data-kind="error"]{border:1px solid color-mix(in srgb,var(--c-bad) 45%,transparent);background:color-mix(in srgb,var(--c-bad) 7%,var(--c-ref))}
.afw-chart-state-icon{flex:none;width:32px;height:32px;display:grid;place-items:center;border-radius:9px;color:var(--c-icon);background:color-mix(in srgb,var(--c-icon) 13%,transparent);border:1px solid color-mix(in srgb,var(--c-icon) 28%,transparent)}
.afw-chart-state[data-kind="error"] .afw-chart-state-icon{color:var(--c-bad);background:color-mix(in srgb,var(--c-bad) 12%,transparent);border-color:color-mix(in srgb,var(--c-bad) 38%,transparent)}
.afw-chart-state-icon .i{width:17px;height:17px;stroke-width:1.6}
.afw-chart-state-body{display:flex;flex-direction:column;gap:3px;min-width:0;max-width:34ch}
.afw-chart-state-body strong{font-size:12px;font-weight:600;color:var(--c-fg)}
.afw-chart-state-body span{font-size:10.5px;line-height:1.5;color:var(--c-fg2)}
.afw-chart-state[data-kind="error"] .afw-chart-state-body strong{color:var(--c-bad)}
.afw-chart-retry{appearance:none;align-self:flex-start;margin-top:5px;font:inherit;font-size:10.5px;font-weight:650;color:var(--c-fg);background:none;border:1px solid color-mix(in srgb,var(--c-fg) 30%,transparent);border-radius:7px;padding:4px 10px;cursor:pointer}
.afw-chart-retry:hover{border-color:var(--c-icon);color:var(--c-icon)}
.afw-chart-skel{position:absolute;inset:12px 4px 8px;display:flex;align-items:flex-end;gap:12px}
.afw-chart-skel i{display:block;flex:1;height:var(--h,50%);max-width:24px;border-radius:4px 4px 0 0;background:linear-gradient(180deg,color-mix(in srgb,var(--c-fg) 14%,transparent),color-mix(in srgb,var(--c-fg) 7%,transparent));background-size:100% 220%}
.afw-chart[data-type="sparkline"] .afw-chart-skel{inset:4px 0}
.afw-chart[data-type="sparkline"] .afw-chart-state{padding:0;border-radius:6px}
.afw-chart-state:has(.afw-chart-progress){background:transparent;pointer-events:none;align-items:flex-start}
.afw-chart[data-state="loading"] .afw-chart-stage canvas{opacity:.45}
.afw-chart-progress{position:absolute;top:0;left:0;right:0;height:2px;border-radius:2px;background:linear-gradient(90deg,transparent,var(--c-icon),transparent);background-size:40% 100%;background-repeat:no-repeat}
@media(prefers-reduced-motion:no-preference){
 .afw-chart-skel i{animation:afw-chart-shimmer 1.4s ease-in-out infinite}
 .afw-chart-progress{animation:afw-chart-slide 1.2s linear infinite}
}
@keyframes afw-chart-shimmer{0%,100%{opacity:1}50%{opacity:.5}}
@keyframes afw-chart-slide{from{background-position:-40% 0}to{background-position:140% 0}}
/* chart panel: a surface card frame for demos and compositions */
.afw-chart-panel{box-sizing:border-box;display:flex;flex-direction:column;gap:10px;min-width:0;padding:calc(var(--card-pad) - 2px) var(--card-pad);border:1px solid var(--sf-bd);border-radius:12px;background:var(--sf-bg);color:var(--sf-fg);box-shadow:var(--sf-shadow)}
.afw-chart-panel-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}
.afw-chart-panel-title{margin:0;font-size:12.5px;font-weight:600;letter-spacing:-.015em;color:var(--sf-fg)}
.afw-chart-panel-sub{margin:2px 0 0;font-size:10.5px;color:var(--sf-fg2)}
.afw-chart-panel-body{min-width:0}
.afw-chart-wrap{container-type:inline-size;min-width:0;display:flex;flex-direction:column;gap:12px}
.afw-chart-demo{display:grid;grid-template-columns:minmax(0,1fr);gap:12px}
@container (min-width:600px){.afw-chart-demo{grid-template-columns:repeat(2,minmax(0,1fr))}}
@container (min-width:960px){.afw-chart-demo{grid-template-columns:repeat(3,minmax(0,1fr))}.afw-chart-demo.states{grid-template-columns:repeat(2,minmax(0,1fr))}}
@container (min-width:1200px){.afw-chart-demo.states{grid-template-columns:repeat(4,minmax(0,1fr))}}
.afw-chart[data-view="idle"] .afw-chart-legend,.afw-chart[data-view="idle"] .afw-chart-toggle{display:none}
.afw-chart-demo-btn{appearance:none;font:inherit;font-size:10px;font-weight:650;color:var(--sf-fg);background:none;border:1px solid color-mix(in srgb,var(--sf-fg) 28%,transparent);border-radius:7px;padding:4px 10px;cursor:pointer;white-space:nowrap}
.afw-chart-demo-btn:hover{border-color:var(--sf-icon);color:var(--sf-icon)}
.afw-chart-demo-btn:focus-visible{outline:2px solid var(--sf-focus);outline-offset:2px}
.afw-chart-kpi{display:flex;align-items:flex-end;gap:6px;flex-wrap:wrap}
.afw-chart-kpi-num{font-size:30px;font-weight:600;letter-spacing:-.045em;line-height:1.05}
.afw-chart-kpi-unit{font-size:12px;color:var(--sf-fg3);padding-bottom:3px}
.afw-chart-kpi-spark{flex:1 1 120px;min-width:100px;margin-left:8px}
.afw-chart-swatches{display:flex;flex-wrap:wrap;gap:8px}
.afw-chart-swatch-cell{display:inline-flex;align-items:center;gap:7px;padding:5px 9px;border:1px solid var(--line);border-radius:9px;background:var(--panel)}
.afw-chart-swatch-cell i{display:block;width:16px;height:16px;border-radius:5px}
.afw-chart-swatch-cell code{font-size:9.5px;color:var(--muted);background:none;padding:0}
/* R2f (AFW-DS-02): legend with values (option legendValues) */
.afw-chart-legend[data-values]{display:flex;flex-direction:column;gap:1px}
.afw-chart-legend[data-values] .afw-chart-key{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:8px;width:100%;padding:3px 2px;text-align:left}
.afw-chart-key-val{font-variant-numeric:tabular-nums;color:var(--c-fg);font-weight:600;white-space:nowrap}
/* AFW.codeEditor + sdílený rámec/toolbar editorů (.afw-ed-*, používá i rich-text). Jen tokeny z theme.css. */
.afw-ed{--afw-ed-bar-h:36px;--afw-ed-btn:28px;box-sizing:border-box;display:flex;flex-direction:column;min-width:0;border:1px solid var(--line2);border-radius:8px;background:var(--paper);color:var(--ink);overflow:hidden;container-type:inline-size;font-size:10.5px}
.afw-ed:focus-within{border-color:var(--orange);box-shadow:var(--focus)}
.afw-ed-bar{box-sizing:border-box;display:flex;align-items:center;gap:2px;height:var(--afw-ed-bar-h);flex:none;padding:0 6px;background:var(--panel2);border-bottom:1px solid var(--line);min-width:0;overflow:hidden}
.afw-ed-mode{display:inline-flex;align-items:center;height:20px;padding:0 8px;margin-right:2px;border-radius:5px;background:var(--tint);color:var(--orange-deep);font-size:9.5px;font-weight:650;letter-spacing:.04em;text-transform:uppercase;white-space:nowrap}
.afw-ed-ro{display:inline-flex;align-items:center;gap:4px;color:var(--muted);font-size:10px;white-space:nowrap}
.afw-ed-ro .i{width:14px;height:14px}
.afw-ed-sep{flex:none;width:1px;height:16px;margin:0 4px;background:var(--line2)}
.afw-ed-spacer{flex:1 1 auto;min-width:4px}
.afw-ed-btn{appearance:none;box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;gap:6px;flex:none;min-width:var(--afw-ed-btn);height:var(--afw-ed-btn);padding:0 6px;border:1px solid transparent;border-radius:6px;background:none;color:var(--ink);font:inherit;font-size:10.5px;font-weight:550;line-height:1;cursor:pointer;white-space:nowrap}
.afw-ed-btn .i{width:16px;height:16px;stroke-width:1.7}
.afw-ed-btn:hover:not(:disabled){background:var(--hover);border-color:var(--line)}
.afw-ed-btn[aria-pressed="true"]{background:var(--selected);border-color:color-mix(in srgb,var(--orange) 40%,transparent);color:var(--orange-deep)}
.afw-ed-btn:focus-visible,.afw-ce-count:focus-visible,.afw-ce-diag:focus-visible,.afw-ce-panel-head:focus-visible{outline:2px solid var(--orange);outline-offset:-2px}
.afw-ed-btn:disabled{opacity:.4;cursor:not-allowed}
.afw-ed-foot{box-sizing:border-box;display:flex;align-items:center;gap:12px;flex:none;min-height:26px;padding:3px 10px;border-top:1px solid var(--line);background:var(--panel);color:var(--muted);font-size:9.5px;min-width:0}
.afw-ed kbd{font:inherit;font-size:9px;font-weight:600;padding:1px 5px;border:1px solid var(--line2);border-bottom-width:2px;border-radius:4px;background:var(--paper);color:var(--ink)}
/* ---- code editor ---------------------------------------------------------------------------------- */
.afw-ce-stage{position:relative;height:var(--afw-ce-h,280px);flex:none;min-width:0}
.afw-ce-host{position:absolute;inset:0}
.afw-ce-loading{margin:0;padding:14px;color:var(--muted)}
.afw-ce-counts{display:inline-flex;gap:2px;align-items:center;flex:none}
.afw-ce-count{appearance:none;display:inline-flex;align-items:center;gap:5px;height:var(--afw-ed-btn);padding:0 8px;border:1px solid transparent;border-radius:6px;background:none;font:inherit;font-size:10.5px;font-weight:650;cursor:pointer;white-space:nowrap}
.afw-ce-count .i{width:15px;height:15px}
.afw-ce-count[data-sev="error"]{color:var(--red);background:var(--red-bg)}
.afw-ce-count[data-sev="warning"]{color:var(--warn);background:var(--warn-bg)}
.afw-ce-count:hover{border-color:currentColor}
.afw-ce-ok{display:inline-flex;align-items:center;gap:5px;padding:0 6px;color:var(--green);font-weight:600;white-space:nowrap}
.afw-ce-ok .i{width:15px;height:15px}
.afw-ce-pos{font-variant-numeric:tabular-nums;white-space:nowrap}
.afw-ce-status{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink)}
.afw-ce-hint{margin-left:auto;white-space:nowrap}
.afw-ce-hint[data-armed="true"]{color:var(--orange-deep);font-weight:650}
.afw-ce-panel{border-top:1px solid var(--line);background:var(--paper);flex:none}
.afw-ce-panel[hidden]{display:none}
.afw-ce-panel-head{appearance:none;box-sizing:border-box;display:flex;align-items:center;gap:8px;width:100%;height:30px;padding:0 10px;border:0;background:var(--panel);color:var(--ink);font:inherit;font-size:10.5px;font-weight:650;text-align:left;cursor:pointer}
.afw-ce-panel-head .i{margin-left:auto;width:16px;height:16px;transition:transform .15s}
.afw-ce-panel-head[aria-expanded="true"] .i{transform:rotate(180deg)}
.afw-ce-panel-note{font-weight:500;color:var(--warn)}
.afw-ce-list{list-style:none;margin:0;padding:0;max-height:132px;overflow:auto}
.afw-ce-list[hidden]{display:none}
.afw-ce[data-stale="true"] .afw-ce-list{opacity:.55}
.afw-ce-diag{appearance:none;box-sizing:border-box;display:flex;align-items:center;gap:8px;width:100%;min-height:28px;padding:4px 10px;border:0;border-top:1px solid var(--line);background:none;color:var(--ink);font:inherit;font-size:10.5px;text-align:left;cursor:pointer}
.afw-ce-list li:first-child .afw-ce-diag{border-top:0}
.afw-ce-diag:hover{background:var(--hover)}
.afw-ce-diag[aria-current]{background:var(--selected)}
.afw-ce-diag .i{flex:none;width:15px;height:15px}
.afw-ce-diag[data-sev="error"] .i{color:var(--red)}
.afw-ce-diag[data-sev="warning"] .i{color:var(--warn)}
.afw-ce-diag[data-sev="info"] .i{color:var(--chart-2)}
.afw-ce-diag-pos{flex:none;min-width:38px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:10px;color:var(--muted);font-variant-numeric:tabular-nums}
.afw-ce-diag-msg{min-width:0;flex:1 1 auto}
.afw-ce-count b{font-weight:700}
@container (max-width:420px){
 .afw-ce-cw,.afw-ed-rotx{display:none}
}
@container (max-width:520px){
 .afw-ed-lbl{display:none}
 .afw-ce-h1{display:none}
 .afw-ce-pos{display:none}
}
/* ---- Ace téma z tokenů (light i dark přes proměnné; vlastní třída ace-afw, Ace témata se nepoužívají) ---- */
.afw-ce .ace_editor{background:transparent;color:var(--ink);font-family:ui-monospace,SFMono-Regular,"JetBrains Mono",Menlo,Consolas,monospace;line-height:19px}
.afw-ce .ace_editor .ace_gutter{background:var(--panel2);color:color-mix(in srgb,var(--ink) 55%,var(--panel2));border-right:1px solid var(--line)}
.afw-ce .ace_editor .ace_gutter-cell{padding-left:10px;padding-right:8px}
.afw-ce .ace_editor .ace_gutter-active-line{background:var(--hover);color:var(--ink)}
.afw-ce .ace_editor .ace_marker-layer .ace_active-line{background:color-mix(in srgb,var(--orange) 6%,transparent)}
.afw-ce .ace_editor .ace_marker-layer .ace_selection{background:color-mix(in srgb,var(--orange) 26%,transparent)}
.afw-ce .ace_editor.ace_multiselect .ace_selection.ace_start{box-shadow:0 0 0 2px var(--paper)}
.afw-ce .ace_editor .ace_marker-layer .ace_selected-word{background:color-mix(in srgb,var(--orange) 14%,transparent);border:0}
.afw-ce .ace_editor .ace_marker-layer .ace_bracket{margin:-1px 0 0 -1px;border:1px solid var(--line2)}
.afw-ce .ace_editor .ace_cursor{color:var(--orange-deep)}
.afw-ce .ace_editor .ace_indent-guide{background:none;box-shadow:inset -1px 0 0 color-mix(in srgb,var(--line2) 70%,transparent)}
.afw-ce .ace_editor .ace_print-margin{display:none}
.afw-ce .ace_editor .ace_invisible{color:var(--quiet)}
.afw-ce .ace_editor .ace_scrollbar::-webkit-scrollbar{width:10px;height:10px}
.afw-ce .ace_editor .ace_scrollbar::-webkit-scrollbar-thumb{background:var(--line2);border-radius:6px;border:2px solid transparent;background-clip:content-box}
.afw-ce .ace_editor .ace_comment{color:color-mix(in srgb,var(--ink) 52%,var(--paper));font-style:italic}
.afw-ce .ace_editor .ace_string{color:var(--green)}
.afw-ce .ace_editor .ace_constant.ace_numeric,.afw-ce .ace_editor .ace_constant.ace_language,.afw-ce .ace_editor .ace_constant{color:var(--warn)}
.afw-ce .ace_editor .ace_meta.ace_tag,.afw-ce .ace_editor .ace_variable{color:var(--chart-2)}
.afw-ce .ace_editor .ace_keyword,.afw-ce .ace_editor .ace_list.ace_markup{color:var(--orange-deep)}
.afw-ce .ace_editor .ace_paren,.afw-ce .ace_editor .ace_punctuation{color:var(--muted)}
.afw-ce .ace_editor .ace_text-layer .ace_line{padding-left:6px}
/* gutter anotace (SVG masky Ace, barvy z tokenů) */
.afw-ce .ace_editor .ace_icon_svg.ace_error{background-color:var(--red)}
.afw-ce .ace_editor .ace_icon_svg.ace_warning{background-color:var(--warn)}
.afw-ce .ace_editor .ace_icon_svg.ace_info{background-color:var(--chart-2)}
.afw-ce .ace_editor .ace_gutter-cell.ace_error,.afw-ce .ace_editor .ace_gutter-cell.ace_warning,.afw-ce .ace_editor .ace_gutter-cell.ace_info{background-image:none}
.afw-ce .ace_editor .ace_gutter-cell.ace_error{box-shadow:inset 2px 0 0 var(--red)}
.afw-ce .ace_editor .ace_gutter-cell.ace_warning{box-shadow:inset 2px 0 0 var(--warn)}
.afw-ce .ace_editor .ace_gutter-cell.ace_info{box-shadow:inset 2px 0 0 var(--chart-2)}
/* podtržení diagnostiky */
.afw-ce .ace_editor .ace_marker-layer .afw-ce-sq{position:absolute;border-bottom:2px dotted var(--red);box-sizing:border-box}
.afw-ce .ace_editor .ace_marker-layer .afw-ce-sq-warning{border-bottom-color:var(--warn)}
.afw-ce .ace_editor .ace_marker-layer .afw-ce-sq-info{border-bottom-color:var(--chart-2)}
.afw-ce .ace_editor .ace_tooltip,.ace_tooltip{background:var(--brown);color:#fff5e8;border:1px solid var(--line2);border-radius:8px;font-family:inherit;font-size:10.5px;padding:6px 9px}
.afw-ce[data-readonly] .ace_cursor{display:none}
/* ---- ukázka ------------------------------------------------------------------------------------------ */
.afw-ce-demo{display:grid;grid-template-columns:minmax(0,1fr);gap:12px;container-type:inline-size;min-width:0}
@container (min-width:900px){.afw-ce-demo-2{grid-template-columns:repeat(2,minmax(0,1fr))}}
.afw-ce-card{box-sizing:border-box;display:flex;flex-direction:column;gap:10px;min-width:0;padding:calc(var(--card-pad) - 2px) var(--card-pad);border:1px solid var(--sf-surface-bd);border-radius:12px;background:var(--sf-surface-bg);box-shadow:var(--sf-surface-shadow)}
.afw-ce-card-title{margin:0;font-size:12.5px;font-weight:600;letter-spacing:-.015em;color:var(--sf-surface-fg)}
.afw-ce-card-sub{margin:2px 0 0;font-size:10.5px;color:var(--sf-surface-fg2)}
/* Composition "Přihlášení a přístup": grid layout of the overview + preview tiles. Hero style belongs to the card package. */
.afw-ca{container-type:inline-size;container-name:afw-ca;display:flex;flex-direction:column;gap:16px;min-width:0}
.afw-ca-top{display:grid;gap:16px;grid-template-columns:minmax(0,1fr);min-width:0}
.afw-ca-top>*{min-width:0;display:flex}
.afw-ca-top>.afw-card-host>.afw-card,.afw-ca-top>div>.afw-card{flex:1 1 auto}
.afw-ca-info{flex-direction:column;gap:8px;padding:18px 20px;border:1px solid var(--line);border-radius:14px;background:var(--panel);box-shadow:var(--shadow-card)}
.afw-ca-infoh{margin:0;font-size:13px;font-weight:650;color:var(--ink-strong)}
.afw-ca-tips{margin:0;padding:0 0 0 18px;display:flex;flex-direction:column;gap:6px;font-size:11px;line-height:1.55;color:var(--ink)}
.afw-ca-infoh2{margin-top:8px}
.afw-ca-flow{margin:0;padding:0;list-style:none;display:flex;flex-wrap:wrap;gap:6px 4px;counter-reset:f}
.afw-ca-flow li{counter-increment:f;display:inline-flex;align-items:center;gap:6px;padding:2px 9px 2px 3px;border:1px solid var(--line2);border-radius:99px;background:var(--tint);font-size:10.5px;font-weight:600;color:var(--ink)}
.afw-ca-flow li::before{content:counter(f);display:grid;place-items:center;width:17px;height:17px;border-radius:50%;background:var(--orange);color:#392417;font-size:9.5px;font-weight:700}
.afw-ca-note{margin:auto 0 0;font-size:10.5px;color:var(--muted)}
.afw-ca-grid{display:grid;gap:14px;grid-template-columns:minmax(0,1fr);min-width:0}
.afw-ca-tile{display:flex;flex-direction:column;min-width:0;overflow:hidden;border:1px solid var(--line);border-radius:14px;background:var(--paper);box-shadow:var(--shadow-card)}
.afw-ca-thumb{border-bottom:1px solid var(--line);background:var(--panel2);line-height:0}
.afw-ca-thumb svg{display:block;width:100%;height:auto;aspect-ratio:360/130}
.afw-ca-body{flex:1 1 auto;display:flex;flex-direction:column;gap:8px;padding:14px 16px 16px;min-width:0}
.afw-ca-h{display:flex;align-items:center;gap:9px}
.afw-ca-h h3{margin:0;font-size:13px;font-weight:650;color:var(--ink-strong)}
.afw-ca-ti{flex:none;display:grid;place-items:center;width:28px;height:28px;border-radius:8px;background:var(--tint);border:1px solid var(--line2);color:var(--orange-deep)}
.afw-ca-ti .i{width:15px;height:15px}
.afw-ca-text{margin:0;font-size:11px;line-height:1.6;color:var(--muted)}
.afw-ca-foot{margin-top:auto;padding-top:6px;display:flex;flex-direction:column;align-items:flex-start;gap:10px}
.afw-ca-chips{display:flex;flex-wrap:wrap;gap:6px}
.afw-ca-chip{padding:3px 10px;border:1px solid var(--line2);border-radius:99px;background:var(--panel);color:var(--ink);font:inherit;font-size:10.5px;font-weight:600;line-height:1.5;cursor:pointer}
.afw-ca-chip:hover{background:var(--hover);border-color:var(--gold2)}
.afw-ca-chip:focus-visible{outline:2px solid var(--orange);outline-offset:2px}
@container afw-ca (min-width:560px){.afw-ca-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@container afw-ca (min-width:820px){.afw-ca-top{grid-template-columns:minmax(0,2fr) minmax(0,1fr)}}
@container afw-ca (min-width:1000px){.afw-ca-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
.afw-ca-top>.afw-ca-info{align-self:start}
/* Document Review composition: layout only, tokens only. Visuals of the diff belong to doc-diff, buttons / status / confirm to their packages. */
.afw-cdr{container-type:inline-size;container-name:afw-cdr;display:flex;flex-direction:column;gap:12px;min-width:0}
.afw-cdr [hidden]{display:none!important}
.afw-cdr-head{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:10px 16px;padding:14px var(--card-pad);background:var(--paper);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow-card);min-width:0}
.afw-cdr-titles{min-width:0;display:flex;flex-direction:column;gap:3px}
.afw-cdr-eyebrow{margin:0;font-size:9.5px;font-weight:650;letter-spacing:.06em;text-transform:uppercase;color:var(--orange-deep)}
.afw-cdr-title{margin:0;font-size:20px;line-height:1.2;font-weight:600;letter-spacing:-.035em;color:var(--ink-strong)}
.afw-cdr-meta{margin:0;font-size:10.5px;line-height:1.5;color:var(--muted)}
.afw-cdr-state{flex:none}
.afw-cdr-diff{min-width:0}
/* approval bar: always reachable at the bottom of the scrolling window (also on a phone) */
.afw-cdr-bar{position:sticky;bottom:0;z-index:3;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px 16px;padding:10px var(--card-pad);background:var(--paper);border:1px solid var(--line2);border-radius:12px;box-shadow:0 -10px 24px -16px #4e311c66,var(--shadow-card);min-width:0}
.afw-cdr-bar-info{display:flex;flex-direction:column;gap:2px;min-width:0}
.afw-cdr-bar-info b{font-size:12px;font-weight:620;color:var(--ink)}
.afw-cdr-bar-info span{font-size:10.5px;color:var(--muted)}
.afw-cdr-actions{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end}
.afw-cdr-actions [data-afw-component="button"] svg.i{width:14px;height:14px;margin-right:6px;vertical-align:-2px}
.afw-cdr-form{display:flex;flex-direction:column;gap:10px;width:100%;min-width:0}
.afw-cdr-form .afw-cdr-actions{justify-content:flex-end}
.afw-cdr-result{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px 16px;width:100%;border-radius:8px}
.afw-cdr-result:focus-visible{outline:2px solid var(--orange);outline-offset:3px}
.afw-cdr-result-txt{display:flex;flex-direction:column;gap:2px;min-width:0}
.afw-cdr-result-txt b{font-size:12.5px;font-weight:620}
.afw-cdr-result[data-cdr-result="approved"] .afw-cdr-result-txt b{color:var(--green)}
.afw-cdr-result-txt span{font-size:10.5px;color:var(--muted)}
.afw-cdr-quote{margin:6px 0 0;padding:6px 10px;border-left:3px solid var(--warn);background:var(--warn-bg);border-radius:0 8px 8px 0;font-size:11px;line-height:1.5;color:var(--ink);overflow-wrap:anywhere}
@container afw-cdr (max-width:560px){
 .afw-cdr-title{font-size:17px}
 .afw-cdr-bar{padding:10px 12px}
 .afw-cdr-actions{width:100%}
 .afw-cdr-actions>[data-afw-component="button"]{flex:1 1 0;justify-content:center}
}
/* phones: the window scroller ends exactly at the top of the taskbar (measured 390x844), so the bar sticks to bottom:0 of it, not above it (W1) */
@media(max-width:730px){.afw-cdr{padding-bottom:8px}}
/* a focused element inside the diff is scrolled clear of the sticky bar (WCAG 2.4.11 focus not obscured) */
.afw-cdr-diff :focus{scroll-margin-bottom:112px}.afw-cdr-diff :focus-visible{scroll-margin-bottom:112px}
@container afw-cdr (min-width:1100px){.afw-cdr{max-width:1600px}}
/* Composition installer: page grid + the contents of the installer steps (lists, summary, progress). Tokens only; cards, alerts, progress, stepper and fields keep their own styles. */
.afw-ci-page{container-type:inline-size;container-name:afw-ci-page;display:flex;flex-direction:column;gap:16px;min-width:0}
.afw-ci-grid{display:grid;gap:16px;min-width:0;grid-template-columns:minmax(0,1fr)}
.afw-ci-grid>*{min-width:0;display:flex}
.afw-ci-grid>.afw-card-host>.afw-card{flex:1 1 auto}
.afw-ci-page [hidden]{display:none!important}
@container afw-ci-page (min-width:680px){.afw-ci-top{grid-template-columns:minmax(0,3fr) minmax(0,2fr)}}
@container afw-ci-page (min-width:1000px){.afw-ci-top{grid-template-columns:minmax(0,2fr) minmax(0,1fr)}}
/* six step cards: three columns (two rows) from 660 px of the grid, never 4+2 */
@container afw-cards (min-width:900px){.afw-ci-page .afw-card-grid-in[data-max="3"]{grid-template-columns:repeat(3,minmax(0,1fr))}}
/* installer body (inside the focus mode) */
.afw-ci{max-width:1480px;margin:0 auto;min-width:0}
.afw-ci [hidden]{display:none!important}
.afw-ci-host{min-width:0}
.afw-ci-fields{display:flex;flex-direction:column;gap:12px;min-width:0;max-width:600px}
.afw-ci-fields>.afw-ci-fields,.afw-ci-fields.is-wide{max-width:none}
.afw-ci-fields.is-wide .afw-ci-sum{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,340px),1fr));align-items:stretch}
.afw-ci-sum-sec{display:flex;flex-direction:column}
.afw-ci-h{margin:0 0 8px;font-size:12px;font-weight:650;color:var(--ink-strong)}
.afw-ci-slot-step{font-size:10.5px;font-weight:600;color:var(--sf-board-fg);font-variant-numeric:tabular-nums;white-space:nowrap}
.afw-ci-slot-save{display:inline-flex;align-items:center;gap:6px;font-size:10.5px;color:var(--sf-board-fg2);white-space:nowrap}
.afw-ci-slot-save .i{width:13px;height:13px;color:var(--sf-board-ok)}
@media(max-width:700px){.afw-ci-slot-save{display:none}}
/* step 1: requirements */
.afw-ci-req{display:flex;flex-direction:column;gap:14px;min-width:0}
.afw-ci-hero{min-width:0}
.afw-ci-req .afw-card[data-role="hero"]{min-height:0;padding:18px 22px}
.afw-ci-req .afw-card[data-role="hero"] .afw-card-main{max-width:68%}
.afw-ci-req .afw-card[data-role="hero"] .afw-card-title{font-size:18px}
.afw-ci-checks-box{min-width:0}
.afw-ci-checks{list-style:none;margin:0;padding:0;border:1px solid var(--line);border-radius:10px;background:var(--panel);overflow:hidden}
.afw-ci-check{display:grid;grid-template-columns:28px minmax(0,1fr) auto;align-items:center;gap:10px;padding:9px 12px;border-bottom:1px solid var(--line)}
.afw-ci-check:last-child{border-bottom:0}
.afw-ci-check-ico{display:grid;place-items:center;width:24px;height:24px;border-radius:50%;border:1.5px solid var(--line2);color:var(--muted)}
.afw-ci-check-ico .i{width:13px;height:13px;stroke-width:2}
.afw-ci-check-text{display:flex;flex-direction:column;gap:1px;min-width:0}
.afw-ci-check-name{font-size:11.5px;font-weight:600;color:var(--ink-strong)}
.afw-ci-check-detail{font-size:10.5px;line-height:1.45;color:var(--muted);overflow-wrap:anywhere}
.afw-ci-check-state{font-size:10px;font-weight:650;color:var(--muted);white-space:nowrap}
.afw-ci-check[data-state="ok"] .afw-ci-check-ico{background:var(--green-bg);border-color:var(--green);color:var(--green)}
.afw-ci-check[data-state="ok"] .afw-ci-check-state{color:var(--green)}
.afw-ci-check[data-state="warn"] .afw-ci-check-ico{background:var(--warn-bg);border-color:var(--warn);color:var(--warn)}
.afw-ci-check[data-state="warn"] .afw-ci-check-state{color:var(--warn)}
.afw-ci-check[data-state="running"] .afw-ci-check-ico{border-color:var(--orange);color:var(--orange-deep)}
.afw-ci-check[data-state="running"] .afw-ci-check-state{color:var(--orange-deep)}
.afw-ci-check[data-state="running"] .i,.afw-ci-sub[data-state="running"] .i{animation:afw-ci-spin 1.1s linear infinite}
@media(prefers-reduced-motion:reduce){.afw-ci-check[data-state="running"] .i,.afw-ci-sub[data-state="running"] .i{animation:none}}
@keyframes afw-ci-spin{to{transform:rotate(360deg)}}
.afw-ci-checks-sum{margin:8px 2px 0;font-size:10.5px;color:var(--muted)}
/* step 3: connection test */
.afw-ci-conn{display:flex;flex-direction:column;gap:10px;padding:12px;border:1px solid var(--line);border-radius:10px;background:var(--panel);min-width:0}
.afw-ci-conn-row{display:flex;flex-wrap:wrap;align-items:center;gap:10px}
.afw-ci-conn-status{font-size:10.5px;color:var(--muted);min-width:0}
.afw-ci-conn-status:empty{display:none}
.afw-ci-conn-result:empty{display:none}
/* step 5: summary */
.afw-ci-sum{display:flex;flex-direction:column;gap:10px}
.afw-ci-sum-sec{border:1px solid var(--line);border-radius:10px;background:var(--panel);padding:10px 12px;min-width:0}
.afw-ci-sum-head{display:flex;align-items:center;gap:9px}
.afw-ci-sum-ico{flex:none;display:grid;place-items:center;width:26px;height:26px;border-radius:8px;color:var(--orange-deep);background:color-mix(in srgb,var(--orange) 14%,transparent)}
.afw-ci-sum-ico .i{width:15px;height:15px}
.afw-ci-sum-title{flex:1 1 auto;margin:0;min-width:0;font-size:12px;font-weight:650;color:var(--ink-strong)}
.afw-ci-sum-dl{margin:8px 0 0;display:flex;flex-direction:column}
.afw-ci-sum-dl>div{display:grid;grid-template-columns:minmax(96px,1fr) minmax(0,2.2fr);gap:12px;padding:5px 0;border-top:1px solid var(--line);font-size:11px}
.afw-ci-sum-dl dt{color:var(--muted)}
.afw-ci-sum-dl dd{margin:0;font-weight:600;color:var(--ink-strong);overflow-wrap:anywhere}
.afw-ci-edit{min-height:28px}
/* step 6: install */
.afw-ci-install{display:flex;flex-direction:column;gap:14px;min-width:0}
.afw-ci-run{display:flex;flex-direction:column;gap:12px;min-width:0}
.afw-ci-run-head{margin:0;font-size:11.5px;line-height:1.55;color:var(--ink)}
.afw-ci-subs{list-style:none;margin:0;padding:0;border:1px solid var(--line);border-radius:10px;background:var(--panel);overflow:hidden}
.afw-ci-sub{display:grid;grid-template-columns:28px minmax(0,1fr) auto;align-items:center;gap:10px;padding:8px 12px;border-bottom:1px solid var(--line);font-size:11px;color:var(--muted)}
.afw-ci-sub:last-child{border-bottom:0}
.afw-ci-sub-ico{display:grid;place-items:center;width:22px;height:22px;border-radius:50%;border:1.5px solid var(--line2)}
.afw-ci-sub-ico .i{width:12px;height:12px;stroke-width:2}
.afw-ci-sub-state{font-size:10px;font-weight:650;white-space:nowrap}
.afw-ci-sub[data-state="done"]{color:var(--ink)}
.afw-ci-sub[data-state="done"] .afw-ci-sub-ico{background:var(--green-bg);border-color:var(--green);color:var(--green)}
.afw-ci-sub[data-state="done"] .afw-ci-sub-state{color:var(--green)}
.afw-ci-sub[data-state="running"]{color:var(--ink-strong);font-weight:600;background:var(--tint)}
.afw-ci-sub[data-state="running"] .afw-ci-sub-ico{border-color:var(--orange);color:var(--orange-deep)}
.afw-ci-sub[data-state="error"]{color:var(--ink-strong);font-weight:600}
.afw-ci-sub[data-state="error"] .afw-ci-sub-ico{background:var(--red-bg);border-color:var(--red);color:var(--red)}
.afw-ci-sub[data-state="error"] .afw-ci-sub-state{color:var(--red)}
.afw-ci-err:empty{display:none}
.afw-ci-donebox{display:flex;flex-direction:column;gap:16px;min-width:0}
.afw-ci-donebox .afw-card[data-role="hero"]{min-height:150px}
.afw-ci-sr,.afw-ci .afw-sr{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
@media(max-width:600px){
 .afw-ci-req .afw-card[data-role="hero"] .afw-card-main{max-width:100%}
 .afw-ci-check{grid-template-columns:24px minmax(0,1fr)}
 .afw-ci-check-state{grid-column:2}
 .afw-ci-sum-dl>div{grid-template-columns:minmax(0,1fr);gap:0}
 .afw-ci-sub{grid-template-columns:24px minmax(0,1fr)}
 .afw-ci-sub-state{grid-column:2}
}
/* Composition list + detail: layout only, tokens only. */
.afw-cld{min-width:0}
.afw-cld-card{background:var(--paper);border:1px solid var(--line);border-radius:10px;padding:10px;display:flex;flex-direction:column;gap:8px;min-width:0;box-shadow:var(--shadow-card)}
.afw-cld-bar{display:flex;flex-wrap:wrap;justify-content:space-between;gap:6px 12px;align-items:center;min-width:0}
.afw-cld-bar>[data-cld-toolbar]{flex:1 1 320px;min-width:0}
.afw-cld-who{font-size:10px;color:var(--muted)}
.afw-cld-filters{display:flex;flex-wrap:wrap;gap:8px;align-items:flex-end;min-width:0}
.afw-cld-f{flex:1 1 170px;min-width:0;display:flex;flex-direction:column;gap:3px}
.afw-cld-lab{font-size:10px;font-weight:600;color:var(--ink)}
.afw-cld-search{flex:1.4 1 210px}
.afw-cld-dates{flex:2.4 1 380px}
.afw-cld-dates .ld-dp-example,.afw-cld-dates [data-dp-mode]{margin:0}
.afw-cld-reset{flex:0 0 auto}
.afw-cld-scenario{font-size:10.5px;color:var(--muted)}
.afw-cld-check{display:inline-flex;align-items:center;gap:6px}
.afw-cld-list,.afw-cld-detail{min-width:0}
.afw-cld-list .ld-dt-heading{display:none}
.afw-cld-placeholder{padding:8px}
.afw-cld-tabs{min-width:0}
.afw-cld [hidden]{display:none!important}
@media(max-width:730px){.afw-cld-f,.afw-cld-search,.afw-cld-dates{flex:1 1 100%}}

/* R1 (AFW-DS-02, bod 1-3): filters sit on the shared field grid (field.css). Fields align to the TOP, never to the bottom,
   so a taller neighbour (DatePicker with its status line) cannot push its label/control out of line with Stav / Zákazník / Hledání. */
.afw-cld-filters{align-items:start}
.afw-cld-f{gap:var(--afw-field-gap,6px)}
.afw-cld-reset{padding-top:calc(var(--afw-label-lh,14px) + var(--afw-field-gap,6px))}
.afw-cld-reset .btn,.afw-cld-reset button{min-height:var(--control-h);height:var(--control-h)}
.afw-cld-dates .ld-dp-card{display:flex;flex-direction:column}

/* R1 (AFW-DS-02, bod 7): in a wide container the filters stay on one row and the list/detail pair gets a readable maximum. */
.afw-cld{container-type:inline-size;container-name:afw-cld}
@container afw-cld (min-width:1100px){
 .afw-cld-filters{flex-wrap:nowrap}
 .afw-cld-card{max-width:1600px}
}
/* Premium Dashboard composition: GRID LAYOUT ONLY. Every visual style (hero board, cards, panels, charts) belongs to the card and chart packages. */
.afw-pd{container-type:inline-size;container-name:afw-pd;display:flex;flex-direction:column;gap:16px;min-width:0}
.afw-pd-grid{display:grid;gap:16px;min-width:0;grid-template-columns:minmax(0,1fr)}
.afw-pd-grid>*{min-width:0;display:flex}
.afw-pd-grid>.afw-card-host>.afw-card{flex:1 1 auto}
.afw-pd [hidden]{display:none!important}
/* R2f: KPI row is 2x2 from the narrowest width (cards drop the sparkline by their own container width) */
.afw-pd-kpis{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
@container afw-pd (min-width:640px){.afw-pd-ops{grid-template-columns:repeat(2,minmax(0,1fr))}.afw-pd-ops>:last-child{grid-column:1/-1}}
/* R2g: tablet step (content 680–999 px, a 768–1200 px window): hero and "Čeká na tebe" stay side by side,
   four KPIs stay in one row (cards drop the sparkline by their own width), charts keep two columns. */
@container afw-pd (min-width:680px){
 .afw-pd-top{grid-template-columns:minmax(0,3fr) minmax(0,2fr)}
 .afw-pd-kpis{grid-template-columns:repeat(4,minmax(0,1fr))}
 .afw-pd-charts{grid-template-columns:minmax(0,3fr) minmax(0,2fr)}
}
@container afw-pd (min-width:1000px){
 .afw-pd-top{grid-template-columns:minmax(0,2fr) minmax(0,1fr)}
 .afw-pd-kpis{grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}
 .afw-pd-charts{grid-template-columns:minmax(0,2fr) minmax(0,1fr)}
 .afw-pd-ops{grid-template-columns:repeat(3,minmax(0,1fr))}
 .afw-pd-ops>:last-child{grid-column:auto}
}
/* Composition settings form: layout only, tokens only. */
.afw-csf{min-width:0}
.afw-csf-card{background:var(--paper);border:1px solid var(--line);border-radius:10px;padding:12px;min-width:0;box-shadow:var(--shadow-card)}
.afw-csf-form{display:flex;flex-direction:column;gap:10px;min-width:0;max-width:880px}
.afw-csf-head{display:flex;flex-wrap:wrap;gap:4px 12px;align-items:baseline;font-size:12px}
.afw-csf-meta{font-size:10.5px;color:var(--muted)}
.afw-csf-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 16px;padding:12px 2px;min-width:0}
.afw-csf-wide{grid-column:1/-1;min-width:0}
.afw-csf-lab{display:block;font-size:11px;font-weight:600;margin-bottom:4px}
.afw-csf-switches{display:flex;flex-direction:column;gap:10px}
.afw-csf-sec{min-width:0}
.afw-csf-scen{font-size:10.5px;color:var(--muted)}
.afw-csf-check{display:inline-flex;align-items:center;gap:6px}
.afw-csf-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.afw-csf-closed{padding:14px;border:1px dashed var(--line2);border-radius:9px;color:var(--muted);font-size:11px;display:flex;gap:10px;align-items:center;flex-wrap:wrap}
@media(max-width:730px){.afw-csf-grid{grid-template-columns:minmax(0,1fr)}}

/* R1 (AFW-DS-02, bod 7): content adapts to the width of its own container (a maximized window), not to the viewport.
   Up to ~880 px two columns; from 960 px of container width three columns, the form keeps a readable maximum width. */
.afw-csf{container-type:inline-size;container-name:afw-csf}
@container afw-csf (min-width:960px){
 .afw-csf-form{max-width:1180px}
 .afw-csf-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@container afw-csf (max-width:520px){.afw-csf-grid{grid-template-columns:minmax(0,1fr)}}
/* Composition tree + document + metadata: layout only, tokens only. */
.afw-ctd{min-width:0}
.afw-ctd-card{background:var(--paper);border:1px solid var(--line);border-radius:10px;padding:10px;min-width:0;box-shadow:var(--shadow-card)}
.afw-ctd-tree,.afw-ctd-doc,.afw-ctd-meta{min-width:0}
.afw-ctd-doc{display:flex;flex-direction:column;gap:8px}
.afw-ctd-bar{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.afw-ctd-docbody{padding:2px 2px 8px}
.afw-ctd-metabtn{display:none!important}
.afw-ctd [hidden]{display:none!important}
@media(max-width:730px){.afw-ctd-metabtn{display:inline-flex!important}}

/* R1 (AFW-DS-02, bod 7): container-driven width for a maximized window. */
.afw-ctd{container-type:inline-size;container-name:afw-ctd}
@container afw-ctd (min-width:1100px){.afw-ctd-card{max-width:1600px}.afw-ctd-docbody{max-width:72ch}}
/* Confirm: reuses the .d-dialog visuals of LayerHost; tokens only (light/dark). */
.afw-confirm-layer{z-index:280}
.afw-confirm .d-dialog-content{display:flex;flex-direction:column;gap:10px}
.afw-confirm-text{margin:0;color:var(--ink);font-size:10.5px;line-height:1.6}
.afw-confirm-details{margin:0;padding:8px 10px 8px 26px;border:1px solid var(--line);border-radius:8px;background:var(--panel2);color:var(--ink);font-size:10px;line-height:1.6}
.afw-confirm-require{display:flex;flex-direction:column;gap:6px;font-size:10px;color:var(--ink)}
.afw-confirm-require b{background:var(--panel3);border-radius:4px;padding:0 5px;font-family:ui-monospace,monospace}
.afw-confirm-input{height:var(--control-h);border:1px solid var(--line2);border-radius:8px;padding:0 10px;background:var(--paper);color:var(--ink);font:inherit;font-size:10.5px;outline:0}
.afw-confirm-input:focus{border-color:var(--orange);box-shadow:var(--focus)}
.afw-confirm-error{margin:0;padding:7px 10px;border:1px solid var(--red);border-radius:8px;background:var(--red-bg);color:var(--red);font-size:10px}
.afw-confirm-error[hidden]{display:none}
.afw-confirm .btn.danger{background:var(--red);color:var(--paper);border-color:var(--red)}
.afw-confirm .btn:focus-visible{outline:2px solid var(--orange);outline-offset:2px}
.afw-confirm .btn:disabled{opacity:.5;cursor:not-allowed}
.afw-confirm-layer[data-tone="danger"] .d-dialog-head{background:linear-gradient(105deg,var(--red-bg),var(--panel2))}
.afw-confirm-layer[data-tone="danger"] .d-dialog-head .mark{color:var(--red)}
@media(max-width:730px){.afw-confirm-layer{align-items:flex-end;padding:10px}.afw-confirm .d-dialog-foot{flex-wrap:wrap}.afw-confirm .d-dialog-foot .btn{flex:1 1 120px}}
/* data-kit: only layout helpers for the showcase pages; tokens only. */
.afw-dk-controls{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;min-width:0}
.afw-dk-check{display:inline-flex;align-items:center;gap:6px;font-size:10px;color:var(--ink)}
.afw-dk-stats{font-size:9.5px;color:var(--muted);font-variant-numeric:tabular-nums}
.afw-dk-row{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.afw-kit-host [data-demo-table]{min-width:0;max-width:100%}
.afw-kit-host [data-demo-table] .ld-panel.ld-dt{box-shadow:none}
/* DetailView: tokens only; 2 columns fall back to 1 by container width (windows are narrower than the viewport). */
.afw-dv{display:block;min-width:0;color:var(--ink);container-type:inline-size;position:relative}
.afw-dv-root{display:flex;flex-direction:column;gap:14px;min-width:0}
.afw-dv-head{display:flex;flex-wrap:wrap;gap:6px 14px;align-items:center;justify-content:space-between;padding-bottom:10px;border-bottom:1px solid var(--line)}
.afw-dv-titles{display:flex;flex-wrap:wrap;gap:8px;align-items:center;min-width:0}
.afw-dv-title{margin:0;font-size:15px;line-height:1.3;color:var(--ink-strong);overflow-wrap:anywhere}
.afw-dv-sub{margin:0;flex-basis:100%;font-size:10.5px;color:var(--muted)}
.afw-dv-actions{display:flex;flex-wrap:wrap;gap:8px}
.afw-dv-body{display:flex;flex-direction:column;gap:16px}
.afw-dv-group-title{margin:0 0 6px;font-size:10px;letter-spacing:.05em;text-transform:uppercase;color:var(--orange-deep)}
.afw-dv-list{margin:0;display:grid;grid-template-columns:repeat(var(--cols,2),minmax(0,1fr));gap:0 28px}
.afw-dv[data-columns="1"]{--cols:1}.afw-dv[data-columns="2"]{--cols:2}
.afw-dv-row{display:grid;grid-template-columns:minmax(90px,38%) minmax(0,1fr);gap:8px;padding:7px 0;border-bottom:1px solid var(--line);align-items:baseline}
.afw-dv-compact .afw-dv-row{padding:4px 0}
.afw-dv-label{margin:0;font-size:10px;color:var(--muted)}
.afw-dv-value{margin:0;font-size:11px;min-width:0;overflow-wrap:anywhere;white-space:pre-wrap}
.afw-dv-none{color:var(--quiet)}
.afw-dv-abs{display:block;font-size:9.5px;color:var(--muted)}
.afw-dv-id{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:10px;background:var(--panel2);border:1px solid var(--line);border-radius:5px;padding:1px 5px;word-break:break-all}
.afw-dv-copy{margin-left:6px;min-height:24px!important;padding:0 6px!important;font-size:9px!important;vertical-align:middle;gap:4px!important}
.afw-dv-copy svg{width:12px;height:12px}
.afw-dv-copied{color:var(--green);font-weight:700}
.afw-dv-link{color:var(--orange-deep);text-decoration:underline;text-underline-offset:2px}
.afw-dv-linkbtn{font:inherit;background:none;border:0;padding:0;cursor:pointer;text-align:left}
.afw-dv-link:focus-visible{outline:2px solid var(--orange);outline-offset:2px;border-radius:3px}
.afw-dv-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
@container (max-width:520px){
 .afw-dv-list{grid-template-columns:minmax(0,1fr)}
 .afw-dv-row{grid-template-columns:minmax(0,1fr);gap:2px}
 .afw-dv-head{align-items:flex-start}
}
/* DiffView: tokens only; +/− marks carry meaning in addition to colour. */
.afw-diff{display:flex;flex-direction:column;gap:10px;min-width:0;color:var(--ink);container-type:inline-size}
.afw-diff-bar{display:flex;flex-wrap:wrap;gap:10px 14px;align-items:flex-end}
.afw-diff-pick{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-end;min-width:0}
.afw-diff-field{min-width:150px}
.afw-diff-field .ld-field{margin:0}
.afw-diff-labels{display:flex;gap:8px;align-items:center;font-size:10.5px}
.afw-diff-lab{padding:3px 8px;border:1px solid var(--line2);border-radius:6px;background:var(--panel2)}
.afw-diff-arrow{color:var(--muted)}
.afw-diff-summary{display:flex;gap:8px;font-size:11px;font-weight:700;font-variant-numeric:tabular-nums;padding-bottom:8px}
.afw-diff-count-add{color:var(--green)}.afw-diff-count-del{color:var(--red)}
.afw-diff-seg{display:flex;gap:6px;margin-left:auto}
.afw-diff-seg [aria-pressed="true"]{border-color:var(--orange)!important;background:var(--tint)!important;color:var(--orange-deep)!important}
.afw-diff-scroll{overflow-x:auto;max-width:100%;border:1px solid var(--line);border-radius:9px;background:var(--paper)}
.afw-diff-scroll:focus-visible{outline:2px solid var(--orange);outline-offset:2px}
.afw-diff .afw-diff-table{border-collapse:collapse;width:100%;min-width:0;white-space:normal;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:10px;line-height:1.55}
.afw-diff .afw-diff-split{min-width:560px;table-layout:fixed}
.afw-diff .afw-diff-table td{height:auto;padding:1px 6px;vertical-align:top;border:0;font-size:10px;color:var(--ink)}
.afw-diff .afw-diff-table td:first-child{padding-left:6px}.afw-diff .afw-diff-table td:last-child{padding-right:6px}
.afw-diff .afw-diff-table tbody tr{background:transparent;cursor:default}
.afw-diff .afw-diff-table tbody tr:hover{background:transparent}
.afw-diff .afw-diff-table td.afw-diff-num{width:34px;text-align:right;color:var(--quiet);user-select:none}
.afw-diff-mark{width:16px;text-align:center;font-weight:700;user-select:none}
.afw-diff-text{white-space:pre;color:var(--ink)}
.afw-diff-inline .afw-diff-text{width:100%}
.afw-diff-split .afw-diff-text{white-space:pre-wrap;overflow-wrap:anywhere;width:calc(50% - 50px)}
.afw-diff .afw-diff-table .afw-diff-add{background:var(--green-bg)}.afw-diff .afw-diff-table .afw-diff-del{background:var(--red-bg)}.afw-diff .afw-diff-table .afw-diff-empty{background:var(--panel2)}
.afw-diff .afw-diff-table tbody tr.afw-diff-add{background:var(--green-bg)}.afw-diff .afw-diff-table tbody tr.afw-diff-del{background:var(--red-bg)}
.afw-diff .afw-diff-table .afw-diff-mark.afw-diff-add,.afw-diff .afw-diff-table tr.afw-diff-add .afw-diff-mark{color:var(--green)}.afw-diff .afw-diff-table .afw-diff-mark.afw-diff-del,.afw-diff .afw-diff-table tr.afw-diff-del .afw-diff-mark{color:var(--red)}
.afw-diff .afw-diff-table tbody tr.afw-diff-fold td{padding:2px 6px;background:var(--panel2);text-align:center}
.afw-diff-fold [data-afw-component="button"]{font-size:10px;min-height:24px}
.afw-diff-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.afw-diff-mark{position:relative}
.afw-diff{position:relative}
@container (max-width:520px){.afw-diff-seg{margin-left:0}}
/* DocDiff: tokens only (theme.css + card panel surface). Meaning is never carried by colour alone: every kind has an icon, a text chip and a text decoration. */
.afw-dd{--dd-add:var(--green);--dd-del:var(--red);--dd-mov:var(--chart-2);--dd-minor:var(--warn);--dd-edit:var(--orange-deep);
 container-type:inline-size;container-name:afw-dd;display:flex;flex-direction:column;gap:12px;min-width:0;color:var(--ink)}
.afw-dd [hidden]{display:none!important}
.afw-dd .i{width:14px;height:14px;flex:none;stroke-width:1.8}
.afw-dd .afw-sr{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
/* ---- top bar: compared versions + view switch ---- */
.afw-dd-top{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 12px}
.afw-dd-vers{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px;min-width:0}
.afw-dd-ver{display:inline-flex;align-items:center;gap:6px;min-height:28px;box-sizing:border-box;padding:0 11px 0 9px;border:1px solid var(--line2);border-radius:99px;background:var(--panel);font-size:11px;color:var(--ink);min-width:0}
.afw-dd-ver b{font-weight:620;overflow-wrap:anywhere}
.afw-dd-ver .i{color:var(--orange-deep)}
.afw-dd-ver[data-new]{border-color:color-mix(in srgb,var(--orange) 50%,var(--line2));background:var(--tint)}
.afw-dd-vers-arrow{color:var(--muted)}
.afw-dd-seg{display:inline-flex;gap:2px;padding:2px;border:1px solid var(--line);border-radius:9px;background:var(--panel2);flex:none}
.afw-dd-seg-btn{appearance:none;font:inherit;font-size:11px;font-weight:620;line-height:1;height:26px;padding:0 12px;border:0;border-radius:7px;background:transparent;color:var(--muted);cursor:pointer;white-space:nowrap}
.afw-dd-seg-btn:hover{color:var(--ink)}
.afw-dd-seg-btn[aria-pressed="true"]{background:var(--paper);color:var(--orange-deep);box-shadow:0 1px 2px #49301d1f,inset 0 0 0 1px var(--line2)}
.afw-dd-seg-btn:focus-visible,.afw-dd-link:focus-visible,.afw-dd-change:focus-visible,.afw-dd-switch:focus-visible,.afw-dd-flow:focus-visible,.afw-dd-tablewrap:focus-visible{outline:2px solid var(--orange);outline-offset:2px}
/* ---- layout: summary, document, properties ---- */
.afw-dd-friendly{display:grid;gap:12px;grid-template-columns:minmax(0,1fr);grid-template-areas:"sum" "doc" "props";min-width:0}
.afw-dd-friendly>[data-area="sum"]{grid-area:sum}.afw-dd-friendly>[data-area="doc"]{grid-area:doc}.afw-dd-friendly>[data-area="props"]{grid-area:props}
.afw-dd-friendly>*{min-width:0}
@container afw-dd (min-width:900px){
 .afw-dd-friendly{grid-template-columns:minmax(0,1fr) 330px;grid-template-areas:"doc sum" "props props";align-items:start}
 .afw-dd-sum-panel{position:sticky;top:6px}
}
.afw-dd .afw-card-panel-body{gap:10px}
/* ---- summary ---- */
.afw-dd-stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
@container afw-dd (min-width:560px) and (max-width:899px){.afw-dd-stats{grid-template-columns:repeat(4,minmax(0,1fr))}}
.afw-dd-stat{--tone:var(--ink);display:grid;grid-template-columns:28px minmax(0,1fr);grid-template-rows:auto auto;column-gap:9px;align-items:center;padding:8px 10px;border:1px solid var(--line);border-radius:10px;background:var(--panel)}
.afw-dd-stat[data-kind="added"]{--tone:var(--dd-add)}.afw-dd-stat[data-kind="removed"]{--tone:var(--dd-del)}.afw-dd-stat[data-kind="changed"]{--tone:var(--dd-edit)}.afw-dd-stat[data-kind="moved"]{--tone:var(--dd-mov)}
.afw-dd-stat-ico{grid-row:1/3;width:28px;height:28px;display:grid;place-items:center;border-radius:8px;color:var(--tone);background:color-mix(in srgb,var(--tone) 14%,transparent);border:1px solid color-mix(in srgb,var(--tone) 30%,transparent)}
.afw-dd-stat-ico .i{width:15px;height:15px}
.afw-dd-stat b{font-size:19px;line-height:1.05;font-weight:600;letter-spacing:-.03em;font-variant-numeric:tabular-nums;color:var(--ink-strong)}
.afw-dd-stat span:last-child{font-size:10px;line-height:1.3;color:var(--muted)}
.afw-dd-stat[data-count="0"]{opacity:.62}
.afw-dd-minor{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:6px}
.afw-dd-minor-item{display:inline-flex;align-items:center;gap:5px;padding:2px 9px 2px 7px;border:1px dashed var(--line2);border-radius:99px;font-size:10px;color:var(--muted);min-height:22px;box-sizing:border-box}
.afw-dd-minor-item .i{width:12px;height:12px}
.afw-dd-minor-item b{color:var(--ink);font-variant-numeric:tabular-nums}
.afw-dd-minor-item[data-count="0"]{opacity:.6}
.afw-dd-same{display:flex;align-items:center;gap:6px;margin:0;font-size:11px;color:var(--green)}
.afw-dd-changes{list-style:none;margin:0;padding:0 2px 0 0;display:flex;flex-direction:column;gap:3px;max-height:300px;overflow:auto}
.afw-dd-change{--tone:var(--dd-edit);appearance:none;font:inherit;display:grid;grid-template-columns:24px minmax(0,1fr) 14px;gap:8px;align-items:center;width:100%;box-sizing:border-box;padding:6px 8px;border:1px solid transparent;border-radius:9px;background:transparent;color:var(--ink);text-align:left;cursor:pointer}
.afw-dd-change[data-kind="added"]{--tone:var(--dd-add)}.afw-dd-change[data-kind="removed"]{--tone:var(--dd-del)}.afw-dd-change[data-kind="moved"]{--tone:var(--dd-mov)}
.afw-dd-change[data-kind="whitespace"],.afw-dd-change[data-kind="punctuation"]{--tone:var(--dd-minor)}.afw-dd-change[data-kind="prop"]{--tone:var(--muted)}
.afw-dd-change:hover:not(:disabled){background:var(--hover);border-color:var(--line)}
.afw-dd-change-ico{width:24px;height:24px;display:grid;place-items:center;border-radius:7px;color:var(--tone);background:color-mix(in srgb,var(--tone) 13%,transparent)}
.afw-dd-change-ico .i{width:13px;height:13px}
.afw-dd-change-txt{display:flex;flex-direction:column;gap:1px;min-width:0}
.afw-dd-change-txt b{font-size:11px;font-weight:620;line-height:1.3;overflow-wrap:anywhere}
.afw-dd-change-txt small{font-size:10px;line-height:1.35;color:var(--muted);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere}
.afw-dd-change-go{color:var(--quiet);transition:transform .15s}
.afw-dd-change:hover .afw-dd-change-go{transform:translateX(2px);color:var(--orange-deep)}
/* ---- document ---- */
.afw-dd-tools{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 14px}
.afw-dd-legend{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:4px 12px;font-size:10px;color:var(--muted)}
.afw-dd-legend-item{display:inline-flex;align-items:center;gap:5px}
.afw-dd-legend-item[data-kind="added"] .i{color:var(--dd-add)}.afw-dd-legend-item[data-kind="removed"] .i{color:var(--dd-del)}.afw-dd-legend-item[data-kind="moved"] .i{color:var(--dd-mov)}.afw-dd-legend-item[data-kind="whitespace"] .i{color:var(--dd-minor)}
.afw-dd-legend-item .i{width:13px;height:13px}
.afw-dd-flow{display:flex;flex-direction:column;gap:3px;font-size:12px;line-height:1.65;border-radius:8px}
.afw-dd-block{--tone:transparent;position:relative;margin:0;padding:5px 10px 5px 12px;border-left:3px solid var(--tone);border-radius:3px 9px 9px 3px;min-width:0;scroll-margin:56px 0}
.afw-dd-block[data-kind="added"],.afw-dd-block[data-kind="moved-to"]{background:color-mix(in srgb,var(--tone) 8%,transparent)}
.afw-dd-block[data-kind="added"]{--tone:var(--dd-add)}.afw-dd-block[data-kind="removed"]{--tone:var(--dd-del);background:color-mix(in srgb,var(--tone) 7%,transparent)}
.afw-dd-block[data-kind="changed"]{--tone:var(--dd-edit);background:color-mix(in srgb,var(--tone) 6%,transparent)}
.afw-dd-block[data-kind="moved-to"],.afw-dd-block[data-kind="moved-from"]{--tone:var(--dd-mov);border-left-style:dashed}
.afw-dd-block[data-kind="whitespace"],.afw-dd-block[data-kind="punctuation"]{--tone:var(--dd-minor);border-left-style:dotted;background:color-mix(in srgb,var(--tone) 6%,transparent)}
.afw-dd-block:focus-visible,.afw-dd-block.is-target,.afw-dd-prow.is-target>*{outline:2px solid var(--orange);outline-offset:1px}
.afw-dd-block.is-target{box-shadow:var(--focus)}
.afw-dd-bh{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px;margin:0 0 3px;min-height:20px}
.afw-dd-chip-k{--tone:var(--dd-edit);display:inline-flex;align-items:center;gap:4px;padding:1px 8px 1px 5px;border-radius:99px;font-size:9.5px;font-weight:700;line-height:1.5;letter-spacing:.01em;white-space:nowrap;color:color-mix(in srgb,var(--tone) 82%,var(--ink));background:color-mix(in srgb,var(--tone) 13%,transparent);border:1px solid color-mix(in srgb,var(--tone) 34%,transparent)}
.afw-dd-chip-k .i{width:11px;height:11px;stroke-width:2.2}
.afw-dd-block[data-kind="added"] .afw-dd-chip-k{--tone:var(--dd-add)}.afw-dd-block[data-kind="removed"] .afw-dd-chip-k{--tone:var(--dd-del)}
.afw-dd-block[data-kind="moved-to"] .afw-dd-chip-k,.afw-dd-block[data-kind="moved-from"] .afw-dd-chip-k{--tone:var(--dd-mov)}
.afw-dd-block[data-kind="whitespace"] .afw-dd-chip-k,.afw-dd-block[data-kind="punctuation"] .afw-dd-chip-k{--tone:var(--dd-minor)}
.afw-dd-chip-k.is-sm{font-size:9px;padding:0 7px 0 4px}
.afw-dd-link{appearance:none;font:inherit;font-size:10px;font-weight:650;display:inline-flex;align-items:center;gap:4px;margin-left:auto;padding:1px 4px;border:0;border-radius:5px;background:none;color:var(--orange-deep);cursor:pointer}
.afw-dd-link:hover{text-decoration:underline;text-underline-offset:3px}
.afw-dd-link .i{width:12px;height:12px}
.afw-dd-note{font-size:10px;color:var(--muted)}
.afw-dd-text{margin:0;white-space:pre-wrap;overflow-wrap:anywhere;color:var(--ink)}
.afw-dd-text.is-head{font-weight:650;letter-spacing:-.02em;line-height:1.35;color:var(--ink-strong)}
.afw-dd-text[data-level="1"]{font-size:16px}.afw-dd-text[data-level="2"]{font-size:13.5px}.afw-dd-text[data-level="3"],.afw-dd-text[data-level="4"]{font-size:12.5px}
.afw-dd-ghost{margin:0;font-size:11px;color:var(--muted);font-style:italic;overflow-wrap:anywhere}
.afw-dd-edge{margin:4px 0 0;display:flex;align-items:center;gap:6px;font-size:10.5px;color:var(--muted);padding:4px 10px;border:1px dotted var(--dd-minor);border-radius:8px}
.afw-dd-empty{margin:0;padding:10px 4px;font-size:11px;color:var(--muted)}
.afw-dd ins.afw-dd-part{text-decoration:underline;text-decoration-color:var(--dd-add);text-decoration-thickness:2px;text-underline-offset:3px;background:color-mix(in srgb,var(--dd-add) 17%,transparent);border-radius:3px;padding:0 1px;color:inherit}
.afw-dd del.afw-dd-part{text-decoration:line-through;text-decoration-color:var(--dd-del);text-decoration-thickness:1.5px;background:color-mix(in srgb,var(--dd-del) 14%,transparent);border-radius:3px;padding:0 1px;color:color-mix(in srgb,var(--ink) 82%,transparent)}
.afw-dd-block[data-kind="whitespace"] .afw-dd-part,.afw-dd-block[data-kind="punctuation"] .afw-dd-part{text-decoration-style:dotted;background:color-mix(in srgb,var(--dd-minor) 20%,transparent)}
.afw-dd-block[data-kind="punctuation"] ins.afw-dd-part{text-decoration:underline wavy var(--dd-add);text-decoration-thickness:1.5px}
.afw-dd .afw-dd-ws{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.92em;text-decoration-style:dotted;outline:1px dotted color-mix(in srgb,var(--dd-minor) 70%,transparent);outline-offset:-1px}
/* word / sentence / paragraph granularity: a paragraph-level change sits on its own lines */
.afw-dd-docbody[data-granularity="paragraph"] .afw-dd-block[data-kind="changed"] .afw-dd-part{display:block;margin:2px 0}
/* ---- properties ---- */
.afw-dd-ptools{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:6px 14px}
.afw-dd-pcount{font-size:10px;color:var(--muted);font-variant-numeric:tabular-nums}
.afw-dd-switch{appearance:none;font:inherit;font-size:11px;font-weight:620;display:inline-flex;align-items:center;gap:8px;min-height:26px;padding:0 4px;border:0;border-radius:8px;background:none;color:var(--ink);cursor:pointer}
.afw-dd-switch-track{position:relative;width:28px;height:16px;border-radius:99px;background:var(--panel3);border:1px solid var(--line2);box-sizing:border-box;transition:background .15s}
.afw-dd-switch-track::after{content:"";position:absolute;top:1px;left:1px;width:12px;height:12px;border-radius:50%;background:var(--paper);box-shadow:0 1px 2px #49301d40;transition:transform .15s}
.afw-dd-switch[aria-checked="true"] .afw-dd-switch-track{background:var(--orange);border-color:var(--orange-deep)}
.afw-dd-switch[aria-checked="true"] .afw-dd-switch-track::after{transform:translateX(12px)}
@media(prefers-reduced-motion:reduce){.afw-dd *{transition:none!important}}
.afw-dd-tablewrap{border:1px solid var(--line);border-radius:10px;overflow:hidden;background:var(--paper)}
.afw-dd .afw-dd-props{width:100%;min-width:0;table-layout:fixed;border-collapse:collapse;white-space:normal;text-align:left}
.afw-dd .afw-dd-props thead{background:var(--panel2)}
.afw-dd .afw-dd-props th,.afw-dd .afw-dd-props td{height:auto;padding:8px 12px;vertical-align:top;font-size:11px;line-height:1.45;overflow-wrap:break-word;border-bottom:1px solid color-mix(in srgb,var(--line) 70%,transparent)}
.afw-dd .afw-dd-props thead th{padding:7px 12px;font-size:9.5px;letter-spacing:.04em;color:var(--muted);font-weight:650;text-transform:uppercase}
.afw-dd .afw-dd-props th:first-child,.afw-dd .afw-dd-props td:first-child{width:32%;padding-left:12px}
.afw-dd .afw-dd-props th:last-child,.afw-dd .afw-dd-props td:last-child{padding-right:12px}
.afw-dd .afw-dd-props tbody tr{background:transparent;cursor:default}
.afw-dd .afw-dd-props tbody tr:nth-child(even){background:transparent}
.afw-dd .afw-dd-props tbody tr:hover{background:var(--hover)}
.afw-dd .afw-dd-props tbody tr:last-child>*{border-bottom:0}
.afw-dd .afw-dd-pname{font-weight:620;color:var(--ink);overflow-wrap:break-word}
.afw-dd .afw-dd-pn{display:flex;flex-direction:column;align-items:flex-start;gap:4px}
.afw-dd .afw-card-panel-head{min-height:0}
.afw-dd .afw-dd-props th:first-child,.afw-dd .afw-dd-props td:first-child{overflow-wrap:break-word}
.afw-dd-prow[data-state="same"] .afw-dd-pname,.afw-dd-prow[data-state="same"] .afw-dd-pv{color:var(--muted);font-weight:500}
.afw-dd-prow[data-state="added"]{box-shadow:inset 3px 0 var(--dd-add)}.afw-dd-prow[data-state="removed"]{box-shadow:inset 3px 0 var(--dd-del)}.afw-dd-prow[data-state="changed"]{box-shadow:inset 3px 0 var(--dd-edit)}
.afw-dd-prow[data-state="added"] .afw-dd-chip-k{--tone:var(--dd-add)}.afw-dd-prow[data-state="removed"] .afw-dd-chip-k{--tone:var(--dd-del)}
.afw-dd-val{font-variant-numeric:tabular-nums}
.afw-dd-val.is-add{background:color-mix(in srgb,var(--dd-add) 17%,transparent);text-decoration:underline;text-decoration-color:var(--dd-add);text-decoration-thickness:2px;text-underline-offset:3px;border-radius:3px;padding:0 3px;font-weight:620;color:var(--ink)}
.afw-dd-val.is-del{background:color-mix(in srgb,var(--dd-del) 14%,transparent);text-decoration:line-through;text-decoration-color:var(--dd-del);border-radius:3px;padding:0 3px;color:color-mix(in srgb,var(--ink) 80%,transparent)}
.afw-dd-none{font-size:10.5px;font-style:italic;color:var(--quiet)}
.afw-dd-chips{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:4px}
.afw-dd-chips .afw-dd-chip{display:inline-flex;align-items:center;gap:4px;padding:1px 8px;border-radius:99px;border:1px solid var(--line2);font-size:10px;background:var(--panel)}
.afw-dd-chip .i{width:11px;height:11px;stroke-width:2.2}
.afw-dd-chip.is-add{border-color:color-mix(in srgb,var(--dd-add) 50%,transparent);background:color-mix(in srgb,var(--dd-add) 14%,transparent);font-weight:650;color:var(--ink)}
.afw-dd-chip.is-add .i{color:var(--dd-add)}
.afw-dd-chip.is-del{border-color:color-mix(in srgb,var(--dd-del) 50%,transparent);background:color-mix(in srgb,var(--dd-del) 12%,transparent);text-decoration:line-through;color:color-mix(in srgb,var(--ink) 80%,transparent)}
.afw-dd-chip.is-del .i{color:var(--dd-del)}
/* ---- technical view hosts the existing DiffView unchanged ---- */
.afw-dd-tech{background:var(--paper);border:1px solid var(--line);border-radius:12px;padding:12px;box-shadow:var(--shadow-card);min-width:0}
/* DocView: typography from tokens; light/dark through theme.css. */
.afw-doc{color:var(--ink);font-size:11px;line-height:1.7;min-width:0;overflow-wrap:anywhere}
.afw-doc>*:first-child{margin-top:0}.afw-doc>*:last-child{margin-bottom:0}
.afw-doc-h{margin:1.3em 0 .5em;line-height:1.3;color:var(--ink-strong)}
h1.afw-doc-h{font-size:17px}h2.afw-doc-h{font-size:14px;padding-bottom:4px;border-bottom:1px solid var(--line)}h3.afw-doc-h{font-size:12.5px}h4.afw-doc-h,h5.afw-doc-h,h6.afw-doc-h{font-size:11px}
.afw-doc-p{margin:0 0 .8em}
.afw-doc-list{margin:0 0 .8em;padding-left:20px}.afw-doc-list .afw-doc-list{margin:.2em 0 0}
.afw-doc-list li{margin:.15em 0}
.afw-doc-link{color:var(--orange-deep);text-decoration:underline;text-underline-offset:2px}
.afw-doc-link:focus-visible{outline:2px solid var(--orange);outline-offset:2px;border-radius:3px}
.afw-doc-blocked{color:var(--muted);text-decoration:line-through dotted;cursor:not-allowed}
.afw-doc-code{background:var(--panel2);border:1px solid var(--line);border-radius:4px;padding:0 4px;font-size:.92em;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}
.afw-doc-pre-wrap{margin:0 0 .9em;max-width:100%}
.afw-doc-pre{margin:0;padding:10px 12px;background:var(--panel2);border:1px solid var(--line);border-radius:8px;overflow-x:auto;max-width:100%;font-size:10px;line-height:1.55;white-space:pre;tab-size:2}
.afw-doc-pre:focus-visible{outline:2px solid var(--orange);outline-offset:2px}
.afw-doc-pre code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;background:none;border:0;padding:0;overflow-wrap:normal}
.afw-doc-quote{margin:0 0 .9em;padding:2px 12px;border-left:3px solid var(--gold2);color:var(--muted);background:var(--panel)}
.afw-doc-hr{border:0;border-top:1px solid var(--line);margin:1em 0}
.afw-doc-table-wrap{overflow-x:auto;max-width:100%;margin:0 0 .9em}
.afw-doc .afw-doc-table{border-collapse:collapse;font-size:10.5px;width:auto;min-width:60%;white-space:normal;text-align:left}
.afw-doc .afw-doc-table th,.afw-doc .afw-doc-table td{border:1px solid var(--line);padding:5px 9px;vertical-align:top;height:auto;font-size:10.5px;color:var(--ink);letter-spacing:0}
.afw-doc .afw-doc-table td:first-child,.afw-doc .afw-doc-table th:first-child{padding-left:9px}.afw-doc .afw-doc-table td:last-child,.afw-doc .afw-doc-table th:last-child{padding-right:9px}
.afw-doc .afw-doc-table tbody tr{background:transparent;cursor:default}.afw-doc .afw-doc-table tbody tr:hover{background:transparent}
.afw-doc .afw-doc-table th{background:var(--panel2);color:var(--ink-strong);font-weight:650}
/* Drawer: tokens only (light/dark/density). Overlay = modal <dialog> in the top layer, inline = non-modal panel inside a host.
   No container-type / transform / contain on the dialog itself: a nested Confirm layer is position:fixed inside it. */
:root{--afw-drawer-w-sm:360px;--afw-drawer-w-md:480px;--afw-drawer-w-lg:640px}
.afw-drawer{--afw-drawer-w:var(--afw-drawer-w-md);box-sizing:border-box;display:flex;flex-direction:column;min-width:0;margin:0;padding:0;border:0;background:var(--paper);color:var(--ink);font:inherit;font-size:11px;line-height:1.5;text-align:left}
.afw-drawer[data-size="sm"]{--afw-drawer-w:var(--afw-drawer-w-sm)}
.afw-drawer[data-size="lg"]{--afw-drawer-w:var(--afw-drawer-w-lg)}
.afw-drawer *{box-sizing:border-box}
/* overlay */
dialog.afw-drawer:not([open]){display:none}
dialog.afw-drawer{position:fixed;top:0;bottom:0;height:100vh;height:100dvh;max-height:none;width:var(--afw-drawer-w);max-width:100vw;overflow:hidden;box-shadow:var(--shadow-float);color:var(--ink)}
dialog.afw-drawer[data-side="right"]{left:auto;right:0;border-left:1px solid var(--line2)}
dialog.afw-drawer[data-side="left"]{left:0;right:auto;border-right:1px solid var(--line2)}
dialog.afw-drawer::backdrop{background:#1a100bb0;backdrop-filter:blur(3px)}
dialog.afw-drawer:focus,dialog.afw-drawer:focus-visible{outline:0}
/* inline */
.afw-drawer-host{display:flex;flex-wrap:wrap;align-items:stretch;gap:16px;min-width:0}
.afw-drawer-host>:not(.afw-drawer){flex:1 1 260px;min-width:0}
section.afw-drawer{flex:0 1 var(--afw-drawer-w);width:var(--afw-drawer-w);min-width:min(300px,100%);max-width:100%;border:1px solid var(--line2);border-radius:12px;overflow:hidden;box-shadow:var(--shadow-card);max-height:var(--afw-drawer-inline-max,none)}
/* header, body, footer */
.afw-drawer-head{flex:none;display:flex;align-items:center;gap:12px;padding:14px 14px 13px 18px;border-bottom:1px solid var(--line);background:linear-gradient(145deg,var(--paper),var(--panel2))}
.afw-drawer-icon{flex:none;display:grid;place-items:center;width:32px;height:32px;border-radius:9px;color:var(--orange-deep);background:color-mix(in srgb,var(--orange) 13%,transparent);border:1px solid color-mix(in srgb,var(--orange) 30%,transparent)}
.afw-drawer-icon .i{width:17px;height:17px}
.afw-drawer-titles{flex:1 1 auto;min-width:0}
.afw-drawer-title{margin:0;font-size:15px;font-weight:600;letter-spacing:-.03em;line-height:1.3;color:var(--ink-strong);overflow-wrap:anywhere}
.afw-drawer-sub{margin:1px 0 0;font-size:10.5px;line-height:1.4;color:var(--muted);overflow-wrap:anywhere}
.afw-drawer-sub[hidden]{display:none}
.afw-drawer .afw-drawer-close{flex:none;width:30px;min-height:30px;height:30px;padding:0;color:var(--muted)}
.afw-drawer .afw-drawer-close:hover:not(:disabled){color:var(--ink-strong);background:var(--hover)}
.afw-drawer .afw-drawer-close .i{width:15px;height:15px}
.afw-drawer-body{flex:1 1 auto;min-height:0;overflow:auto;overscroll-behavior:contain;padding:16px 18px 18px;scrollbar-color:var(--line2) transparent}
.afw-drawer-body:focus-visible{outline:2px solid var(--orange);outline-offset:-2px}
.afw-drawer-foot{flex:none;display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:8px;padding:12px 18px;border-top:1px solid var(--line);background:var(--panel2)}
.afw-drawer-foot[hidden]{display:none}
.afw-drawer-foot .ld-button{min-height:32px}
.afw-drawer-push{margin-right:auto}
.afw-drawer-foot .ld-button.ghost.afw-drawer-push{margin-left:-12px}
.afw-drawer-text{margin:0 0 10px;font-size:11px;line-height:1.6;color:var(--ink)}
.afw-drawer .ld-button:focus-visible,.afw-drawer-close:focus-visible{outline:2px solid var(--orange);outline-offset:2px}
/* motion: a gentle slide only when the user does not ask for reduced motion */
@media(prefers-reduced-motion:no-preference){
 dialog.afw-drawer[open][data-side="right"]{animation:afw-drawer-in-r .22s cubic-bezier(.2,.8,.2,1)}
 dialog.afw-drawer[open][data-side="left"]{animation:afw-drawer-in-l .22s cubic-bezier(.2,.8,.2,1)}
 dialog.afw-drawer[open]::backdrop{animation:afw-drawer-fade .22s ease}
 section.afw-drawer{animation:afw-drawer-pop .2s ease-out}
}
@keyframes afw-drawer-in-r{from{transform:translateX(28px);opacity:0}to{transform:none;opacity:1}}
@keyframes afw-drawer-in-l{from{transform:translateX(-28px);opacity:0}to{transform:none;opacity:1}}
@keyframes afw-drawer-fade{from{opacity:0}to{opacity:1}}
@keyframes afw-drawer-pop{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
/* phones: always the full width */
@media(max-width:600px){
 dialog.afw-drawer{width:100vw;border-left:0;border-right:0}
 .afw-drawer-host>:not(.afw-drawer){flex-basis:100%}
 section.afw-drawer{flex:1 1 100%;width:100%;max-height:none}
 .afw-drawer-head{padding-left:14px}
 .afw-drawer-body{padding:14px 14px 16px}
 .afw-drawer-foot{padding:11px 14px}
 .afw-drawer-foot .ld-button{flex:1 1 120px}
}
/* Drawer demo page (?demo=drawer): layout of the page and of the panel contents only; tokens only. */
.afw-dd{display:flex;flex-direction:column;gap:16px;min-width:0}
.afw-dd [hidden]{display:none!important}
.afw-dd-split{--afw-drawer-inline-max:560px}
.afw-dd-list{display:flex;flex-direction:column;overflow:hidden;border:1px solid var(--line);border-radius:12px;background:var(--paper);box-shadow:var(--shadow-card);align-self:flex-start}
.afw-dd-split>.afw-dd-list{flex:1 1 280px}
.afw-dd-row{appearance:none;display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:12px;width:100%;padding:11px 14px;border:0;border-bottom:1px solid var(--line);background:transparent;color:var(--ink);font:inherit;text-align:left;cursor:pointer;position:relative}
.afw-dd-row:last-child{border-bottom:0}
.afw-dd-row:hover{background:var(--hover)}
.afw-dd-row:focus-visible{outline:2px solid var(--orange);outline-offset:-2px}
.afw-dd-row[aria-pressed="true"]{background:var(--selected)}
.afw-dd-row[aria-pressed="true"]::before{content:"";position:absolute;left:0;top:8px;bottom:8px;width:3px;border-radius:0 3px 3px 0;background:var(--orange)}
.afw-dd-tile{display:grid;place-items:center;width:28px;height:28px;border-radius:8px;color:var(--orange-deep);background:color-mix(in srgb,var(--orange) 13%,transparent);border:1px solid color-mix(in srgb,var(--orange) 28%,transparent)}
.afw-dd-tile .i{width:15px;height:15px;stroke-width:1.6}
.afw-dd-main{display:flex;flex-direction:column;gap:1px;min-width:0}
.afw-dd-name{font-size:11.5px;font-weight:600;letter-spacing:-.01em;color:var(--ink-strong);overflow-wrap:anywhere}
.afw-dd-meta-line{font-size:10px;color:var(--muted);overflow-wrap:anywhere}
.afw-dd-log{margin:0;padding:10px 14px;border:1px solid var(--line);border-radius:10px;background:var(--panel);font-size:10.5px;line-height:1.5;color:var(--muted)}
.afw-dd-log strong{color:var(--ink-strong);font-weight:600}
/* six triggers = 3 x 2 on wide pages (the card grid itself steps 1 / 2 / 3 / 4 columns) */
@container afw-cards (min-width:900px){.afw-dd .afw-card-grid-in[data-max="3"]{grid-template-columns:repeat(3,minmax(0,1fr))}}
/* panel contents */
.afw-dd-stack{display:flex;flex-direction:column;gap:14px;min-width:0}
.afw-dd-stack>.afw-drawer-text{margin:0}
.afw-dd-form{display:flex;flex-direction:column;gap:14px;min-width:0}
.afw-dd-pair{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.afw-dd-pair>*{min-width:0}
.afw-dd-meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px}
.afw-dd-chip{display:inline-flex;align-items:center;padding:3px 8px;border:1px solid var(--line);border-radius:100px;background:var(--panel);font-size:9.5px;color:var(--muted);white-space:nowrap}
.afw-dd-dirty{font-size:10px;color:var(--muted)}
.afw-dd-dirty[data-dirty="true"]{color:var(--warn);font-weight:600}
.afw-dd-detail .afw-dv-head{border-bottom:0;padding-bottom:0}
/* label left, value right at every width (the drawer is a 354-480 px container; DetailView would stack them below 520 px) */
.afw-dd-detail .afw-dv-row{grid-template-columns:minmax(104px,36%) minmax(0,1fr);gap:8px}
.afw-dd-inspect .afw-dv-head{display:none}
.afw-dd-notes .afw-tl-time{flex-basis:100%;margin-left:0}
.afw-dd-doc{padding:2px 2px 0}
.afw-dd-new{align-self:center;padding:1px 6px;border-radius:100px;border:1px solid color-mix(in srgb,var(--orange) 40%,transparent);background:var(--tint);color:var(--orange-deep);font-size:8.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}
.afw-drawer [data-unread] .afw-tl-dot{background:var(--orange);box-shadow:0 0 0 3px color-mix(in srgb,var(--orange) 25%,transparent)}
.afw-drawer [data-unread] .afw-tl-actor{color:var(--ink-strong)}
.afw-drawer .afw-tl-day{padding-top:0}
@media(max-width:600px){.afw-dd-pair{grid-template-columns:minmax(0,1fr)}.afw-dd-row{padding:10px 12px;gap:10px}.afw-dd-row [data-afw-component="status"]{grid-column:2;justify-self:start}}
/* R5f: Czech date range in the filter drawer (date-picker package) */
.afw-dd-dates{display:flex;flex-direction:column;gap:6px;min-width:0}
.afw-dd-datelabel{font-size:10.5px;font-weight:600;color:var(--ink-strong)}
.afw-dd-dates .ld-dp-card{padding:0;border:0;background:transparent;box-shadow:none;gap:6px}
.afw-dd-dates .ld-dp-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
/* R5f: notification entries wrap the same way at every phone width: actor (and "Nové") on one line, the action below it */
@media(max-width:600px){.afw-dd-notes .afw-tl-action{flex-basis:100%}}
/* Focus mode: full-viewport modal dialog (top layer). Tokens only; the head uses the dark board plane in both themes (like the shell sidebar).
   No container-type / transform at rest: a nested Confirm layer is position:fixed inside the dialog. */
dialog.afw-focus:not([open]){display:none}
dialog.afw-focus{position:fixed;inset:0;margin:0;padding:0;border:0;width:100vw;height:100vh;height:100dvh;max-width:none;max-height:none;overflow:hidden;
 display:flex;flex-direction:column;background:var(--page);color:var(--ink);font:inherit;font-size:11px;line-height:1.5;text-align:left;box-sizing:border-box}
dialog.afw-focus *{box-sizing:border-box}
dialog.afw-focus::backdrop{background:var(--page)}
dialog.afw-focus:focus,dialog.afw-focus:focus-visible{outline:0}
.afw-focus-head{flex:none;display:flex;align-items:center;gap:14px;height:54px;padding:0 18px;background:var(--sf-board-bg);border-bottom:1px solid var(--sf-board-bd);color:var(--sf-board-fg)}
.afw-focus-brand{flex:none;display:flex;align-items:center;gap:10px}
.afw-focus-mark{display:grid;place-items:center;width:30px;height:30px;border-radius:9px;background:linear-gradient(145deg,#ffb76d,#ee761b 72%);box-shadow:0 6px 18px #f4781c38;color:#3b2719;font-size:20px;font-weight:700;letter-spacing:-.06em;line-height:1}
.afw-focus-word{font-size:12px;font-weight:600;letter-spacing:.14em;color:var(--sf-board-fg)}
.afw-focus-sep{flex:none;width:1px;height:22px;background:color-mix(in srgb,var(--sf-board-fg) 28%,transparent)}
.afw-focus-title{flex:0 1 auto;min-width:0;margin:0;font-size:13.5px;font-weight:600;letter-spacing:-.02em;color:var(--sf-board-fg);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.afw-focus-slot{flex:1 1 0;min-width:0;display:flex;align-items:center;justify-content:flex-end;gap:10px;color:var(--sf-board-fg2);font-size:10.5px}
.afw-focus-slot:empty{display:block}
.afw-focus-exit{flex:none;display:inline-flex;align-items:center;gap:8px;min-height:32px;padding:0 10px 0 12px;border:1px solid #f5d6a85c;border-radius:8px;background:#ffffff0f;color:var(--sf-board-fg);font:inherit;font-size:11px;font-weight:650;cursor:pointer}
.afw-focus-exit:hover{background:#ffffff1f;border-color:#f5d6a8a0}
.afw-focus-exit:focus-visible{outline:2px solid var(--sf-board-focus);outline-offset:2px}
.afw-focus-exit .i{width:14px;height:14px}
.afw-focus-kbd{padding:1px 5px;border:1px solid #f5d6a870;border-radius:4px;font:inherit;font-size:9px;font-weight:600;color:var(--sf-board-fg2)}
.afw-focus-body{flex:1 1 auto;min-height:0;overflow:auto;overscroll-behavior:contain;padding:22px 26px 28px;scrollbar-color:var(--line2) transparent}
.afw-focus-text{margin:0 0 10px;color:var(--ink)}
@media(prefers-reduced-motion:no-preference){dialog.afw-focus[open]{animation:afw-focus-in .18s ease-out}}
@keyframes afw-focus-in{from{opacity:0}to{opacity:1}}
@media(max-width:600px){
 .afw-focus-head{gap:10px;padding:0 12px;height:50px}
 .afw-focus-word,.afw-focus-sep,.afw-focus-kbd{display:none}
 .afw-focus-slot{flex:0 0 auto;margin-left:auto}
 .afw-focus-title{flex:1 1 auto}
 .afw-focus-body{padding:16px 14px 22px}
}
/* Focus mode demo (?demo=focus-mode): page layout and the demo contents; tokens only. */
.afw-fmd{display:flex;flex-direction:column;gap:16px;min-width:0}
.afw-fmd [hidden]{display:none!important}
.afw-fmd-log{margin:0;padding:10px 14px;border:1px solid var(--line);border-radius:10px;background:var(--panel);font-size:10.5px;line-height:1.5;color:var(--muted)}
.afw-fmd-log strong{color:var(--ink-strong);font-weight:600}
/* editor */
.afw-fm-editor{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;max-width:1500px;margin:0 auto;height:100%;min-height:0}
.afw-fm-pane{min-width:0;display:flex}
.afw-fm-pane>.afw-card-panel{flex:1 1 auto}
.afw-fm-editor .ld-field{flex:1 1 auto}
.afw-fm-editor textarea.afw-fm-ta{min-height:360px;height:calc(100dvh - 250px);resize:none;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:10.5px;line-height:1.7}
.afw-fm-doc{min-width:0;max-height:calc(100dvh - 210px);overflow:auto}
.afw-fm-state{font-size:10.5px;color:var(--sf-board-fg2)}
.afw-fm-state[data-dirty="true"]{color:var(--sf-board-warn);font-weight:600}
.afw-fm-save.ld-button{min-height:30px;font-size:10.5px}
.afw-fm-save.ld-button:disabled{opacity:.55}
/* task overview */
.afw-fm-task{display:grid;grid-template-columns:minmax(0,3fr) minmax(0,2fr);gap:16px;max-width:1500px;margin:0 auto;align-items:start}
.afw-fm-col{display:flex;flex-direction:column;gap:16px;min-width:0}
.afw-fm-steps{list-style:none;margin:6px 0 0;padding:0;display:flex;flex-direction:column}
.afw-fm-step{display:grid;grid-template-columns:24px minmax(0,1fr) auto;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid var(--line);font-size:11px;color:var(--ink)}
.afw-fm-step:last-child{border-bottom:0}
.afw-fm-step-ico{display:grid;place-items:center;width:24px;height:24px;border-radius:50%;border:1px solid var(--line2);color:var(--muted)}
.afw-fm-step-ico .i{width:13px;height:13px}
.afw-fm-step[data-state="done"] .afw-fm-step-ico{background:var(--green-bg);border-color:transparent;color:var(--green)}
.afw-fm-step[data-state="current"] .afw-fm-step-ico{background:var(--tint);border-color:var(--orange);color:var(--orange-deep)}
.afw-fm-step[data-state="current"] .afw-fm-step-name{font-weight:650;color:var(--ink-strong)}
.afw-fm-step[data-state="todo"]{color:var(--muted)}
.afw-fm-step-time{font-size:10px;color:var(--muted);font-variant-numeric:tabular-nums}
.afw-fm-task .afw-card-panel .afw-dv-head{border-bottom:0;padding-bottom:0}
.afw-fm-task .afw-dv-root{gap:6px}
@media(max-width:600px){.afw-fm-state{display:none}}
@media(max-width:900px){.afw-fm-editor,.afw-fm-task{grid-template-columns:minmax(0,1fr)}.afw-fm-editor textarea.afw-fm-ta{height:240px;min-height:200px}.afw-fm-doc{max-height:none}}
/* R5f: no empty row under the card title of the task detail */
.afw-fm-task .afw-card-panel-head{min-height:0}
.afw-fm-task .afw-card-panel-body{gap:6px}
/* R5f: "Uložit" in the saved state is a normal disabled secondary button with readable contrast */
.afw-fm-save.ld-button:disabled{opacity:1;color:var(--sf-board-fg2);background:#ffffff0f;border-color:#f5d6a83d;cursor:default}
/* R5f: running label in the focus header: sync icon, warm tone from the palette (not blue) */
.afw-fm-live{display:inline-flex;align-items:center;gap:6px;padding:3px 10px 3px 8px;border:1px solid #f5d6a85c;border-radius:100px;background:#ffffff14;color:var(--sf-board-fg);font-size:10px;font-weight:650;white-space:nowrap}
.afw-fm-live .i{width:12px;height:12px;color:var(--sf-board-warn)}
@media(prefers-reduced-motion:no-preference){.afw-fm-live .i{animation:afw-fm-spin 2.4s linear infinite}}
@keyframes afw-fm-spin{to{transform:rotate(360deg)}}
/* W12: two cards fill the row (2 x 1/2) instead of two thirds of a 3-column grid */
@container afw-cards (min-width:660px){.afw-fmd-two .afw-card-grid-in{grid-template-columns:repeat(2,minmax(0,1fr))}}
@container afw-cards (min-width:660px){.afw-fmd-three .afw-card-grid-in{grid-template-columns:repeat(3,minmax(0,1fr))}}
/* Form kit showcase: layout only, tokens only. */
.afw-form-kit-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:12px 14px;align-items:start}
.afw-form-kit-form{display:flex;flex-direction:column;gap:12px;max-width:640px}
.afw-form-kit-head{display:flex;justify-content:space-between;align-items:baseline;font-size:11px;border-bottom:1px solid var(--line);padding-bottom:6px}
.afw-form-kit-form[hidden]{display:none}
.afw-form-kit-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.afw-form-kit-meta{font-size:9.5px;color:var(--muted)}
.afw-form-kit-cap{margin:0 0 4px;font-size:9.5px;color:var(--muted);font-weight:650;text-transform:uppercase;letter-spacing:.03em}
.afw-form-kit-scenarios{display:flex;gap:12px;flex-wrap:wrap;font-size:10px;color:var(--ink)}
.afw-form-kit-scenarios label{display:flex;gap:5px;align-items:center}
.afw-form-kit-closed{border:1px dashed var(--line2);border-radius:9px;padding:14px;text-align:center;font-size:10.5px;color:var(--muted)}
@media(max-width:730px){.afw-form-kit-grid{grid-template-columns:1fr}}
/* MenuButton / Toolbar / shared floating menu. Tokens only. The menu is portaled to <body> (fixed), so window or split-panel overflow never clips it. */
.afw-menubtn{display:inline-flex;min-width:0}
.afw-menu{position:fixed;left:0;top:0;z-index:150000;box-sizing:border-box;min-width:176px;max-width:min(320px,calc(100vw - 16px));overflow:auto;padding:5px;background:var(--paper);border:1px solid var(--line2);border-radius:10px;box-shadow:var(--shadow-float);color:var(--ink);font-size:10.5px}
.afw-menu-item{display:grid;grid-template-columns:1fr auto;column-gap:14px;align-items:center;width:100%;text-align:left;font:inherit;color:inherit;background:transparent;border:0;border-radius:6px;padding:7px 9px;cursor:pointer}
.afw-menu-item:hover,.afw-menu-item:focus-visible{background:var(--hover);outline:0}
.afw-menu-item:focus-visible{box-shadow:inset 0 0 0 2px var(--orange)}
.afw-menu-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.afw-menu-key{font-size:9px;color:var(--quiet)}
.afw-menu-reason{grid-column:1/-1;margin-top:2px;font-size:9px;color:var(--quiet);white-space:normal}
.afw-menu-item[aria-disabled=true]{color:var(--quiet);cursor:not-allowed}
.afw-menu-item[aria-disabled=true]:hover{background:transparent}
.afw-menu-danger{color:var(--red)}
.afw-menu-danger:hover,.afw-menu-danger:focus-visible{background:var(--red-bg)}
.afw-menu-sep{height:1px;margin:4px 6px;background:var(--line)}
.afw-menu-empty{padding:8px 10px;color:var(--muted)}
.afw-toolbar{display:flex;align-items:center;width:100%;min-width:0;max-width:100%;overflow:hidden;padding:4px 6px;box-sizing:border-box;background:var(--panel);border:1px solid var(--line);border-radius:9px}
.afw-toolbar-items{display:flex;align-items:center;gap:5px;flex-wrap:nowrap;min-width:0}
.afw-toolbar-item,.afw-toolbar-more{display:inline-flex;flex:none}
.afw-toolbar-item[hidden],.afw-toolbar-more[hidden],.afw-toolbar-sep[hidden]{display:none}
.afw-toolbar-sep{flex:none;width:1px;height:20px;margin:0 3px;background:var(--line2)}
.afw-toolbar-disabled{opacity:.5;cursor:not-allowed}
.afw-toolbar button:focus-visible,.afw-menubtn button:focus-visible{outline:2px solid var(--orange);outline-offset:1px}
/* Progress + operation: tokens only. */
.afw-prog{display:flex;align-items:center;gap:8px;min-width:0}
.afw-prog-track{flex:1;height:8px;border-radius:99px;background:var(--panel3);overflow:hidden;position:relative;min-width:40px}
.afw-prog-fill{height:100%;border-radius:99px;background:linear-gradient(90deg,var(--orange),var(--orange-deep));width:0}
.afw-prog-success .afw-prog-fill{background:var(--green)}
.afw-prog-danger .afw-prog-fill{background:var(--red)}
.afw-prog-value{flex:none;min-width:34px;text-align:right;font-size:10px;color:var(--muted);font-variant-numeric:tabular-nums}
.afw-prog[data-mode="indeterminate"] .afw-prog-fill{position:absolute;left:0;width:40%;opacity:.85}
@media(prefers-reduced-motion:no-preference){
 .afw-prog-fill{transition:width .2s linear}
 .afw-prog[data-mode="indeterminate"] .afw-prog-fill{animation:afw-prog-slide 1.2s ease-in-out infinite}
}
@media(prefers-reduced-motion:reduce){.afw-prog[data-mode="indeterminate"] .afw-prog-fill{width:100%;opacity:.45}}
@keyframes afw-prog-slide{0%{left:-40%}100%{left:100%}}
.afw-op{display:flex;flex-direction:column;gap:7px;padding:10px 12px;border:1px solid var(--line);border-radius:9px;background:var(--panel);color:var(--ink);min-width:0}
.afw-op-head{display:flex;justify-content:space-between;gap:10px;align-items:baseline;flex-wrap:wrap}
.afw-op-title{font-size:11px;overflow-wrap:anywhere}
.afw-op-status{font-size:10px;color:var(--muted);overflow-wrap:anywhere}
.afw-op[data-state="error"] .afw-op-status{color:var(--red)}
.afw-op[data-state="success"] .afw-op-status{color:var(--green)}
.afw-op-actions{display:flex;gap:8px;min-height:0}
.afw-op-actions:empty{display:none}
.afw-op-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.afw-op{position:relative}
/* AFW.richText: rámec a toolbar sdílí s code-editorem (.afw-ed-*, definované v code-editor.css); tady jen oblast textu. Jen tokeny. */
.afw-rt-stage{position:relative;height:var(--afw-rt-h,200px);flex:none;min-width:0;background:var(--paper)}
.afw-rt-host{position:absolute;inset:0}
.afw-rt-host .ql-container{height:100%;border:0;font-family:inherit;font-size:11.5px;color:var(--ink)}
.afw-rt-host .ql-editor{box-sizing:border-box;height:100%;padding:12px 14px;line-height:1.6;color:var(--ink);overflow-y:auto;tab-size:4}
.afw-rt-host .ql-editor:focus{outline:0}
.afw-rt-host .ql-editor.ql-blank::before{left:14px;right:14px;color:var(--muted);font-style:normal}
.afw-rt-host .ql-editor p,.afw-rt-host .ql-editor ol,.afw-rt-host .ql-editor ul,.afw-rt-host .ql-editor blockquote{margin:0 0 .55em}
.afw-rt-host .ql-editor h2{margin:.9em 0 .4em;font-size:15px;font-weight:650;letter-spacing:-.015em;color:var(--ink-strong)}
.afw-rt-host .ql-editor h3{margin:.8em 0 .35em;font-size:12.5px;font-weight:650;color:var(--ink-strong)}
.afw-rt-host .ql-editor>:first-child{margin-top:0}
.afw-rt-host .ql-editor blockquote{margin-left:0;padding:2px 0 2px 12px;border-left:3px solid var(--gold);color:var(--muted)}
.afw-rt-host .ql-editor a{color:var(--orange-deep);text-underline-offset:2px}
.afw-rt-host .ql-editor strong{font-weight:650}
.afw-rt-host .ql-editor ::selection{background:color-mix(in srgb,var(--orange) 26%,transparent)}
.afw-rt-loading{margin:0;padding:14px;color:var(--muted)}
.afw-rt[data-readonly] .ql-editor{color:var(--ink)}
.afw-rt[data-readonly] .afw-ed-bar{opacity:.55}
/* toolbar: textová tlačítka nadpisů, mezery mezi skupinami */
.afw-rt .afw-ed-btn.afw-rt-text{min-width:30px;font-weight:700;font-size:10px;letter-spacing:.01em}
.afw-rt .afw-ed-bar{gap:2px;flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none}
.afw-rt .afw-ed-bar::-webkit-scrollbar{display:none}
.afw-rt .afw-ed-btn.ql-active{background:var(--selected)}
/* řádek s adresou odkazu */
.afw-rt-link{box-sizing:border-box;display:flex;align-items:center;gap:8px;min-height:40px;padding:6px 8px;border-bottom:1px solid var(--line);background:var(--panel)}
.afw-rt-link[hidden]{display:none}
.afw-rt-link-label{flex:none;font-size:10px;font-weight:650;color:var(--ink)}
.afw-rt-url{flex:1 1 120px;min-width:0;height:28px;box-sizing:border-box;padding:0 9px;border:1px solid var(--line2);border-radius:6px;background:var(--paper);color:var(--ink);font:inherit;font-size:10.5px;outline:0}
.afw-rt-url:focus{border-color:var(--orange);box-shadow:var(--focus)}
.afw-rt-url[aria-invalid="true"]{border-color:var(--red);box-shadow:0 0 0 1px var(--red)}
.afw-rt-act{appearance:none;flex:none;height:28px;padding:0 10px;border:1px solid var(--line2);border-radius:6px;background:var(--paper);color:var(--ink);font:inherit;font-size:10.5px;font-weight:650;cursor:pointer}
.afw-rt-act:hover{border-color:var(--orange);color:var(--orange-deep)}
.afw-rt-act[data-act="apply"]{background:var(--orange);border-color:var(--orange-deep);color:#2b1503}
.afw-rt-act:focus-visible{outline:2px solid var(--orange);outline-offset:1px}
.afw-rt-act[hidden]{display:none}
.afw-rt-count{font-variant-numeric:tabular-nums;white-space:nowrap}
.afw-rt-count[data-over="true"]{color:var(--red);font-weight:650}
@container (max-width:340px){
 /* úzký prostor: plný toolbar se zalomí do dvou řádků místo skrytého posunu */
 .afw-rt .afw-ed-bar{height:auto;min-height:var(--afw-ed-bar-h);flex-wrap:wrap;padding:3px 6px;row-gap:2px}
}
@container (max-width:520px){
 .afw-rt-link-label{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
 .afw-rt-link{flex-wrap:wrap}
 .afw-rt-url{flex-basis:100%;order:-1}
 .afw-rt .afw-ce-hint{display:none}
}
/* ukázka */
.afw-rt-demo{display:grid;grid-template-columns:minmax(0,1fr);gap:12px;container-type:inline-size;min-width:0}
@container (min-width:900px){.afw-rt-demo-2{grid-template-columns:repeat(2,minmax(0,1fr))}}
.afw-rt-card{box-sizing:border-box;display:flex;flex-direction:column;gap:10px;min-width:0;padding:calc(var(--card-pad) - 2px) var(--card-pad);border:1px solid var(--sf-surface-bd);border-radius:12px;background:var(--sf-surface-bg);box-shadow:var(--sf-surface-shadow)}
.afw-rt-card-title{margin:0;font-size:12.5px;font-weight:600;letter-spacing:-.015em;color:var(--sf-surface-fg)}
.afw-rt-card-sub{margin:2px 0 0;font-size:10.5px;color:var(--sf-surface-fg2)}
.afw-rt-out{margin:8px 0 0;padding:8px 10px;border:1px dashed var(--line2);border-radius:8px;background:var(--panel);color:var(--muted);font:10px/1.5 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;white-space:pre-wrap;overflow-wrap:anywhere;max-height:84px;overflow:auto}
.afw-rt-details{margin:8px 0 0}
.afw-rt-details>summary{cursor:pointer;font-size:10.5px;font-weight:600;color:var(--muted);padding:4px 2px;border-radius:6px}
.afw-rt-details>summary:focus-visible{outline:2px solid var(--orange);outline-offset:2px}
.afw-rt-details[open]>.afw-rt-out{margin-top:4px}
.afw-rt .ql-editor a{text-decoration:underline;text-underline-offset:2px}
/* SecretReveal: tokens only. */
.afw-secret{display:flex;flex-direction:column;gap:8px;padding:12px;border:1px solid var(--warn);border-radius:10px;background:var(--warn-bg);color:var(--ink);min-width:0;position:relative}
.afw-secret-title{font-size:11px}
.afw-secret-warn{margin:0;font-size:10.5px;line-height:1.6}
.afw-secret-row{display:flex;gap:10px;align-items:center;flex-wrap:wrap;min-width:0}
.afw-secret-value{flex:1 1 220px;min-width:0;padding:8px 10px;border:1px solid var(--line2);border-radius:8px;background:var(--paper);color:var(--ink-strong);font-size:11px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;overflow-wrap:anywhere;word-break:break-all;letter-spacing:.02em}
.afw-secret-value:focus-visible{outline:2px solid var(--orange);outline-offset:2px}
.afw-secret-actions{display:flex;gap:8px;flex-wrap:wrap}
.afw-secret-confirm{padding:10px;border:1px solid var(--red);border-radius:8px;background:var(--red-bg);display:flex;flex-direction:column;gap:8px}
.afw-secret-confirm[hidden]{display:none}
.afw-secret-confirm-text,.afw-secret-done{margin:0;font-size:10.5px;line-height:1.6}
.afw-secret[data-state="closed"]{border-color:var(--line2);background:var(--panel);}
.afw-secret-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
/* AFW.slider: dva nativní input[type=range] nad společnou dráhou. Jen tokeny z theme.css. */
.afw-sl{--sl-thumb:20px;--sl-hit:24px;--sl-track:4px;display:flex;flex-direction:column;gap:6px;min-width:0;font-size:10.5px;color:var(--ink)}
.afw-sl .afw-sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.afw-sl-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;min-width:0}
.afw-sl-label{font-size:10px;font-weight:650;color:var(--ink)}
.afw-sl-val{font-size:11.5px;font-weight:650;color:var(--orange-deep);font-variant-numeric:tabular-nums;white-space:nowrap;text-align:right}
.afw-sl-body{display:grid;grid-template-columns:minmax(0,1fr);gap:8px;align-items:center;container-type:inline-size}
.afw-sl[data-kind="single"] .afw-sl-body:has(.afw-sl-num){grid-template-columns:minmax(0,1fr) auto}
.afw-sl[data-kind="range"] .afw-sl-body:has(.afw-sl-num){grid-template-columns:auto minmax(0,1fr) auto}
.afw-sl-field{position:relative;height:var(--sl-hit);min-width:0}
.afw-sl-track{position:absolute;left:calc(var(--sl-hit)/2);right:calc(var(--sl-hit)/2);top:50%;height:var(--sl-track);margin-top:calc(var(--sl-track)/-2);border-radius:var(--sl-track);background:color-mix(in srgb,var(--ink) 16%,var(--paper));overflow:hidden}
.afw-sl-fill{position:absolute;top:0;bottom:0;left:calc(var(--from,0)*100%);width:calc((var(--to,0) - var(--from,0))*100%);border-radius:var(--sl-track);background:var(--orange)}
.afw-sl-in{position:absolute;inset:0;width:100%;height:var(--sl-hit);margin:0;padding:0;background:transparent;-webkit-appearance:none;appearance:none;pointer-events:none;outline:0;z-index:3}
.afw-sl-in::-webkit-slider-runnable-track{height:var(--sl-hit);background:transparent;border:0}
.afw-sl-in::-moz-range-track{height:var(--sl-hit);background:transparent;border:0}
/* palec: 24 px dotyková plocha, viditelný kruh 20 px (radiální přechod), halo při fokusu */
.afw-sl{--sl-c:var(--orange);--sl-halo:transparent}
.afw-sl-in{--sl-bg:radial-gradient(circle closest-side,var(--paper) 0 7.5px,var(--sl-c) 8px 10px,var(--sl-halo) 10.5px 12px,transparent 12.5px)}
.afw-sl-in::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;pointer-events:auto;box-sizing:border-box;width:var(--sl-hit);height:var(--sl-hit);border:0;border-radius:50%;background:var(--sl-bg);filter:drop-shadow(0 1px 1.5px #2e1e1366);cursor:grab}
.afw-sl-in::-moz-range-thumb{pointer-events:auto;box-sizing:border-box;width:var(--sl-hit);height:var(--sl-hit);border:0;border-radius:50%;background:var(--sl-bg);cursor:grab}
.afw-sl-in:active::-webkit-slider-thumb{cursor:grabbing}
.afw-sl-in:focus-visible{--sl-halo:color-mix(in srgb,var(--sl-c) 34%,transparent)}
.afw-sl[data-invalid="true"]{--sl-c:var(--red)}
.afw-sl[data-invalid="true"] .afw-sl-fill{background:var(--red)}
.afw-sl[data-disabled="true"]{opacity:.55;--sl-c:var(--quiet)}
.afw-sl[data-disabled="true"] .afw-sl-fill{background:var(--quiet)}
.afw-sl[data-disabled="true"] .afw-sl-in::-webkit-slider-thumb{cursor:not-allowed}
.afw-sl[data-disabled="true"] .afw-sl-in::-moz-range-thumb{cursor:not-allowed}
/* popisky min/max a značky */
.afw-sl-col{display:flex;flex-direction:column;gap:0;min-width:0}
.afw-sl-minmax{display:flex;justify-content:space-between;gap:8px;margin-top:-2px;color:var(--muted);font-size:9.5px;font-variant-numeric:tabular-nums}
.afw-sl[data-marks="true"] .afw-sl-minmax{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.afw-sl-marks{position:relative;height:26px;margin:-2px calc(var(--sl-hit)/2) 0}
.afw-sl-mark{appearance:none;position:absolute;top:0;left:calc(var(--p)*100%);width:28px;margin-left:-14px;height:24px;padding:0;border:0;background:none;font:inherit;font-size:9.5px;color:var(--muted);font-variant-numeric:tabular-nums;cursor:pointer;overflow:visible}
.afw-sl-mark i{position:absolute;left:14px;top:0;width:1px;height:6px;background:var(--line2)}
.afw-sl-mark span{position:absolute;top:9px;left:14px;transform:translateX(-50%);white-space:nowrap}
.afw-sl-mark[data-edge="start"] span{transform:translateX(calc(var(--sl-hit)/-2))}
.afw-sl-mark[data-edge="end"] span{transform:translateX(calc(-100% + var(--sl-hit)/2))}
.afw-sl-mark[data-active="true"] i{background:var(--orange)}
.afw-sl-mark:hover{color:var(--orange-deep)}
.afw-sl-mark:disabled{cursor:not-allowed}
/* číselný vstup */
.afw-sl-num{display:inline-flex;align-items:center;position:relative;height:var(--control-h);min-width:0}
.afw-sl-numin{box-sizing:border-box;width:84px;height:var(--control-h);padding:0 10px;border:1px solid var(--line2);border-radius:8px;background:var(--paper);color:var(--ink);font:inherit;font-size:10.5px;font-variant-numeric:tabular-nums;outline:0;-moz-appearance:textfield}
.afw-sl-num:has(.afw-sl-unit) .afw-sl-numin{padding-right:30px}
.afw-sl-numin::-webkit-outer-spin-button,.afw-sl-numin::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.afw-sl-numin:focus{border-color:var(--orange);box-shadow:var(--focus)}
.afw-sl-numin[aria-invalid="true"]{border-color:var(--red);box-shadow:0 0 0 1px var(--red)}
.afw-sl-numin:disabled{background:var(--panel3);color:var(--quiet);cursor:not-allowed}
.afw-sl-unit{position:absolute;right:9px;font-size:9.5px;color:var(--muted);pointer-events:none}
.afw-sl-err{margin:0;font-size:9px;line-height:1.55;color:var(--red)}
.afw-sl-err[hidden]{display:none}
@container (max-width:400px){
 .afw-sl[data-kind="range"] .afw-sl-body:has(.afw-sl-num){grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
 .afw-sl[data-kind="range"] .afw-sl-body:has(.afw-sl-num) .afw-sl-col{grid-column:1 / -1;grid-row:1}
 .afw-sl[data-kind="range"] .afw-sl-num{display:flex}
 .afw-sl[data-kind="range"] .afw-sl-numin{width:100%}
}
/* ukázka */
.afw-sl-demo{display:grid;grid-template-columns:minmax(0,1fr);gap:12px;container-type:inline-size;min-width:0}
@container (min-width:760px){.afw-sl-demo{grid-template-columns:repeat(2,minmax(0,1fr))}}
.afw-sl-card{box-sizing:border-box;display:flex;flex-direction:column;gap:14px;min-width:0;padding:calc(var(--card-pad) - 2px) var(--card-pad);border:1px solid var(--sf-surface-bd);border-radius:12px;background:var(--sf-surface-bg);box-shadow:var(--sf-surface-shadow)}
.afw-sl-card-title{margin:0;font-size:12.5px;font-weight:600;letter-spacing:-.015em;color:var(--sf-surface-fg)}
.afw-sl-card-sub{margin:2px 0 0;font-size:10.5px;color:var(--sf-surface-fg2)}
.afw-sl-card-note{margin:0;font-size:10px;color:var(--muted);min-height:1.5em}
/* SplitView: tokens only. The host never grows its parent: fixed height, overflow hidden, min-width:0 everywhere. */
.afw-split{display:flex;align-items:stretch;width:100%;max-width:100%;min-width:0;height:var(--afw-split-h,300px);overflow:hidden;background:var(--paper);border:1px solid var(--line);border-radius:9px;color:var(--ink);font-size:10.5px}
.afw-split[data-dragging]{user-select:none;cursor:col-resize}
.afw-split-panel{display:flex;flex-direction:column;min-width:0;overflow:hidden;background:var(--paper)}
.afw-split-head{flex:none;display:flex;align-items:center;gap:6px;min-height:30px;padding:0 8px 0 10px;background:var(--panel2);border-bottom:1px solid var(--line)}
.afw-split-title{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:10.5px}
.afw-split-body{flex:1;min-height:0;overflow:auto;padding:10px;overscroll-behavior:contain}
.afw-split-toggle,.afw-split-back{font:inherit;font-size:11px;line-height:1;min-width:22px;height:22px;padding:0 6px;border:1px solid var(--line2);border-radius:6px;background:var(--paper);color:var(--muted);cursor:pointer}
.afw-split-toggle:hover,.afw-split-back:hover{background:var(--hover);color:var(--ink)}
.afw-split-toggle:focus-visible,.afw-split-back:focus-visible{outline:2px solid var(--orange);outline-offset:1px}
.afw-split-back{display:none}
.afw-split-collapsed .afw-split-body,.afw-split-collapsed .afw-split-title{display:none}
.afw-split-collapsed .afw-split-head{flex:1;flex-direction:column;justify-content:flex-start;padding:6px 0;border-bottom:0}
.afw-split-sep{flex:none;width:8px;position:relative;cursor:col-resize;background:var(--panel);border-left:1px solid var(--line);border-right:1px solid var(--line);touch-action:none;outline:0}
.afw-split-sep::after{content:"";position:absolute;left:2px;top:50%;width:2px;height:28px;margin-top:-14px;border-radius:2px;background:var(--line2);transition:background .12s}
.afw-split-sep:hover::after,.afw-split-sep[data-dragging]::after{background:var(--orange)}
.afw-split-sep:focus-visible{background:var(--tint);box-shadow:inset 0 0 0 2px var(--orange)}
.afw-split-sep[data-disabled]{cursor:default;opacity:.55}
@media(max-width:720px){
.afw-split{flex-direction:column;height:auto;overflow:visible}
.afw-split-panel{flex:none!important;min-width:0!important}
.afw-split-sep,.afw-split-toggle{display:none}
.afw-split-panel+.afw-split-sep+.afw-split-panel,.afw-split-panel+.afw-split-panel{border-top:1px solid var(--line)}
.afw-split-collapsed .afw-split-body,.afw-split-collapsed .afw-split-title{display:block}
.afw-split-collapsed .afw-split-head{flex-direction:row;padding:0 8px 0 10px;border-bottom:1px solid var(--line)}
.afw-split-body{max-height:220px}
.afw-split[data-mobile=master-detail] .afw-split-panel:not([data-active]){display:none}
.afw-split[data-mobile=master-detail]{height:var(--afw-split-h,300px);overflow:hidden}
.afw-split[data-mobile=master-detail] .afw-split-body{max-height:none}
.afw-split[data-mobile=master-detail] .afw-split-panel[data-active]{flex:1 1 auto!important}
.afw-split[data-mobile=master-detail] .afw-split-back{display:inline-block}
}
/* StateView: tokens only, light/dark and compact/comfort via src/tokens/theme.css. */
.afw-state{display:flex;gap:12px;align-items:flex-start;padding:var(--card-pad);border:1px dashed var(--line2);border-radius:10px;background:var(--panel);color:var(--ink);min-width:0}
.afw-state-icon{flex:none;width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:var(--panel3);color:var(--muted)}
.afw-state-icon .i,.afw-state-icon svg{width:16px;height:16px}
.afw-state-body{display:flex;flex-direction:column;gap:6px;min-width:0;flex:1}
.afw-state-title{font-size:12px}
.afw-state-text{margin:0;font-size:10.5px;line-height:1.6;color:var(--muted)}
.afw-state-actions{margin-top:4px}
.afw-state-error{border-style:solid;border-color:var(--red);background:var(--red-bg)}
.afw-state-error .afw-state-icon{background:transparent;color:var(--red)}
.afw-state-permission-denied{border-style:solid;border-color:var(--warn);background:var(--warn-bg)}
.afw-state-permission-denied .afw-state-icon{background:transparent;color:var(--warn)}
.afw-state-no-results .afw-state-icon{background:var(--tint);color:var(--orange-deep)}
.afw-state-skeleton{display:flex;flex-direction:column;gap:8px;margin-top:4px}
.afw-state-skeleton span{display:block;height:12px;width:var(--w,90%);border-radius:6px;background:linear-gradient(90deg,var(--panel3),var(--panel2),var(--panel3));background-size:200% 100%}
@media(prefers-reduced-motion:no-preference){.afw-state-skeleton span{animation:afw-state-shimmer 1.3s linear infinite}}
@keyframes afw-state-shimmer{from{background-position:200% 0}to{background-position:-200% 0}}
@media(max-width:730px){.afw-state{padding:12px}}
/* Stepper (wizard). Tokens only; layout switches by the width of the component itself (data-mode set from a ResizeObserver): wide >= 900, mid 600-899, compact < 600. */
.afw-stepper-host{display:block;min-width:0}
.afw-stepper{--stp-gap:16px;display:grid;gap:var(--stp-gap);align-items:start;min-width:0;font-size:11px;color:var(--ink);grid-template-columns:minmax(0,1fr)}
.afw-stepper *{box-sizing:border-box}
.afw-stepper [hidden]{display:none!important}
.afw-stepper .afw-sr{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.afw-stepper[data-mode="wide"]{grid-template-columns:236px minmax(0,1fr) 288px}
.afw-stepper[data-mode="wide"]:not(:has(>.afw-stepper-help:not([hidden]))){grid-template-columns:236px minmax(0,1fr)}
.afw-stepper[data-mode="mid"]{grid-template-columns:212px minmax(0,1fr)}
.afw-stepper[data-mode="mid"]>.afw-stepper-help{grid-column:1/-1}
/* rail */
.afw-stepper-rail{background:var(--paper);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow-card);padding:12px 10px;min-width:0}
.afw-stepper-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.afw-stepper-step{position:relative;min-width:0}
.afw-stepper-step+.afw-stepper-step::before{content:"";position:absolute;left:23px;top:-8px;height:16px;width:2px;background:var(--line2);border-radius:2px}
.afw-stepper-step[data-state="done"]+.afw-stepper-step::before,.afw-stepper-step[data-state="skipped"]+.afw-stepper-step::before{background:var(--green)}
.afw-stepper-item{display:flex;align-items:flex-start;gap:10px;width:100%;margin:0;padding:8px;border:0;border-radius:9px;background:transparent;color:inherit;font:inherit;text-align:left;min-width:0}
button.afw-stepper-item{cursor:pointer}
button.afw-stepper-item:hover{background:var(--hover)}
.afw-stepper-item:focus-visible{outline:2px solid var(--orange);outline-offset:1px}
.afw-stepper-step[data-current] .afw-stepper-item{background:var(--tint)}
.afw-stepper-badge{flex:none;display:grid;place-items:center;width:24px;height:24px;margin-top:0;border-radius:50%;border:1.5px solid var(--line2);background:var(--paper);color:var(--muted);font-size:10.5px;font-weight:650;line-height:1;font-variant-numeric:tabular-nums}
.afw-stepper-badge .i{width:13px;height:13px;stroke-width:2}
.afw-stepper-step[data-state="current"] .afw-stepper-badge{background:var(--orange);border-color:var(--orange);color:#2b1608}
.afw-stepper-step[data-state="done"] .afw-stepper-badge{background:var(--green-bg);border-color:var(--green);color:var(--green)}
.afw-stepper-step[data-state="skipped"] .afw-stepper-badge{background:transparent;border-style:dashed;border-color:var(--muted);color:var(--muted)}
.afw-stepper-step[data-state="error"] .afw-stepper-badge{background:var(--red-bg);border-color:var(--red);color:var(--red)}
.afw-stepper-step[data-state="disabled"]{opacity:.5}
.afw-stepper-text{display:flex;flex-direction:column;gap:1px;min-width:0;padding-top:2px}
.afw-stepper-title{font-size:11.5px;font-weight:600;line-height:1.3;color:var(--ink-strong);overflow-wrap:anywhere}
.afw-stepper-step[data-state="todo"] .afw-stepper-title,.afw-stepper-step[data-state="disabled"] .afw-stepper-title{color:var(--muted);font-weight:500}
.afw-stepper-desc{font-size:10px;line-height:1.4;color:var(--muted);overflow-wrap:anywhere}
.afw-stepper-meta{font-size:9.5px;font-weight:650;letter-spacing:.02em;color:var(--muted)}
.afw-stepper-meta[data-tone="bad"]{color:var(--red)}
/* compact (phone) */
.afw-stepper-compact{display:none;background:var(--paper);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow-card);padding:10px 12px;min-width:0}
.afw-stepper[data-mode="compact"]>.afw-stepper-rail{display:none}
.afw-stepper[data-mode="compact"]>.afw-stepper-compact{display:block}
.afw-stepper-cline{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 10px;margin-bottom:8px}
.afw-stepper-cline strong{font-size:10px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--orange-deep)}
.afw-stepper-cline span{font-size:12px;font-weight:600;color:var(--ink-strong);overflow-wrap:anywhere}
.afw-stepper-bar{height:4px;border-radius:99px;background:var(--panel3);overflow:hidden}
.afw-stepper-bar i{display:block;height:100%;border-radius:99px;background:var(--orange);transition:width .2s ease}
/* main */
.afw-stepper-main{display:flex;flex-direction:column;gap:12px;min-width:0}
.afw-stepper-panel{background:var(--paper);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow-card);padding:18px 20px 20px;min-width:0}
.afw-stepper-panel-head{display:flex;flex-direction:column;gap:3px;padding-bottom:12px;margin-bottom:14px;border-bottom:1px solid var(--line)}
.afw-stepper-eyebrow{font-size:9.5px;font-weight:700;letter-spacing:.15em;text-transform:uppercase;color:var(--orange-deep)}
.afw-stepper[data-mode="compact"] .afw-stepper-eyebrow{display:none}
.afw-stepper-panel-title{margin:0;width:fit-content;max-width:100%;font-size:15px;font-weight:600;letter-spacing:-.025em;color:var(--ink-strong);line-height:1.3}
.afw-stepper-panel-title:focus{outline:0}
.afw-stepper-panel-title:focus-visible{outline:2px solid var(--orange);outline-offset:3px;border-radius:4px}
.afw-stepper-panel-desc{margin:0;font-size:11px;line-height:1.55;color:var(--muted);max-width:70ch}
.afw-stepper-tag{align-self:flex-start;margin-top:2px;padding:1px 8px;border-radius:99px;border:1px solid var(--line2);font-size:9.5px;font-weight:650;color:var(--muted)}
.afw-stepper-form{display:flex;flex-direction:column;gap:12px;margin:0;min-width:0}
.afw-stepper-form .afw-form-banner{display:none!important}
.afw-stepper-form .afw-form-feedback{display:contents}
.afw-stepper-form .afw-form-summary{order:-1}
/* navigation */
.afw-stepper-nav{display:flex;align-items:center;gap:10px;min-width:0}
.afw-stepper-actions{display:flex;gap:8px;margin-left:auto}
.afw-stepper-hint{flex:1 1 0;min-width:0;margin:0;padding:0 4px;font-size:10.5px;line-height:1.45;color:var(--warn)}
.afw-stepper-nav [data-blocked="true"]{opacity:.6;cursor:not-allowed}
.afw-stepper-nav [data-afw-component="button"]{min-height:34px}
.afw-stepper[data-mode="compact"] .afw-stepper-nav{flex-wrap:wrap}
.afw-stepper[data-mode="compact"] .afw-stepper-hint{order:3;flex:1 1 100%}
.afw-stepper[data-mode="compact"] .afw-stepper-panel{padding:14px 14px 16px}
/* help */
.afw-stepper-help{background:var(--tint);border:1px solid var(--line2);border-radius:12px;padding:12px 14px;min-width:0;align-self:start}
.afw-stepper[data-mode="wide"] .afw-stepper-help{position:sticky;top:0}
.afw-stepper-help-head{display:flex;align-items:center;gap:8px}
.afw-stepper-help-icon{flex:none;display:grid;place-items:center;width:24px;height:24px;border-radius:7px;color:var(--orange-deep);background:color-mix(in srgb,var(--orange) 16%,transparent)}
.afw-stepper-help-icon .i{width:14px;height:14px}
.afw-stepper-help-title{flex:1 1 auto;margin:0;font-size:11.5px;font-weight:650;color:var(--ink-strong);min-width:0}
.afw-stepper-help-btn{flex:none;min-height:28px;padding:0 10px;border:1px solid var(--line2);border-radius:7px;background:var(--paper);color:var(--ink);font:inherit;font-size:10.5px;font-weight:600;cursor:pointer}
.afw-stepper-help-btn:focus-visible{outline:2px solid var(--orange);outline-offset:2px}
.afw-stepper-help-body{display:flex;flex-direction:column;gap:8px;margin-top:10px;font-size:10.5px;line-height:1.6;color:var(--ink)}
.afw-stepper-help-body p{margin:0}
.afw-stepper-help-body ul{margin:0;padding-left:16px;display:flex;flex-direction:column;gap:4px}
.afw-stepper-help-body strong{color:var(--ink-strong)}
@media(prefers-reduced-motion:reduce){.afw-stepper-bar i{transition:none}}
/* R5f: a heading focused by the host on open carries no ring until the focus moves (host sets data-no-ring) */
.afw-stepper-panel-title[data-no-ring]:focus-visible{outline:0}
/* Stepper demo page (?demo=stepper): layout of the three configurations; tokens only. */
.afw-stpd{display:flex;flex-direction:column;gap:16px;min-width:0}
.afw-stpd [hidden]{display:none!important}
.afw-stpd>section{min-width:0}
.afw-stpd-fields{display:flex;flex-direction:column;gap:12px;min-width:0;max-width:560px}
.afw-stpd-note{margin:0;font-size:11px;line-height:1.6;color:var(--ink)}
.afw-stpd-sum{margin:0;display:grid;grid-template-columns:minmax(0,1fr);gap:0;border:1px solid var(--line);border-radius:10px;background:var(--panel);overflow:hidden}
.afw-stpd-sum>div{display:flex;justify-content:space-between;gap:12px;padding:9px 12px;border-bottom:1px solid var(--line);font-size:11px}
.afw-stpd-sum>div:last-child{border-bottom:0}
.afw-stpd-sum dt{color:var(--muted)}
.afw-stpd-sum dd{margin:0;font-weight:600;color:var(--ink-strong);text-align:right;overflow-wrap:anywhere}
.afw-stpd-summary{max-width:560px}
.afw-stpd-done{margin-bottom:10px;padding:10px 14px;border:1px solid var(--green);border-radius:10px;background:var(--green-bg);color:var(--green);font-size:11px;font-weight:600}
/* TabView: visually aligned with the form-modal tabs (tabs/tabs.css) but standalone. Tokens only. */
.afw-tabs{display:flex;flex-direction:column;min-width:0;max-width:100%;background:var(--paper);border:1px solid var(--line);border-radius:9px;overflow:hidden;color:var(--ink);font-size:10.5px}
.afw-tabs-bar{display:flex;align-items:stretch;min-width:0;background:linear-gradient(120deg,var(--panel2),var(--paper));border-bottom:1px solid var(--line);min-height:40px}
.afw-tabs-list{flex:1 1 auto;min-width:0;display:flex;gap:4px;padding:0 10px;overflow-x:auto;overscroll-behavior:contain;scrollbar-width:none}
.afw-tabs-list::-webkit-scrollbar{display:none}
.afw-tabs-tab{flex:none;display:inline-flex;align-items:center;justify-content:center;gap:6px;white-space:nowrap;font:inherit;font-size:10px;font-weight:600;color:var(--muted);padding:11px 12px 9px;background:transparent;border:0;border-bottom:3px solid transparent;cursor:pointer}
.afw-tabs-tab:hover{color:var(--ink);background:var(--hover)}
.afw-tabs-tab[aria-selected=true]{color:var(--orange-deep);border-bottom-color:var(--orange);font-weight:750}
.afw-tabs-tab:focus-visible{outline:2px solid var(--orange);outline-offset:-3px}
.afw-tabs-tab[data-disabled]{opacity:.45;cursor:not-allowed}
.afw-tabs-tab[data-disabled]:hover{background:transparent;color:var(--muted)}
.afw-tabs-badge{min-width:16px;height:16px;padding:0 5px;border-radius:99px;background:var(--panel3);color:var(--muted);font-size:9px;font-weight:700;line-height:16px;text-align:center;box-sizing:border-box}
.afw-tabs-badge[hidden]{display:none}
.afw-tabs-tab[aria-selected=true] .afw-tabs-badge{background:var(--tint);color:var(--orange-deep)}
.afw-tabs-arrow{flex:none;width:26px;border:0;background:transparent;color:var(--muted);font-size:15px;line-height:1;cursor:pointer}
.afw-tabs-arrow[hidden]{display:none}
.afw-tabs-arrow:hover:not(:disabled){background:var(--hover);color:var(--ink)}
.afw-tabs-arrow:disabled{opacity:.3;cursor:default}
.afw-tabs-panels{min-width:0}
.afw-tabs-panel{padding:var(--card-pad);min-width:0;outline:0}
.afw-tabs-panel:focus-visible{box-shadow:inset 0 0 0 2px var(--orange)}
.afw-tabs-panel[hidden]{display:none}
@media(max-width:720px){
.afw-tabs-list{padding:0 6px}
.afw-tabs-tab{font-size:9px;padding:11px 10px 9px}
.afw-tabs-panel{padding:12px}
}

/* R1 (AFW-DS-02, bod 6): edge shadow on the side where tabs are hidden (set by tab-view.js on scroll/resize). */
.afw-tabs-bar{position:relative}
.afw-tabs-bar::before,.afw-tabs-bar::after{content:"";position:absolute;top:0;bottom:1px;width:30px;z-index:2;pointer-events:none;opacity:0;transition:opacity .15s}
.afw-tabs-bar::before{left:26px;background:linear-gradient(to right,color-mix(in srgb,var(--ink) 20%,transparent),transparent)}
.afw-tabs-bar::after{right:26px;background:linear-gradient(to left,color-mix(in srgb,var(--ink) 20%,transparent),transparent)}
.afw-tabs-bar[data-more-start]::before,.afw-tabs-bar[data-more-end]::after{opacity:1}
@media(prefers-reduced-motion:reduce){.afw-tabs-bar::before,.afw-tabs-bar::after{transition:none}}
/* Timeline: tokens only. */
.afw-tl{display:block;min-width:0;color:var(--ink);position:relative}
.afw-tl-bounded{max-height:360px;overflow-y:auto;padding:0 6px}
.afw-tl-bounded:focus-visible{outline:2px solid var(--orange);outline-offset:2px;border-radius:6px}
.afw-tl-groups{display:flex;flex-direction:column;gap:14px}
.afw-tl-day{margin:0 0 6px;font-size:10px;letter-spacing:.04em;text-transform:uppercase;color:var(--orange-deep);position:sticky;top:0;background:var(--paper);padding:3px 0;z-index:1}
.afw-tl-list{list-style:none;margin:0;padding:0 0 0 14px;border-left:2px solid var(--line);display:flex;flex-direction:column;gap:10px}
.afw-tl-entry{position:relative;outline:none;border-radius:6px}
.afw-tl-entry:focus-visible{box-shadow:var(--focus)}
.afw-tl-dot{position:absolute;left:-20px;top:5px;width:8px;height:8px;border-radius:50%;background:var(--gold2);border:2px solid var(--paper)}
.afw-tl-head{display:flex;flex-wrap:wrap;gap:2px 6px;align-items:baseline;font-size:11px}
.afw-tl-action{color:var(--ink);overflow-wrap:anywhere}
.afw-tl-time{margin-left:auto;font-size:9.5px;color:var(--muted)}
.afw-tl-changes{list-style:none;margin:4px 0 0;padding:0;display:flex;flex-direction:column;gap:3px}
.afw-tl-change{display:flex;flex-wrap:wrap;gap:4px 6px;align-items:baseline;font-size:10px;padding:3px 8px;border-radius:6px;background:var(--panel2)}
.afw-tl-field{font-weight:700}
.afw-tl-val{overflow-wrap:anywhere;padding:0 4px;border-radius:4px}
.afw-tl-from{background:var(--red-bg);color:var(--red);text-decoration:line-through}
.afw-tl-to{background:var(--green-bg);color:var(--green)}
.afw-tl-none{text-decoration:none;opacity:.8}
.afw-tl-arrow{color:var(--muted)}
.afw-tl-footer{margin-top:12px;display:flex;justify-content:center}
.afw-tl-footer>div{width:100%}
.afw-tl-end{margin:0;font-size:10px;color:var(--muted)}
.afw-tl-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
@media(max-width:730px){.afw-tl-time{margin-left:0;flex-basis:100%}}
/* Tree: tokens only (src/tokens/theme.css), light/dark, compact density. */
.afw-tree{position:relative;min-width:0;max-width:100%;overflow:auto;overscroll-behavior:contain;background:var(--paper);border:1px solid var(--line);border-radius:9px;padding:4px;color:var(--ink);font-size:10.5px}
.afw-tree-root,.afw-tree-root ul{list-style:none;margin:0;padding:0}
.afw-tree-root{min-width:max-content}
.afw-tree [role=treeitem]{outline:0}
.afw-tree-row{display:flex;align-items:center;gap:5px;min-height:26px;padding:0 8px 0 6px;border-radius:6px;cursor:default;white-space:nowrap;border:1px solid transparent}
.afw-tree-row:hover{background:var(--hover)}
.afw-tree [role=treeitem][aria-selected=true]>.afw-tree-row{background:var(--selected);color:var(--orange-deep);font-weight:650}
.afw-tree [role=treeitem]:focus-visible>.afw-tree-row{border-color:var(--orange);box-shadow:var(--focus)}
.afw-tree-twist{flex:none;width:14px;height:14px;display:grid;place-items:center;color:var(--quiet)}
.afw-tree-svg{width:14px;height:14px;stroke:currentColor;stroke-width:1.9;fill:none;stroke-linecap:round;stroke-linejoin:round;transition:transform .12s}
@media(prefers-reduced-motion:reduce){.afw-tree-svg{transition:none}}
.afw-tree [aria-expanded=true]>.afw-tree-row .afw-tree-twist .afw-tree-svg{transform:rotate(90deg)}
.afw-tree-icon{flex:none;width:15px;height:15px;display:grid;place-items:center;color:var(--gold2)}
.afw-tree [data-kind=doc]>.afw-tree-row .afw-tree-icon{color:var(--muted)}
.afw-tree-label{flex:1 1 auto;min-width:0;max-width:34ch;overflow:hidden;text-overflow:ellipsis}
.afw-tree-label mark{background:var(--tint);color:var(--orange-deep);border-radius:3px;padding:0 1px}
.afw-tree-meta{flex:none;font-size:9px;color:var(--quiet)}
.afw-tree-status{display:flex;align-items:center;gap:7px;min-height:24px;color:var(--muted);font-size:10px}
.afw-tree-spinner{width:11px;height:11px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%}
@media(prefers-reduced-motion:no-preference){.afw-tree-spinner{animation:afw-tree-spin .75s linear infinite}}
@keyframes afw-tree-spin{to{transform:rotate(360deg)}}
.afw-tree-error{color:var(--red);background:var(--red-bg);gap:8px}
.afw-tree-error:hover{background:var(--red-bg)}
.afw-tree [data-kind=error]:focus-visible>.afw-tree-row{border-color:var(--red)}
.afw-tree-retry{font:inherit;font-size:9.5px;font-weight:650;border:1px solid var(--red);background:transparent;color:var(--red);border-radius:5px;padding:1px 7px;cursor:pointer}
.afw-tree-retry:hover{background:var(--paper)}
.afw-tree-none{padding:10px;font-size:10px;color:var(--muted)}
.afw-tree-live{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.afw-tree-filter{width:100%;box-sizing:border-box;height:var(--control-h);margin-bottom:6px;padding:0 10px;border:1px solid var(--line2);border-radius:7px;background:var(--paper);color:var(--ink);font-size:10.5px;outline:0}
.afw-tree-filter:focus{border-color:var(--orange);box-shadow:var(--focus)}
@media(max-width:720px){.afw-tree-label{max-width:24ch}}

/* COMPONENT SELECT */
/* AFW admin-first PageRouter: background page and windows are independent. */
.afw-page-host{display:contents}
.afw-route-page[hidden],.afw-route-card[hidden],.afw-route-restore[hidden],.afw-route-empty[hidden]{display:none!important}
.afw-route-screen{display:grid;gap:17px;min-width:0}
.afw-route-hero{display:flex;align-items:center;justify-content:space-between;gap:25px;
 background:radial-gradient(ellipse at 91% 5%,#9b69304a,transparent 45%),
 linear-gradient(115deg,#493323,#342316 75%,#5c3d26);color:#fff4e4;
 border:1px solid #856044;border-radius:15px;padding:27px 30px;min-height:160px}
.afw-route-kicker{font-size:9px;letter-spacing:.13em;font-weight:750;color:#e2b88b;text-transform:uppercase}
.afw-route-hero h1{font-size:27px;line-height:1.2;font-weight:750;letter-spacing:-.045em;margin:8px 0 8px;color:#fff5ea}
.afw-route-hero p{font-size:12px;line-height:1.6;max-width:650px;margin:0;color:#dfcbb5}
.afw-route-hero-mark{display:grid;place-items:center;border-radius:18px;width:72px;height:72px;min-width:72px;
 background:#ffffff12;border:1px solid #efd4ae52;color:#ffc28d}
.afw-route-hero-mark .i{width:33px;height:33px}
.afw-route-section-header{display:flex;align-items:center;justify-content:space-between;gap:15px;flex-wrap:wrap;margin-top:4px}
.afw-route-section-header strong{font-size:16px;font-weight:700;color:var(--ink-strong)}
.afw-route-section-header p{font-size:11px;color:var(--muted);margin:3px 0 0}
.afw-route-search{display:flex;align-items:center;gap:8px;min-width:220px;width:min(330px,100%);height:36px;
 padding:0 11px;border:1px solid var(--line2);background:var(--paper);border-radius:9px}
.afw-route-search:focus-within{border-color:var(--orange);box-shadow:var(--focus)}
.afw-route-search .i{width:15px;height:15px;color:var(--orange-deep)}
.afw-route-search input{outline:none;border:0;background:transparent;min-width:0;width:100%;color:var(--ink);font-size:11px}
.afw-route-cards{display:grid;gap:9px}
.afw-route-card{display:flex;align-items:center;gap:16px;background:linear-gradient(100deg,var(--paper),var(--panel2));
 padding:16px;border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow-card);min-width:0}
.afw-route-card:hover{border-color:var(--gold2)}
.afw-route-card-icon{display:grid;place-items:center;width:44px;height:44px;flex:0 0 44px;border-radius:11px;
 border:1px solid #edc8a2;background:#ffead4;color:var(--orange-deep)}
.afw-route-card-icon .i{width:23px;height:23px}
.afw-route-card-content{flex:1;min-width:0}
.afw-route-card-content span{color:var(--orange-deep);font-size:9px;font-weight:750;letter-spacing:.09em}
.afw-route-card h3{margin:3px 0;font-size:13px;color:var(--ink-strong)}
.afw-route-card p{margin:0;font-size:10.5px;color:var(--muted)}
.afw-route-card .ld-button{flex:none}
.afw-route-restore{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:10px 13px;
 background:var(--selected);border:1px solid var(--gold2);color:var(--ink);border-radius:9px;
 font-size:11px;box-shadow:var(--shadow-card);margin:0 0 13px}
.afw-route-restore-dot{width:7px;height:7px;background:var(--orange);border-radius:50%;box-shadow:0 0 0 3px #f4781c29}
.afw-route-restore-button{margin-left:auto;border:1px solid var(--gold2);background:var(--paper);color:var(--ink);
 border-radius:7px;font-size:10.5px;font-weight:700;padding:5px 9px;cursor:pointer}
.afw-route-restore [data-afw-restore]{margin-left:auto}
.afw-route-empty{border:1px dashed var(--line2);padding:28px;text-align:center;border-radius:9px;color:var(--muted);font-size:12px}
.afw-route-foot{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;padding:11px 2px;
 border-top:1px solid var(--line);font-size:10px;color:var(--muted)}
@media(max-width:720px){
 .afw-route-hero{padding:18px;gap:9px;min-height:128px}
 .afw-route-hero h1{font-size:21px}
 .afw-route-hero p{font-size:10.5px}
 .afw-route-hero-mark{width:42px;height:42px;min-width:42px;border-radius:10px}
 .afw-route-hero-mark .i{width:22px;height:22px}
 .afw-route-section-header{display:grid;gap:9px}
 .afw-route-search{min-width:0;width:100%}
 .afw-route-card{gap:10px;padding:12px 10px;flex-wrap:wrap}
 .afw-route-card-icon{width:35px;height:35px;flex-basis:35px}
 .afw-route-card h3{font-size:11.5px}
 .afw-route-card p{font-size:10px}
 .afw-route-card .ld-button{margin-left:auto}
 .afw-route-restore{font-size:10px}
}

/* v0.20 — shared content architecture across background admin pages.
   Uses existing theme tokens and shared AFW buttons/icons; no new owners. */
.afw-route-screen{gap:16px}
.afw-route-hero{min-height:150px}
.afw-route-eyebrow{display:block;color:var(--orange-deep);font-size:9px;font-weight:750;letter-spacing:.13em}
.afw-route-section-header{margin-top:2px}
.afw-route-section-header h2{font-size:16px;font-weight:700;letter-spacing:-.025em;margin:3px 0;color:var(--ink-strong);line-height:1.25}
.afw-route-section-header p{font-size:11px;line-height:1.5}
.afw-route-content{display:grid;grid-template-columns:minmax(0,1fr) minmax(235px,285px);gap:13px;align-items:start;min-width:0}
.afw-route-results,.afw-route-guide{min-width:0;border:1px solid var(--line);border-radius:12px;background:linear-gradient(155deg,var(--paper),var(--panel));box-shadow:var(--shadow-card);overflow:hidden}
.afw-route-results-head{min-height:40px;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:0 17px;border-bottom:1px solid var(--line);color:var(--quiet);font-size:10px}
.afw-route-results-head span:first-child{color:var(--muted);font-weight:750;font-size:9px;letter-spacing:.13em}
.afw-route-cards{gap:0}
.afw-route-card{background:transparent;border:0;border-bottom:1px solid var(--line);border-radius:0;box-shadow:none;padding:14px 16px;min-height:75px;gap:13px}
.afw-route-card:last-child{border-bottom:0}
.afw-route-card:nth-child(even){background:color-mix(in srgb,var(--panel2) 35%,transparent)}
.afw-route-card:hover{background:var(--hover);border-color:var(--line)}
.afw-route-card-icon{width:39px;height:39px;flex-basis:39px;border-radius:10px;background:var(--tint);border-color:var(--gold2)}
.afw-route-card-icon .i{width:20px;height:20px}
.afw-route-card-content span.afw-route-card-kind{font-size:9px;letter-spacing:.09em}
.afw-route-card h3{font-size:12.5px;line-height:1.35;margin:3px 0 2px}
.afw-route-card p{font-size:10.5px;line-height:1.4}
.afw-route-card .ld-button{min-width:76px}
.afw-route-guide-head{padding:19px 18px 15px}
.afw-route-guide-icon{width:35px;height:35px;display:grid;place-items:center;background:var(--selected);color:var(--orange-deep);border:1px solid var(--gold2);border-radius:9px;margin-bottom:14px}
.afw-route-guide-icon .i{width:18px;height:18px}
.afw-route-guide h3{font-size:14px;line-height:1.3;margin:6px 0 7px;color:var(--ink-strong);letter-spacing:-.025em}
.afw-route-guide p{margin:0;font-size:10.5px;line-height:1.65;color:var(--muted)}
.afw-route-steps{list-style:none;padding:15px 18px;margin:0;border-top:1px solid var(--line);display:grid;gap:13px}
.afw-route-steps li{display:flex;align-items:flex-start;gap:10px;color:var(--ink);font-size:10.5px;line-height:1.5}
.afw-route-steps li span{display:grid;place-items:center;flex:0 0 20px;height:20px;background:var(--panel2);border:1px solid var(--line2);border-radius:6px;font-weight:700;color:var(--orange-deep);font-size:9px}
.afw-route-guide-action{padding:15px 18px;background:var(--panel2);border-top:1px solid var(--line);display:grid;gap:10px}
.afw-route-guide-action .ld-button{justify-content:center;width:100%;white-space:normal;min-height:34px;text-align:center}
.afw-route-guide-action small{font-size:9px;color:var(--quiet);line-height:1.4}
.afw-route-empty{margin:14px;padding:24px;text-align:center}
.afw-route-empty strong{display:block;color:var(--ink-strong);font-size:12px}
.afw-route-empty p{font-size:10.5px;margin:8px 0 14px}
.afw-route-empty button{font:inherit;color:var(--orange-deep);background:var(--paper);border:1px solid var(--gold2);border-radius:7px;padding:7px 12px;cursor:pointer}
.afw-route-empty button:focus-visible{outline:2px solid var(--orange);outline-offset:2px}
@media(max-width:980px){
 .afw-route-content{grid-template-columns:minmax(0,1fr)}
 .afw-route-guide{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
 .afw-route-guide-head{grid-row:span 2}
 .afw-route-guide-action{align-self:end}
}
@media(max-width:720px){
 .afw-route-screen{gap:13px}
 .afw-route-content,.afw-route-guide{display:grid;grid-template-columns:minmax(0,1fr)}
 .afw-route-guide-head{grid-row:auto}
 .afw-route-card{gap:10px;min-height:68px;padding:12px}
 .afw-route-card .ld-button{margin-left:auto}
 .afw-route-card-icon{flex-basis:35px;width:35px;height:35px}
 .afw-route-guide-head,.afw-route-steps,.afw-route-guide-action{padding:14px}
}

/* Programmatically focused heading for route announcement; not a keyboard control. */
.afw-route-hero h1[tabindex="-1"]:focus{outline:none}
