/* Nomos Engine legal operations system */
/* Governing reference: Carbon structure; Linear luminance; exact Geist metrics. */
:root{
  --nomos-canvas:#0d0f12;--nomos-sidebar:#12100e;--nomos-surface:#15181c;
  --nomos-raised:#1c2025;--nomos-raised-2:#252b31;--nomos-border:#343a42;
  --nomos-border-strong:#4b5b6d;--nomos-ivy:#52677e;--nomos-moss:#6ea8e6;
  --nomos-focus:#9ac7ef;--nomos-text:#f0eee9;--nomos-muted:#a2a8af;--nomos-signal:#6ea8e6;--nomos-official:#8fc5ff;--nomos-botanical:#789276;--nomos-judicial:#6ea8e6;--nomos-slate:#1f2935;--nomos-walnut:#17120f;--nomos-brass:#b4945a;--nomos-brass-bright:#d2b06b;--nomos-action:#338bd5;
  --nomos-danger:#e18080;--nomos-warning:#d7a85a;--nomos-success:#79b68b;
  --font-brand:Charter,"Iowan Old Style",Palatino,Georgia,serif;
  --font-display:"Geist","Helvetica Neue",sans-serif;
  --font-body:"Geist","Helvetica Neue",sans-serif;
  --font-mono-legal:"Geist Mono",Consolas,monospace;
  --font-mono-technical:"Geist Mono",Consolas,monospace;
  --font-friendly:"Geist","Helvetica Neue",sans-serif;
  --font-tribunal:"Geist","Helvetica Neue",sans-serif;
  --bg:var(--nomos-canvas);--panel:var(--nomos-surface);--surface:var(--nomos-surface);
  --surface2:var(--nomos-raised);--line:var(--nomos-border);--text:var(--nomos-text);
  --muted:var(--nomos-muted);--accent:var(--nomos-moss);--forest:var(--nomos-sidebar);
  --forest-2:var(--nomos-raised);--gold:var(--nomos-moss);--gold-soft:#283126;
  --green:var(--nomos-success);--amber:var(--nomos-warning);--red:var(--nomos-danger);
  --shadow:none;color-scheme:dark
}
:root[data-theme="light"]{
  --nomos-canvas:#f3f5f7;--nomos-sidebar:#e8edf2;--nomos-surface:#ffffff;
  --nomos-raised:#edf1f5;--nomos-raised-2:#e2e8ef;--nomos-border:#c7d0da;
  --nomos-border-strong:#9eacbb;--nomos-ivy:#536b84;--nomos-moss:#1769aa;
  --nomos-focus:#075985;--nomos-text:#111827;--nomos-muted:#556273;
  --nomos-signal:#1769aa;--nomos-official:#075985;--nomos-judicial:#1769aa;--nomos-slate:#dbe3eb;--nomos-action:#1769aa;--nomos-brass-bright:#8a6728;
  --nomos-danger:#a43d3d;--nomos-warning:#8a5d16;--nomos-success:#2f6f47;
  --gold-soft:#dbe8f4;color-scheme:light
}
/* ---------------------------------------------------------------------------
   The reading room.
   The sidebar is a bookcase; this is the room it stands in.  The re-skin
   layers below wrote cold grey-green literals at rule level with no theme
   guard, which is the same defect that broke Birch.  Rather than paint over
   them with another layer, those rules were re-pointed AT THESE TOKENS in
   place, so each surface still has exactly one owner and both themes flip
   from here.
   Wood and parchment carry the surfaces; the leather accents defined with the
   shelves (--bind-oxblood / --bind-blue / --bind-forest) and --room-gilt carry
   emphasis only.
   --------------------------------------------------------------------------- */
:root{
  --room-floor:#16120c;--room-page:#221b13;--room-page-raised:#2d2419;
  --room-lift:#382c1f;--room-well:#100d08;--room-rule:#3c2f22;
  --room-rule-strong:#5c4936;--room-ink:#f2ebdd;--room-ink-soft:#b6a68f;
  --room-gilt:#c8a35a;--room-accent:#b98a3e;--room-accent-ink:#17110a
}
:root[data-theme="light"]{
  --room-floor:#efe6d5;--room-page:#fbf6ec;--room-page-raised:#f3ead9;
  --room-lift:#e9dcc2;--room-well:#e7dcc7;--room-rule:#d2c2a4;
  --room-rule-strong:#a9906c;--room-ink:#2a2015;--room-ink-soft:#6c5a45;
  --room-gilt:#74551f;--room-accent:#6b4a17;--room-accent-ink:#f7efdd
}
*{box-sizing:border-box}
html,body{background:var(--room-floor)}
body{margin:0;color:var(--room-ink);font:400 14px/1.45 var(--font-body);letter-spacing:0;font-feature-settings:"liga" 1}
button,input,select,textarea{font:inherit}
button{touch-action:manipulation}
.lead-card{touch-action:pan-y}
button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,[tabindex]:focus-visible{outline:0;box-shadow:0 0 0 2px var(--nomos-canvas),0 0 0 4px var(--nomos-focus)}
.metric strong,.billing-stopwatch,.billing-entry-duration,.invoice-time-choice,.lead{font-variant-numeric:tabular-nums}
.citation,.legal-pre{font-family:var(--font-mono-legal);font-variant-ligatures:contextual common-ligatures}
pre,code,.billing-stopwatch,.billing-entry-duration{font-family:var(--font-mono-technical);font-variant-ligatures:contextual common-ligatures}

/* Brand: botanical character belongs here and nowhere else. */
.brand-lockup{display:flex;align-items:center;gap:9px;min-width:0}
.wordmark{display:inline-flex;align-items:baseline;white-space:nowrap;letter-spacing:-.025em}
.wordmark-nomos{font:600 21px/1 var(--font-brand);color:var(--room-ink)}
.wordmark-engine{font:500 13px/1 var(--font-body);letter-spacing:.025em;color:var(--room-ink);opacity:.8;margin-left:2px}
.wordmark-lion{width:40px;height:40px;flex:0 0 auto;object-fit:contain}
.brand-lockup.compact{height:auto;padding:0;border:0}
.brand-lockup.compact .wordmark-nomos{font-size:19px}
.brand-lockup.compact .wordmark-engine{font-size:12px}
.brand-lockup.compact .wordmark-lion{width:30px;height:30px}

/* Application frame */
.shell{display:grid;grid-template-columns:220px minmax(0,1fr);min-height:100vh;background:var(--room-floor)}
.side{position:sticky;top:0;height:100vh;padding:0;display:flex;flex-direction:column;background:var(--case-wood);border-right:1px solid var(--shelf-underside);color:var(--room-ink);z-index:10}
.side>.brand{height:58px;padding:0 16px;border-bottom:1px solid var(--shelf-plank)}
.nav{flex:1;min-height:0;overflow-y:auto;padding:10px 8px}
.nav button{position:relative;width:100%;min-height:34px;margin:1px 0;padding:7px 10px;text-align:left;color:var(--book-letter);background:transparent;border:1px solid transparent;border-radius:2px;font-size:13px;font-weight:500;cursor:pointer;transition:background-color 110ms ease,color 110ms ease,border-color 110ms ease}
.nav button:hover{color:var(--book-letter)}
.nav button:active{transform:translateY(1px)}
.nav button.active{color:var(--book-letter);border-color:var(--bind-gilt);font-weight:500}
.nav button.active:before{content:"";position:absolute;left:-1px;top:7px;bottom:7px;width:2px;border-radius:0;background:var(--bind-gilt)}
.legal{position:static;margin:0 17px 16px;padding-top:12px;border-top:1px solid var(--shelf-plank);color:var(--page-edge);font-size:10px;line-height:1.55}
.main{width:100%;max-width:none;margin:0;padding:20px 24px 36px;background:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="34" height="34"><circle cx="5" cy="9" r="1.0" fill="%23c8a35a" opacity="0.055"/><circle cx="19" cy="4" r="0.8" fill="%23c8a35a" opacity="0.04"/><circle cx="28" cy="15" r="1.1" fill="%23000000" opacity="0.07"/><circle cx="11" cy="22" r="0.9" fill="%23c8a35a" opacity="0.045"/><circle cx="24" cy="29" r="1.0" fill="%23000000" opacity="0.06"/><circle cx="3" cy="31" r="0.8" fill="%23c8a35a" opacity="0.035"/></svg>') repeat,var(--room-floor)}
.top{max-width:1480px;margin:0 auto 16px;padding-bottom:14px;border-bottom:1px solid var(--room-rule)}
.top h1,.billing-heading h2,.invoice-heading h2{margin:0;color:var(--room-ink);font:500 28px/1.15 var(--font-display);letter-spacing:-1.12px}
h1,h2,h3{color:var(--room-ink)}
h2{font-family:var(--font-display);font-weight:500;letter-spacing:-.48px}
h3{font-weight:600}
.sub{margin-top:5px;color:var(--room-ink-soft);font-size:13px;max-width:72ch}
.muted{color:var(--room-ink-soft)}
.auth{align-items:center}.auth:before{display:none}

/* Inputs and actions */
.auth input,.field,input,select,textarea{min-height:36px;padding:8px 10px;background:var(--room-well);border:1px solid var(--room-rule);border-radius:2px;color:var(--room-ink);box-shadow:none;outline:0}
.auth input{width:230px}
textarea{line-height:1.55;resize:vertical}
.auth input:hover,.field:hover,input:hover,select:hover,textarea:hover{border-color:var(--room-rule-strong)}
.auth input:focus,.field:focus,input:focus,select:focus,textarea:focus{border-color:var(--nomos-focus)}
input:disabled,select:disabled,textarea:disabled{opacity:.55;cursor:not-allowed}
.primary,.ghost,.danger,.mini{min-height:36px;padding:7px 12px;border:1px solid var(--room-rule);border-radius:2px;color:var(--room-ink);font-size:14px;font-weight:500;box-shadow:none;cursor:pointer;transition:background-color 110ms ease,border-color 110ms ease,color 110ms ease,transform 80ms ease}
.primary{background:var(--room-accent);border-color:var(--room-accent);color:var(--room-accent-ink)}
.primary:hover{box-shadow:inset 0 0 0 999px rgba(255,255,255,.12)}
.ghost,.mini{background:var(--room-page-raised);border-color:var(--room-rule)}
.ghost:hover,.mini:hover{background:var(--room-lift);border-color:var(--room-rule-strong)}
.danger{background:var(--bind-oxblood);border-color:var(--bind-oxblood);color:var(--book-letter)}
.danger:hover{box-shadow:inset 0 0 0 999px rgba(255,255,255,.10)}
.primary:active,.ghost:active,.mini:active,.danger:active{transform:translateY(1px)}
.primary:disabled,.ghost:disabled,.mini:disabled,.danger:disabled{opacity:.48;cursor:not-allowed;transform:none}
.persona-switch .mini.active{border-color:var(--room-gilt);color:var(--room-ink);background:var(--room-lift)}

/* Dense data surfaces */
.metrics,.board,.grid,.results,.toolbar{max-width:1480px;margin-left:auto;margin-right:auto}
.metrics{gap:1px;margin-bottom:14px;background:var(--room-rule)}
.metric,.card,.column,.builder-panel,.lead{background:var(--room-page);border:1px solid var(--room-rule);border-radius:2px;color:var(--room-ink);box-shadow:none}
.metric{min-height:76px;padding:12px 14px;border:0;border-radius:0}
.metric strong{font:600 24px/1.1 var(--font-display);letter-spacing:-.96px;color:var(--room-ink)}
.label,.form-group label{font-family:var(--font-mono-technical);color:var(--room-ink-soft);font-size:10px;font-weight:500;text-transform:uppercase;letter-spacing:.055em}
.card{padding:16px}.column{padding:9px;background:var(--room-well)}.column h3{color:var(--room-gilt);font:500 11px/1.4 var(--font-mono-technical);letter-spacing:.05em;text-transform:uppercase}
.lead{background:var(--room-page-raised);border-color:var(--room-rule)}.lead:hover{border-color:var(--room-rule-strong)}
.pill,.badge{border:1px solid var(--room-rule);border-radius:999px;background:var(--room-page-raised);color:var(--room-ink-soft);font-size:10px;font-weight:600;letter-spacing:.035em}
.empty{padding:20px;border:1px dashed var(--room-rule);border-radius:2px;background:transparent;color:var(--room-ink-soft)}
.citation,.public-link{color:var(--room-gilt);text-underline-offset:3px}
.matter-ws-privacy,.lead-flags,.builder-note{border-radius:2px;box-shadow:none}
.matter-ws-privacy{background:var(--room-page-raised);border-color:var(--bind-forest);color:var(--room-ink-soft)}
.matter-dropzone{border-radius:2px;background:var(--room-well)}
.matter-dropzone.drag{border-color:var(--room-gilt);background:var(--room-lift)}
.billing-stopwatch{font-family:var(--font-mono-technical);color:var(--room-ink)}
.billing-entry-duration{font-family:var(--font-mono-technical);color:var(--room-ink-soft)}
.invoice-time-choice,.matter-doc-row,.section-editor,.publish-card{border-radius:2px}

/* Calendar */
.calendar-heading,.calendar-month-title,.acct-settings-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}
.calendar-heading{max-width:1480px;margin:0 auto 14px}.calendar-heading h2{margin:2px 0 4px}.calendar-controls{display:flex;gap:6px}
.calendar-layout{max-width:1480px;margin:0 auto;display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:14px;align-items:start}.calendar-sidebar{display:grid;gap:14px}.calendar-month{padding:0;overflow:hidden}.calendar-month-title{padding:14px 16px;border-bottom:1px solid var(--room-rule)}.calendar-month-title h3,.calendar-sidebar h3{margin:3px 0 0}
.calendar-weekdays,.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}.calendar-weekdays{background:var(--room-page-raised);border-bottom:1px solid var(--room-rule)}.calendar-weekdays span{padding:8px;text-align:center;font:500 10px/1.3 var(--font-mono-technical);text-transform:uppercase;letter-spacing:.05em;color:var(--room-ink-soft)}
.calendar-day{min-width:0;min-height:112px;padding:7px;text-align:left;border:0;border-right:1px solid var(--room-rule);border-bottom:1px solid var(--room-rule);background:var(--room-page);color:var(--room-ink);cursor:pointer}.calendar-day:nth-child(7n){border-right:0}.calendar-day:hover{background:var(--room-lift)}.calendar-day.outside{color:var(--room-ink-soft);background:color-mix(in srgb,var(--room-floor) 70%,var(--room-page))}.calendar-day.selected{box-shadow:inset 0 0 0 2px var(--room-gilt)}.calendar-day.today .calendar-day-number{display:grid;place-items:center;width:24px;height:24px;background:var(--room-gilt);color:var(--room-floor)}.calendar-day-number{display:block;margin-bottom:7px;font:600 12px/1 var(--font-mono-technical)}.calendar-day-items{display:grid;gap:4px}.calendar-chip{display:block;overflow:hidden;padding:3px 5px;white-space:nowrap;text-overflow:ellipsis;border-left:2px solid var(--room-gilt);background:var(--room-page-raised);font-size:10px}.calendar-chip.deposition{border-color:var(--nomos-warning)}.calendar-chip.invoice{border-color:var(--nomos-danger)}.calendar-more{color:var(--room-ink-soft);font-size:10px}
.calendar-agenda{display:grid;gap:1px;margin-top:12px;background:var(--room-rule)}.calendar-agenda-item{display:grid;grid-template-columns:74px 1fr;gap:10px;padding:11px;background:var(--room-page)}.calendar-agenda-item p{margin:4px 0 2px;color:var(--room-ink-soft);font-size:12px}.calendar-source{align-self:start;padding:3px 5px;border:1px solid var(--room-rule);font:500 9px/1.3 var(--font-mono-technical);text-transform:uppercase;color:var(--room-ink-soft)}.calendar-source.deposition{color:var(--nomos-warning)}.calendar-source.invoice{color:var(--nomos-danger)}

/* Settings */
.acct-settings-head{padding:18px 20px;border-bottom:1px solid var(--room-rule)}.acct-settings-head h2{margin:4px 0 0}.acct-settings-tabs{display:flex;gap:0;overflow-x:auto;border-bottom:1px solid var(--room-rule);background:var(--room-page-raised)}.acct-settings-tabs button{min-height:42px;padding:8px 13px;border:0;border-right:1px solid var(--room-rule);background:transparent;color:var(--room-ink-soft);white-space:nowrap;cursor:pointer}.acct-settings-tabs button.active{background:var(--room-page);color:var(--room-ink);box-shadow:inset 0 -2px var(--room-gilt)}.acct-settings-body{min-height:430px;padding:20px}.acct-settings-body>section[hidden]{display:none}.acct-settings-body h3{margin:0 0 8px}.acct-settings-body section section{margin-top:22px;padding-top:18px;border-top:1px solid var(--room-rule)}.acct-setting-row{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:13px 0;border-top:1px solid var(--room-rule)}.acct-setting-row p{margin:3px 0 0}.acct-setting-row input[type="checkbox"]{width:18px;height:18px;min-height:auto}.acct-theme-options{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;max-width:560px}.acct-theme-options button{min-height:70px;border:1px solid var(--room-rule);background:var(--room-page-raised);color:var(--room-ink);cursor:pointer}.acct-theme-options button.active{border-color:var(--room-gilt);box-shadow:inset 0 0 0 1px var(--room-gilt)}
.acct-ui-style-options{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:8px 0 12px}.acct-ui-style-options button{min-height:92px;padding:13px;text-align:left;border:1px solid var(--room-rule);background:var(--room-page-raised);color:var(--room-ink);cursor:pointer}.acct-ui-style-options button:hover{background:var(--room-lift)}.acct-ui-style-options button.active{border-color:var(--room-gilt);box-shadow:inset 0 0 0 1px var(--room-gilt)}.acct-ui-style-options strong small{display:block}.acct-ui-style-options small{margin-top:6px;color:var(--room-ink-soft);line-height:1.35}

/* Login and account access */
.login-panel{position:fixed;inset:0;display:grid;grid-template-columns:minmax(0,410px) minmax(0,330px);align-items:stretch;align-content:center;justify-content:center;gap:0;padding:24px;background:rgba(14,10,6,.94);overflow:auto;z-index:50}
.login-panel[hidden]{display:none}
.login-card,#login-panel>#acctSignin{width:100%;min-height:0;margin:0!important;padding:28px 30px;background:var(--room-page);border:1px solid var(--room-rule-strong);border-radius:2px;box-shadow:0 22px 48px rgba(0,0,0,.38)}
.login-card{border-right:0}
#login-panel>#acctSignin{display:flex;flex-direction:column;justify-content:center;width:100%;box-shadow:0 22px 48px rgba(0,0,0,.38)}
.login-card .brand-lockup{height:auto;margin:0 0 22px;padding:0 0 16px;border-bottom:1px solid var(--room-rule)}
.login-card h2,#login-panel>#acctSignin h3{margin:0 0 8px!important;font:500 22px/1.2 var(--font-display);letter-spacing:-.88px}
.login-card p,#login-panel>#acctSignin p{line-height:1.55}
.login-card label{font:500 10px/1.4 var(--font-mono-technical);letter-spacing:.055em;text-transform:uppercase;color:var(--room-ink-soft)}
.login-card input,#login-panel>#acctSignin input{width:100%;margin-top:7px}
#login-panel>#acctSignin .form-group{margin-bottom:12px}
#login-panel>#acctSignin button{width:100%;margin-top:8px}
#login-panel>#acctSignin{overflow:auto;max-height:calc(100vh - 48px)}
#login-panel>#acctSignin .login-signup-link{width:auto;margin:18px 0 0;padding:0;background:none;border:0;box-shadow:none;color:var(--room-ink-soft);font:500 15px/1.45 var(--font-body);text-align:left;letter-spacing:0;text-transform:none}
#login-panel>#acctSignin .login-signup-link:hover{color:var(--room-ink)}
.login-hero .login-card{width:100%;margin:0!important;padding:0;background:transparent;border:0;box-shadow:none;border-radius:0}
.login-hero .login-card h2{margin:22px 0 10px!important}
.signup-card{display:grid;gap:16px}
.signup-card h3{margin:0}
.signup-section{display:grid;gap:12px;padding-top:16px;border-top:1px solid var(--room-rule)}
.signup-section:first-of-type{border-top:0;padding-top:0}
.signup-section-label{font:500 12px/1.4 var(--font-mono-technical);letter-spacing:.055em;text-transform:uppercase;color:var(--room-ink-soft)}
.signup-legal{display:grid;gap:14px}
.signup-legal-box{display:grid;border:1px solid var(--room-rule);border-radius:2px;background:var(--room-page);overflow:hidden}
.signup-legal-terms{max-height:160px;overflow:auto;padding:12px 14px;border:0;background:transparent;color:var(--room-ink-soft);font-size:14px;line-height:1.6}
.signup-legal-ack{display:flex;gap:8px;align-items:center;font-size:15px;font-weight:500;margin:0;padding:10px 14px 10px 8px;border-top:1px solid var(--room-rule);background:var(--room-page)}
.signup-legal-ack input,.signup-legal-check,#login-panel>#acctSignin input.signup-legal-check,#login-panel>#acctSignin .signup-legal-ack input[type="checkbox"]{appearance:auto;-webkit-appearance:checkbox;width:12px!important;height:12px!important;min-width:12px!important;max-width:12px!important;margin:0!important;padding:0!important;flex:0 0 12px!important;align-self:center;transform:none;box-shadow:none}
.login-panel{grid-template-columns:minmax(0,max(500px,30vw)) minmax(0,max(460px,24vw));padding:36px}
.login-card,#login-panel>#acctSignin{padding:36px 40px}
.login-card h2,#login-panel>#acctSignin h3{font:500 28px/1.2 var(--font-display);letter-spacing:-.9px}
.login-card p,#login-panel>#acctSignin p{font-size:16px;line-height:1.6}
.login-card label,#login-panel>#acctSignin label{font-size:12px}
.login-card input,#login-panel>#acctSignin input{margin-top:8px;padding:12px 14px;font-size:16px}
#login-panel>#acctSignin .form-group{margin-bottom:14px}
#login-panel>#acctSignin button{margin-top:10px;padding:12px 16px;font-size:16px}
.login-hero{padding:48px 56px}
.login-hero h1{font-size:42px;line-height:1.15;max-width:14ch;margin:24px 0 14px}
.login-hero p{font-size:17px;line-height:1.65;max-width:34ch}
.login-hero li{margin:12px 0;font-size:16px;line-height:1.5}
#login-panel.is-creating-firm{grid-template-columns:minmax(0,max(460px,26vw)) minmax(0,max(540px,30vw))}
#login-panel>#acctSignin.is-signin-page{justify-content:center}
#login-panel>#acctSignin.is-signup-page{justify-content:flex-start}
#login-panel>#acctSignin .acct-page[hidden]{display:none!important}
#login-panel>#acctSignin .acct-page-signin h3,#login-panel>#acctSignin .acct-page-signup h3{margin:0 0 8px}
@media(max-width:900px){.login-card,#login-panel>#acctSignin{width:min(640px,100%)}}
.legal-pre{border-radius:2px;background:var(--room-well);border-color:var(--room-rule)}

/* Help and feedback */
.title-with-help{gap:8px}.tab-help-toggle{width:26px;height:26px;border:1px solid var(--room-rule-strong);border-radius:2px;background:var(--room-page-raised);color:var(--room-gilt);font:600 12px/1 var(--font-display);box-shadow:none}
.tab-help-toggle:hover{background:var(--room-lift)}
.tab-help-bar{margin:-6px 0 20px;padding:16px;background:var(--room-page);border:1px solid var(--room-rule);border-radius:2px;box-shadow:none}
.tab-help-bar[hidden]{display:none}
.tab-help-stage{min-height:96px;margin:12px 0;padding:16px;background:var(--room-well);border:1px solid var(--room-rule);border-radius:2px}
.tab-help-stage.playing{animation:none}.tab-help-stage.playing:after{display:none}
.tab-help-progress-track{height:3px;border-radius:0;background:var(--room-rule)}.tab-help-progress-fill{background:var(--room-gilt)}
.status{border-radius:2px;background:var(--room-page-raised);border-color:var(--room-rule-strong);box-shadow:0 12px 32px rgba(0,0,0,.38)}

/* Legal research workspace */
.legal-corpus-workspace,#legal-rag.rag-chat-workspace,.rag-chat-shell,.rag-chat-sidebar,.rag-chat-main{border-radius:2px;background:var(--room-page)}
.rag-chat-shell,.rag-chat-sidebar,.rag-chat-topbar,.rag-jurisdiction-controls,.rag-coverage{border-color:var(--room-rule)}
.rag-chat-sidebar,.rag-chat-topbar,.rag-jurisdiction-controls,.rag-coverage{background:var(--room-page)}
.rag-status-dot{background:var(--nomos-success);box-shadow:0 0 0 3px color-mix(in srgb,var(--nomos-success) 13%,transparent)}
.rag-sidebar-footer strong{color:var(--room-gilt)}
.rag-avatar{background:var(--bind-blue);color:var(--book-letter);border:1px solid var(--room-rule-strong)}
.rag-message.user .rag-message-body{border-radius:2px;background:var(--room-page-raised);border-color:var(--room-rule)}
.rag-prompt-suggestions button{border-radius:2px;background:var(--room-page-raised);border-color:var(--room-rule);color:var(--room-ink)}
.rag-composer{border-radius:2px;background:var(--room-well);border-color:var(--room-rule)}
.rag-send{background:var(--room-accent);color:var(--room-accent-ink)}

/* Voice */
.voice-toggle{right:18px;bottom:18px;width:46px;height:46px;border:1px solid var(--room-rule-strong);border-radius:2px;background:var(--room-page-raised);color:var(--room-gilt);box-shadow:0 8px 24px rgba(0,0,0,.35)}
.voice-panel{border-radius:2px;background:var(--room-page);border-color:var(--room-rule-strong);box-shadow:0 18px 42px rgba(0,0,0,.45)}
.voice-actions select{border-radius:2px;background:var(--room-well)}
.voice-status{color:var(--room-gilt)}
.voice-listen{border-radius:2px}.voice-listen.listening{background:var(--bind-oxblood);border-color:var(--bind-oxblood);animation:none}

/* Law Library Tribunal — dark oak, legal volumes, and restrained brass authority. */
.shell{grid-template-columns:220px minmax(0,1fr)}.side{background:var(--case-wood);box-shadow:inset -1px 0 var(--shelf-underside)}.side>.brand{height:64px;padding:0 17px;background:var(--case-crown)}
.wordmark-nomos{font:700 20px/1 var(--font-display);letter-spacing:-.055em;color:var(--room-ink)}.wordmark-engine{font:500 11px/1 var(--font-body);letter-spacing:.08em;color:var(--room-ink)}
.nav{padding:13px 8px}.nav button{min-height:39px;margin:1px 0;padding:8px 11px;color:var(--book-letter);font-size:13px;font-weight:500;border-radius:1px}.nav button:hover{color:#fff;border-color:var(--shelf-lip)}.nav button.active{color:#fff;border-color:var(--bind-gilt);box-shadow:none;font-weight:600}.nav button.active:before{top:7px;bottom:7px;width:3px;background:var(--bind-gilt)}.legal{color:var(--page-edge)}
.main{padding:25px 30px 42px}.top{margin-bottom:20px;padding-bottom:17px;border-color:var(--room-rule)}.top h1,.billing-heading h2,.invoice-heading h2{font:600 32px/1.08 var(--font-display);letter-spacing:-.05em}h2{font-family:var(--font-display);font-weight:600;letter-spacing:-.04em}h3{font-family:var(--font-body);font-weight:600}.sub{margin-top:8px;color:var(--room-ink-soft);font-size:13px}
.metric,.card,.column,.builder-panel,.lead{border-color:var(--room-rule);background:var(--room-page)}.metrics{background:var(--room-rule)}.metric{padding:15px 17px;background:var(--room-page-raised)}.metric strong{font:600 27px/1 var(--font-display)}.column{background:var(--room-well)}.lead{background:var(--room-page-raised)}.lead:hover{background:var(--room-lift);border-color:var(--room-rule-strong)}
.primary,.primary.mini{background:var(--room-accent);border-color:var(--room-accent);color:var(--room-accent-ink)}.primary:hover,.primary.mini:hover{box-shadow:inset 0 0 0 999px rgba(255,255,255,.12)}.ghost,.mini{background:var(--room-page-raised)}.ghost:hover,.mini:hover{background:var(--room-lift)}.citation,.public-link{color:var(--room-gilt)}.label,.form-group label{color:var(--room-ink-soft)}.auth input,.field,input,select,textarea{background:var(--room-well);border-color:var(--room-rule)}.auth input:focus,.field:focus,input:focus,select:focus,textarea:focus{border-color:var(--nomos-focus)}
.rag-chat-shell{border-color:var(--room-rule);background:var(--room-floor)}.rag-chat-sidebar{background:var(--room-page)}.rag-chat-main{background:var(--room-floor)}.rag-chat-topbar{background:var(--room-page-raised);border-color:var(--room-rule)}.rag-message.assistant .rag-message-body{font-family:var(--font-body);font-size:15px;line-height:1.6}.rag-composer{background:var(--room-well);border-color:var(--room-rule-strong)}.rag-send{background:var(--room-accent);color:var(--room-accent-ink)}.rag-avatar{background:var(--bind-blue);color:var(--book-letter);border-color:var(--room-rule-strong)}.rag-status-dot{background:var(--nomos-success);box-shadow:0 0 0 3px color-mix(in srgb,var(--nomos-success) 13%,transparent)}
.calendar-day{background:var(--room-page)}.calendar-day:hover{background:var(--room-lift)}.calendar-weekdays{background:var(--room-page-raised)}.calendar-chip{background:var(--room-page-raised);border-color:var(--room-gilt)}
.acct-settings-workspace{max-width:1480px;margin:0 auto}.acct-settings-page{min-height:calc(100vh - 150px);border-top:1px solid var(--room-rule);border-bottom:1px solid var(--room-rule);background:transparent}.acct-settings-head{padding:24px 0 20px}.acct-settings-head h2{margin:5px 0 0;font:600 30px/1.08 var(--font-display)}.acct-settings-tabs{padding:0;background:var(--room-page-raised)}.acct-settings-tabs button{min-height:48px;padding:10px 17px;border-right:1px solid var(--room-rule);font-weight:600}.acct-settings-tabs button.active{background:var(--room-page);color:var(--room-ink);box-shadow:inset 0 -3px var(--room-gilt)}.acct-settings-body{min-height:520px;padding:30px 0}.acct-settings-body>section{max-width:980px}.acct-settings-body h3{font-size:21px}.acct-setting-row{padding:16px 0}.acct-theme-options{max-width:760px}.acct-theme-options button{background:var(--room-page-raised)}.acct-theme-options button.active{border-color:var(--room-gilt);box-shadow:inset 0 0 0 1px var(--room-gilt)}
@media(max-width:760px){.side>.brand{height:58px}.main{padding:20px 15px 34px}.top h1,.billing-heading h2,.invoice-heading h2{font-size:27px}.nav{padding:8px}.nav button{min-height:44px}.acct-settings-head{padding-top:18px}.acct-settings-tabs{overflow-x:auto}.acct-settings-body{padding:22px 0}}

@media(max-width:1100px){.billing-grid,.invoice-grid,.calendar-layout{grid-template-columns:1fr}.calendar-sidebar{grid-template-columns:repeat(2,minmax(0,1fr))}.rag-chat-shell{grid-template-columns:190px minmax(0,1fr)}}
@media(max-width:900px){.login-panel{display:flex;align-items:center;justify-content:flex-start;flex-direction:column;padding-top:28px;padding-bottom:28px}.login-card,#login-panel>#acctSignin{width:min(430px,100%);min-height:0;flex:none;justify-content:flex-start;box-shadow:none}.login-card{border-right:1px solid var(--room-rule-strong);border-bottom:0}}
@media(max-width:760px){
  .shell{display:block}.side{position:static;height:auto;border-right:0;border-bottom:1px solid var(--shelf-underside)}
  .side>.brand{height:56px}.legal{display:none}.nav{display:flex;overflow-x:auto;padding:7px}.nav button{width:auto;min-height:44px;white-space:nowrap;padding:10px 12px}.nav button.active:before{left:8px;right:8px;top:auto;bottom:1px;width:auto;height:2px}
  .main{padding:18px 14px 32px}.top{align-items:flex-start;flex-direction:column;padding-bottom:14px}.top h1{font-size:23px}.auth{width:100%}.auth:before{display:none}.auth input{width:100%}
  .metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.metric{min-height:78px}.board,.grid,.form-grid{grid-template-columns:1fr}.form-group.full{grid-column:auto}
  #pipeline .board{display:flex;gap:12px;overflow-x:auto;scroll-snap-type:x proximity;padding-bottom:10px}#pipeline .column{min-width:min(88vw,360px);scroll-snap-align:start}.pipeline-stage-controls{display:grid;grid-template-columns:1fr}.pipeline-stage-controls button{width:100%;min-height:44px}
  .rag-chat-shell{display:block}.rag-chat-sidebar{border-right:0;border-bottom:1px solid var(--room-rule)}.rag-sidebar-copy{display:none}.rag-sidebar-footer{margin-top:10px}.rag-chat-messages{max-height:none;min-height:420px;padding:24px 16px}.rag-composer-wrap{padding:10px 12px 16px}.rag-chat-topbar{padding:10px 14px}.rag-chat-topbar span{display:none}.rag-composer-meta{display:none}.rag-jurisdiction-controls{grid-template-columns:1fr}
  .login-card,#login-panel>#acctSignin{padding:23px}#login-panel input{font-size:16px}.voice-toggle{right:12px;bottom:12px}.billing-heading{display:block}.billing-heading .pill{margin-top:8px}.calendar-heading{display:block}.calendar-controls{margin-top:12px}.calendar-sidebar{grid-template-columns:1fr}.calendar-day{min-height:78px;padding:5px}.calendar-chip{font-size:0;height:7px;padding:0;border-left-width:3px}.calendar-weekdays span{padding:6px 2px}.acct-settings-body{padding:16px;min-height:0}.acct-theme-options{grid-template-columns:1fr}
}
@media(max-height:700px) and (min-width:761px){.legal{display:none}.nav{padding-top:8px;padding-bottom:8px}.nav button{min-height:35px;padding-top:7px;padding-bottom:7px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important;animation:none!important}}
/* Legal workspace declutter: primary research stays visible; secondary scope and binder controls collapse. */
.calendar-chip{display:flex;align-items:baseline;gap:5px}.calendar-chip-time{flex:none;color:var(--room-gilt);font:600 9px/1 var(--font-mono-technical);font-variant-numeric:tabular-nums}.calendar-chip-title{min-width:0;overflow:hidden;text-overflow:ellipsis}
.rag-chat-shell{grid-template-columns:188px minmax(0,1fr)}.rag-chat-sidebar{padding:12px}.rag-sidebar-copy{margin-top:16px;padding:8px}.rag-sidebar-copy p{display:none}.rag-sidebar-footer{padding-inline:4px}
.rag-binder{margin-top:18px;border-top:1px solid var(--room-rule);border-bottom:1px solid var(--room-rule)}.rag-binder>summary,.rag-scope>summary{list-style:none;cursor:pointer;color:var(--room-ink);font:600 12px/1.2 var(--font-body)}.rag-binder>summary::-webkit-details-marker,.rag-scope>summary::-webkit-details-marker{display:none}.rag-binder>summary{padding:13px 4px}.rag-binder>summary:after,.rag-scope>summary:after{content:"+";float:right;color:var(--room-ink-soft)}.rag-binder[open]>summary:after,.rag-scope[open]>summary:after{content:"−"}.rag-binder .rag-matter-tools{margin:0;padding:0 4px 14px;border:0}
.rag-chat-topbar{min-height:64px;height:auto;overflow:visible}.rag-scope{position:relative}.rag-scope>summary{min-width:138px;padding:10px 12px;border:1px solid var(--room-rule);background:var(--room-page-raised)}.rag-scope-panel{position:absolute;z-index:20;top:calc(100% + 8px);right:0;width:min(620px,72vw);padding:16px;background:var(--room-page);border:1px solid var(--room-rule-strong)}.rag-scope-panel>label{display:grid;gap:6px;color:var(--room-ink-soft);font-size:11px}.rag-scope-panel>label select{width:100%}.rag-scope-panel .rag-jurisdiction-controls{display:grid;gap:12px;margin-top:12px;padding:0;border:0;grid-template-columns:72px 1fr 1fr}.rag-scope-panel .rag-jurisdiction-controls>label{display:grid;gap:6px;min-width:0;color:var(--room-ink-soft);font-size:11px}.rag-scope-panel .rag-jurisdiction-controls>label .field{width:100%;min-width:0}.rag-scope-panel .rag-coverage{padding:10px 0 0}.rag-chat-messages{gap:20px;padding-top:30px}.rag-message.assistant .rag-message-body>strong{font-size:16px}.rag-message.assistant .rag-message-body>p{max-width:760px}.rag-prompt-suggestions{display:none}
@media(max-width:760px){.calendar-chip{display:block}.calendar-chip-time{display:block;margin-bottom:2px}.rag-scope-panel{position:fixed;left:12px;right:12px;top:112px;width:auto;max-height:calc(100vh - 136px);overflow:auto}.rag-scope-panel .rag-jurisdiction-controls{grid-template-columns:1fr}.rag-binder{margin-top:10px}}
/* Counsel Workbench 10 — content-shaped legal operations, not a generic dashboard. */
body{font-family:var(--font-body);letter-spacing:0}.side{background:var(--case-wood);box-shadow:inset -1px 0 var(--shelf-underside)}.side>.brand{height:68px;background:var(--case-crown);border-bottom:1px solid var(--shelf-plank)}.wordmark-nomos{font-family:var(--font-brand);font-size:22px;letter-spacing:-.025em}
.nav{padding:14px 8px 18px}.nav-group{margin:0 0 16px}.nav-group:last-child{margin-bottom:0}.nav-group:not(:has(button:not([hidden]))){display:none}.nav-group-label{padding:0 10px 7px;color:var(--room-ink-soft);font:500 10px/1 var(--font-mono-technical);letter-spacing:.09em;text-transform:uppercase}.nav button{min-height:36px;color:var(--book-letter);font-weight:500}.nav button:hover{border-color:var(--shelf-lip);color:#fff}.nav button.active{border-color:var(--bind-gilt);color:#fff;font-weight:500}.nav button.active:before{background:var(--bind-gilt);width:2px}.legal{color:var(--page-edge);border-color:var(--shelf-plank)}
.top{position:relative;padding-left:0;border-color:var(--room-rule)}.top h1,.billing-heading h2,.invoice-heading h2,.acct-settings-head h2{font-family:var(--font-display);font-weight:600;letter-spacing:-.035em}.top h1{font-size:30px}.sub{max-width:72ch;color:var(--room-ink-soft)}.label,.workbench-kicker{font-family:var(--font-mono-technical);font-size:11px;font-weight:500;letter-spacing:.075em;text-transform:uppercase}.workbench-kicker{display:block;color:var(--room-gilt);margin-bottom:8px}
button,.field,input,select,textarea{border-radius:2px}.primary,.primary.mini,.rag-send{background:var(--room-accent);border-color:var(--room-accent);color:var(--room-accent-ink);font-weight:600}.primary:hover,.primary.mini:hover,.rag-send:hover{box-shadow:inset 0 0 0 999px rgba(255,255,255,.12)}.ghost:hover{border-color:var(--room-rule-strong);background:var(--room-lift)}.citation,.public-link{color:var(--room-gilt)}.card,.column,.builder-panel,.lead{border-color:var(--room-rule);border-radius:2px}.card{background:var(--room-page)}
/* Intake control is a docket: summary, stage record, then inquiry work. */
.pipeline-workbench{max-width:1180px}.pipeline-workbench-head{display:grid;grid-template-columns:minmax(0,1fr) minmax(240px,360px);gap:32px;align-items:end;padding:3px 0 24px;border-bottom:1px solid var(--room-rule)}.pipeline-workbench-head h2{margin:0 0 7px;font-size:24px;line-height:1.15;letter-spacing:-.025em}.pipeline-workbench-head p{margin:0;color:var(--room-ink-soft);max-width:66ch}.pipeline-assurance{padding-left:20px;border-left:1px solid var(--room-rule-strong);font-size:12px;line-height:1.55}.docket-summary{display:flex;margin:0;border:0;border-bottom:1px solid var(--room-rule);background:transparent}.docket-summary .metric{display:grid;grid-template-columns:1fr auto;align-items:center;gap:16px;min-height:66px;padding:0 18px;background:transparent;border:0;border-left:1px solid var(--room-rule)}.docket-summary .metric:first-child{border-left:0;padding-left:0}.docket-summary .label{color:var(--room-ink-soft)}.docket-summary strong{font-family:var(--font-mono-technical);font-size:24px;font-weight:500;line-height:1;color:var(--room-ink);font-variant-numeric:tabular-nums}
.docket-ledger{display:block;margin-top:0;border-top:0}.docket-ledger .column{display:grid;grid-template-columns:150px repeat(auto-fit,minmax(240px,1fr));gap:0;min-height:92px;padding:0;background:transparent;border:0;border-bottom:1px solid var(--room-rule)}.docket-ledger .column>h3{margin:0;padding:20px 18px 18px 0;border-right:1px solid var(--room-rule);font-family:var(--font-display);font-size:14px;font-weight:600;letter-spacing:0}.docket-ledger .column>h3 span{display:block;margin-top:7px;color:var(--room-ink-soft);font:500 12px/1 var(--font-mono-technical)}.docket-ledger .column>.empty{margin:0;padding:21px 20px;border:0;background:transparent;text-align:left;color:var(--room-ink-soft)}.docket-ledger .lead{margin:0;padding:17px 20px;background:transparent;border:0;border-right:1px solid var(--room-rule);box-shadow:none}.docket-ledger .lead:hover{background:var(--room-lift)}.pipeline-empty-state{display:grid;grid-template-columns:170px minmax(180px,260px) minmax(280px,1fr);align-items:start;gap:28px;padding:34px 0;border-bottom:1px solid var(--room-rule)}.pipeline-empty-state .workbench-kicker{margin:4px 0 0}.pipeline-empty-state strong{font-size:18px;font-weight:600}.pipeline-empty-state p{margin:0;max-width:58ch;color:var(--room-ink-soft);line-height:1.55}
/* Legal is a source-bound workbench with a stable authority margin. */
.rag-chat-workspace{height:calc(100vh - 126px);min-height:420px}[data-layout="counsel-workbench"]{display:grid;grid-template-columns:260px minmax(0,1fr);height:100%;min-height:0;border:1px solid var(--room-rule);border-radius:0;background:var(--room-floor);overflow:hidden}[data-role="authority-margin"]{position:relative;display:flex;flex-direction:column;min-height:0;padding:16px 14px 14px;background:var(--room-page);border-right:1px solid var(--room-rule)}[data-role="authority-margin"]:before{content:"AUTHORITY";position:absolute;left:15px;top:92px;color:var(--room-ink-soft);font:500 9px/1 var(--font-mono-technical);letter-spacing:.12em;writing-mode:vertical-rl}.rag-new-chat{min-height:38px;text-align:left}.rag-sidebar-copy{margin:26px 0 15px;padding:0 8px 18px 28px;border-bottom:1px solid var(--room-rule)}.rag-sidebar-copy strong{display:block;margin-bottom:8px}.rag-sidebar-copy p{margin:0;color:var(--room-ink-soft);font-size:12px;line-height:1.55}.rag-binder{margin-left:28px}.rag-sidebar-footer{margin: auto 8px 0 28px;padding-top:16px;border-top:1px solid var(--room-rule)}.rag-sidebar-footer strong{color:var(--room-gilt)}
[data-layout="work-product"]{display:grid;grid-template-rows:auto minmax(0,1fr) auto;min-width:0;min-height:0;overflow:hidden;background:var(--room-floor)}.rag-chat-topbar{display:flex;align-items:center;justify-content:space-between;min-height:74px;padding:13px 20px;background:var(--room-page-raised);border-bottom:1px solid var(--room-rule);box-shadow:none}.rag-chat-topbar>div{display:grid;gap:3px}.rag-chat-topbar .workbench-kicker{margin:0 0 2px}.rag-chat-topbar strong{font-size:16px}.rag-chat-topbar span:not(.workbench-kicker){color:var(--room-ink-soft);font:400 11px/1.4 var(--font-mono-technical)}.rag-chat-messages{padding:26px 34px}.rag-message{max-width:820px}.rag-message.assistant{display:grid;grid-template-columns:34px 1fr;gap:14px}.rag-message-body{max-width:72ch}.rag-message-body .workbench-kicker{margin-bottom:6px}.rag-message-body strong{font-size:18px}.rag-message-body p{font-size:15px;line-height:1.58}.rag-avatar{display:grid;place-items:center;width:32px;height:32px;border:1px solid var(--room-rule-strong);border-radius:50%;background:var(--bind-blue);color:var(--book-letter)}.rag-scope>summary,.rag-binder>summary{color:var(--room-ink)}.rag-scope-panel{background:var(--room-page);border-color:var(--room-rule-strong)}.rag-composer-wrap{padding:0 24px 17px}.rag-composer{min-height:62px;background:var(--room-well);border:1px solid var(--room-rule-strong);border-radius:2px;transition:border-color 120ms ease,box-shadow 120ms ease}.rag-composer:focus-within{border-color:var(--room-gilt);box-shadow:inset 0 0 0 1px var(--room-gilt)}.rag-composer textarea{font-size:14px}.rag-composer #legalChatDeep{min-width:112px}.rag-send{width:auto;min-width:42px;border-radius:2px}.rag-composer-meta{font-family:var(--font-mono-technical);font-size:10px}.rag-status-dot{display:none}
/* Remaining operational surfaces inherit one quiet system. */
.metrics{background:var(--room-rule)}.metric{background:var(--room-page-raised)}.metric strong{font-family:var(--font-mono-technical);font-variant-numeric:tabular-nums}.grid{gap:12px}.results>*,.invoice-row,.matter-row{border-color:var(--room-rule)}.calendar-day{background:var(--room-page)}.calendar-day:hover{background:var(--room-lift)}.calendar-weekdays{background:var(--room-page-raised)}.calendar-day.selected{box-shadow:inset 0 0 0 2px var(--room-gilt)}.calendar-chip{background:var(--room-page-raised);border-color:var(--room-gilt)}.calendar-chip-time{color:var(--room-gilt);font-variant-numeric:tabular-nums}.acct-settings-shell{background:transparent}.acct-settings-tabs{border-bottom:1px solid var(--room-rule)}.acct-settings-tabs button.active{background:var(--room-page);color:var(--room-ink);box-shadow:inset 0 -2px var(--room-gilt)}.acct-settings-panel{max-width:1000px}.acct-settings-section{border-color:var(--room-rule);border-radius:2px;background:var(--room-page)}
@media(max-width:900px){.pipeline-workbench-head{grid-template-columns:1fr}.pipeline-assurance{padding:0;border:0}.pipeline-empty-state{grid-template-columns:1fr;gap:10px}.docket-ledger .column{grid-template-columns:120px minmax(240px,1fr)}[data-layout="counsel-workbench"]{grid-template-columns:220px minmax(0,1fr)}.rag-chat-messages{padding:22px}}
@media(max-width:760px){.nav-group{display:contents}.nav-group-label{display:none}.top h1{font-size:28px}.docket-summary{overflow-x:auto}.docket-summary .metric{min-width:130px}.docket-ledger .column{display:block}.docket-ledger .column>h3{padding:14px 0;border-right:0}.docket-ledger .lead{border-right:0;border-top:1px solid var(--room-rule)}.rag-chat-workspace{height:auto;min-height:0}[data-layout="counsel-workbench"]{display:block;overflow:visible}[data-role="authority-margin"]{border-right:0;border-bottom:1px solid var(--room-rule)}[data-role="authority-margin"]:before{display:none}.rag-sidebar-copy{margin-top:14px;padding-left:0}.rag-binder,.rag-sidebar-footer{margin-left:0}[data-layout="work-product"]{min-height:620px}.rag-chat-topbar{align-items:flex-start;gap:12px}.rag-chat-messages{padding:20px 14px}.rag-composer-wrap{padding:0 12px 14px}.rag-composer #legalChatDeep{min-width:86px}}

/* ---------------------------------------------------------------------------
   Birch (light) corrections.
   The layers above write dark literals at rule level with no [data-theme]
   guard.  Correct them here, scoped to light, using tokens rather than new
   literals so the palette stays in one place.
   --------------------------------------------------------------------------- */
:root[data-theme="light"]{
  --nomos-brass:#8a6728;--nomos-botanical:#3f6b53;--nomos-walnut:#efe9e1;
  /* Paper for the answer surfaces.  Cool rather than parchment on purpose:
     these cards are the machine's work product sitting on the room's page,
     and the tint ties them to --bind-blue, the Authority binding the "N"
     avatar already wears. */
  --rag-card:#e8edf6;--rag-card-rule:#ccd6e6;
  /* Walnut tints the noted surfaces as well as railing them, so state is
     carried on two channels.  A single light paper would have collapsed that
     to the 3px rail alone - and "withheld" is not decoration, it is the notice
     that authority exists and is not being shown.  Keep both channels. */
  --rag-card-withheld:#f7e9e5;--rag-card-nomatch:#e4edfa;--rag-card-gaps:#f7efdd;
}
:root[data-theme="light"] .side>.brand{background:var(--case-crown);border-bottom:1px solid var(--shelf-plank)}
:root[data-theme="light"] .main{background:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="34" height="34"><circle cx="5" cy="9" r="1.0" fill="%238a6728" opacity="0.10"/><circle cx="19" cy="4" r="0.8" fill="%238a6728" opacity="0.075"/><circle cx="28" cy="15" r="1.1" fill="%23a9906c" opacity="0.14"/><circle cx="11" cy="22" r="0.9" fill="%238a6728" opacity="0.085"/><circle cx="24" cy="29" r="1.0" fill="%23a9906c" opacity="0.12"/><circle cx="3" cy="31" r="0.8" fill="%238a6728" opacity="0.065"/></svg>') repeat,var(--room-floor)}
:root[data-theme="light"] .metric,
:root[data-theme="light"] .card,
:root[data-theme="light"] .column,
:root[data-theme="light"] .builder-panel,
:root[data-theme="light"] .lead{background:var(--room-page);border-color:var(--room-rule)}
:root[data-theme="light"] input,
:root[data-theme="light"] select,
:root[data-theme="light"] textarea,
:root[data-theme="light"] .auth input,
:root[data-theme="light"] .field{background:var(--room-well);border-color:var(--room-rule);color:var(--room-ink)}
:root[data-theme="light"] .label,
:root[data-theme="light"] .form-group label{color:var(--room-ink-soft)}
:root[data-theme="light"] .nav button{color:var(--book-letter)}
:root[data-theme="light"] .nav button:hover{color:var(--book-letter)}
:root[data-theme="light"] .nav button.active{color:var(--book-letter)}
:root[data-theme="light"] .nav-group-label{color:var(--room-ink-soft)}
:root[data-theme="light"] .citation,
:root[data-theme="light"] .public-link{color:var(--room-gilt)}
:root[data-theme="light"] .rag-chat-shell,
:root[data-theme="light"] .rag-chat-main{background:var(--room-floor)}
:root[data-theme="light"] .rag-chat-sidebar,
:root[data-theme="light"] .rag-composer,
:root[data-theme="light"] .rag-chat-topbar{background:var(--room-page);border-color:var(--room-rule)}
:root[data-theme="light"] #legal-rag.rag-chat-workspace{--rag-line:var(--room-rule);--rag-muted:var(--room-ink-soft)}
:root[data-theme="light"] .rag-message,
:root[data-theme="light"] .rag-message p,
:root[data-theme="light"] .rag-retrieval-note p,
:root[data-theme="light"] .rag-gap p,
:root[data-theme="light"] .rag-limitations,
:root[data-theme="light"] .rag-plan-lanes,
:root[data-theme="light"] .rag-facts-needed,
:root[data-theme="light"] .rag-source-quote,
:root[data-theme="light"] .rag-disclosure>summary,
:root[data-theme="light"] .rag-disclosure>p,
:root[data-theme="light"] .rag-retrieval-label,
:root[data-theme="light"] .rag-gap-status{color:var(--room-ink)}
:root[data-theme="light"] .rag-sidebar-copy,
:root[data-theme="light"] .rag-sidebar-footer,
:root[data-theme="light"] .rag-chat-topbar span,
:root[data-theme="light"] .rag-composer-meta,
:root[data-theme="light"] .rag-gap-scope,
:root[data-theme="light"] .rag-matter-tools label{color:var(--room-ink-soft)}
/* The answer surfaces.  The corrections above fixed the INK on these cards and
   never the PAPER: the shell's inline <style> writes .rag-claim, .rag-gap,
   .rag-retrieval-note and .rag-disclosure as near-black literals at rule level
   with no [data-theme] guard, so Birch shipped dark ink on a black card and the
   text of every sourced fact was invisible.  Same defect as the re-skin layers,
   one layer further in.  Correct the paper; leave every border-left alone on the
   noted surfaces, because the rail is what carries withheld / no-match /
   coverage-gap and a border-color here would outrank and erase it. */
:root[data-theme="light"] .rag-claim,
:root[data-theme="light"] .rag-retrieval-note,
:root[data-theme="light"] .rag-gap,
:root[data-theme="light"] .rag-disclosure{background:var(--rag-card);color:var(--room-ink)}
:root[data-theme="light"] .rag-claim,
:root[data-theme="light"] .rag-disclosure{border-color:var(--rag-card-rule)}
:root[data-theme="light"] .rag-retrieval-note[data-retrieval="withheld"]{background:var(--rag-card-withheld)}
:root[data-theme="light"] .rag-retrieval-note[data-retrieval="searched-no-match"]{background:var(--rag-card-nomatch)}
:root[data-theme="light"] .rag-retrieval-note[data-retrieval="coverage-gaps"]{background:var(--rag-card-gaps)}
:root[data-theme="light"] .rag-claim{border-left-color:var(--bind-blue)}
/* The loading chip is a rule-level charcoal at (0,3,0), so it outranks the
   tokenised .rag-avatar and stayed dark-grey on cream.  Legible, but it reads
   as a rendering fault while the answer streams in. */
:root[data-theme="light"] .rag-message.loading .rag-avatar{background:var(--room-lift);color:var(--room-ink)}
/* The rail carries the binding at full strength; the label is 10px bold, which
   is NOT large text, so it needs the darker mix.  Willow's binding is a mid
   olive and lands at 4.33:1 undarkened - under the 4.5:1 floor.  Birch reads
   10.92:1 here and Willow 5.84:1. */
:root[data-theme="light"] .rag-claim-label{color:color-mix(in srgb,var(--bind-blue) 82%,#000)}
/* The composer sat under a fade to #0c0d10 - a dark smear across the foot of a
   cream page.  The message area is --room-floor, so match it and the fade is
   simply absent instead of inverted.  Flat tone, no gradient: the visual-system
   contract forbids one here. */
:root[data-theme="light"] .rag-composer-wrap{background:var(--room-floor)}
:root[data-theme="light"] .calendar-day{background:var(--room-page)}
:root[data-theme="light"] .calendar-weekdays{background:var(--room-page-raised)}
:root[data-theme="light"] .calendar-chip{background:var(--room-page-raised);color:var(--room-ink)}
:root[data-theme="light"] .acct-settings-tabs{background:var(--room-page-raised)}
:root[data-theme="light"] .acct-settings-tabs .active,
:root[data-theme="light"] .acct-settings-tabs button.active{background:var(--room-page);color:var(--room-ink)}
:root[data-theme="light"] .acct-theme-options button{background:var(--room-page);color:var(--room-ink)}
:root[data-theme="light"] [data-layout="counsel-workbench"],
:root[data-theme="light"] [data-layout="work-product"]{background:var(--room-floor);border-color:var(--room-rule)}
:root[data-theme="light"] [data-role="authority-margin"]{background:var(--room-page)}

/* ---------------------------------------------------------------------------
   Bookshelf navigation.
   Each nav-group is a shelf: side uprights, a plank with a lit lip and a dark
   underside, and shade falling from the shelf above.  Each button is a volume
   turned counter-clockwise so the whole item is the spine seen face-on - the
   binding colour fills it, raised hubs band across it, and the label is
   stamped in gilt on the leather.
   No gradients anywhere - test_crm_visual_system forbids them - so the hubs are
   one band repeated by box-shadow and every lift is a flat inset wash.
   --------------------------------------------------------------------------- */
:root{
  --shelf-back:#15110d;--shelf-upright:#3a2b1e;
  --shelf-plank:#4a3524;--shelf-lip:#6b5137;--shelf-underside:#1a130d;
  --bind-oxblood:#5a1d28;--bind-leather:#5f3f24;--bind-blue:#1f2f52;--bind-forest:#243a2b;
  --bind-gilt:#c8a35a;--book-letter:#ead9b8;--page-edge:#c9bda4;--spine-hub:rgba(0,0,0,.42);
  --case-wood:#3b2b1d;--case-crown:#553d28;--case-plinth:#2e2116;
}
:root[data-theme="light"]{
  --shelf-back:#e9dfcd;--shelf-upright:#b99a72;
  --shelf-plank:#c9a97f;--shelf-lip:#e5cfae;--shelf-underside:#8a6b47;
  --bind-oxblood:#732531;--bind-leather:#70481f;--bind-blue:#263c69;--bind-forest:#2a4534;
  --bind-gilt:#f0d9a0;--book-letter:#f6ecd6;--page-edge:#efe7d6;--spine-hub:rgba(0,0,0,.34);
  --case-wood:#c3a37a;--case-crown:#d8bc95;--case-plinth:#b08e63;
}
.nav-group{position:relative;padding:7px 8px 17px;margin:0 0 14px;
  background:transparent;
  box-shadow:inset 0 7px 9px -7px rgba(0,0,0,.7)}
.nav-group:last-child{margin-bottom:8px}
.nav-group-label{position:relative;z-index:1}
.nav-group:after{content:"";position:absolute;left:-3px;right:-3px;bottom:0;height:11px;
  background:var(--shelf-plank);
  border-top:2px solid var(--shelf-lip);border-bottom:3px solid var(--shelf-underside);
  box-shadow:0 4px 6px rgba(0,0,0,.5)}
/* the whole volume is the binding */
/* speckled grain over the binding: a tiled data-URI SVG, because a
   repeating gradient is the obvious tool and is forbidden here */
.nav button{background:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="26" height="26"><circle cx="3" cy="6" r="1.1" fill="%233f6b4a" opacity="0.30"/><circle cx="14" cy="3" r="0.9" fill="%233f6b4a" opacity="0.22"/><circle cx="21" cy="11" r="1.2" fill="%233f6b4a" opacity="0.26"/><circle cx="8" cy="16" r="0.8" fill="%233f6b4a" opacity="0.20"/><circle cx="18" cy="21" r="1.0" fill="%233f6b4a" opacity="0.28"/><circle cx="2" cy="23" r="0.9" fill="%23000000" opacity="0.22"/></svg>') repeat,var(--book-spine,var(--bind-leather));
  color:var(--book-letter);
  border:1px solid rgba(0,0,0,.55);
  border-right:3px solid var(--page-edge);
  margin:4px 0;padding-left:26px;min-height:37px;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.14),inset 0 -2px 3px rgba(0,0,0,.34)}
/* volumes differ in thickness, the way a real shelf does */
.nav button:nth-child(3n){min-height:32px}
.nav button:nth-child(4n){min-height:43px}
/* raised hubs banding across the spine */
.nav button:after{content:"";position:absolute;left:8px;top:4px;bottom:4px;width:2px;
  background:var(--spine-hub);box-shadow:7px 0 0 var(--spine-hub)}
.nav button:hover{color:#fff;box-shadow:inset 0 0 0 999px rgba(255,255,255,.07),
  inset 0 1px 0 rgba(255,255,255,.14)}
.nav button.active{color:#fff;border-color:var(--bind-gilt);transform:translateX(4px);
  box-shadow:inset 0 0 0 999px rgba(255,255,255,.10),0 2px 5px rgba(0,0,0,.55)}
.nav button.active:before{background:var(--bind-gilt);width:3px}
.nav button.active:after{background:var(--bind-gilt);box-shadow:7px 0 0 var(--bind-gilt)}
.nav-group[aria-label="Firm"] button{--book-spine:var(--bind-leather)}
.nav-group[aria-label="Casework"] button{--book-spine:var(--bind-oxblood)}
.nav-group[aria-label="Operations"] button{--book-spine:var(--bind-blue)}
.nav-group[aria-label="Authority"] button{--book-spine:var(--bind-forest)}
/* light mode: restated after the Birch layer, which targets .nav button at
   higher specificity and would otherwise repaint the bindings as pale cloth. */
:root[data-theme="light"] .nav button{background:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="26" height="26"><circle cx="3" cy="6" r="1.1" fill="%233f6b4a" opacity="0.30"/><circle cx="14" cy="3" r="0.9" fill="%233f6b4a" opacity="0.22"/><circle cx="21" cy="11" r="1.2" fill="%233f6b4a" opacity="0.26"/><circle cx="8" cy="16" r="0.8" fill="%233f6b4a" opacity="0.20"/><circle cx="18" cy="21" r="1.0" fill="%233f6b4a" opacity="0.28"/><circle cx="2" cy="23" r="0.9" fill="%23000000" opacity="0.22"/></svg>') repeat,var(--book-spine,var(--bind-leather));
  color:var(--book-letter)}
:root[data-theme="light"] .nav button:hover,
:root[data-theme="light"] .nav button.active{color:#fff}
:root[data-theme="light"] .nav button:after{background:var(--spine-hub);
  box-shadow:7px 0 0 var(--spine-hub)}

/* ---------------------------------------------------------------------------
   The case the shelves sit in.
   Uprights run the full height of the nav rather than bracketing each group,
   the brand bar is the crown board on its cornice, and the disclaimer is the
   plinth the whole thing stands on.
   --------------------------------------------------------------------------- */
.side{background:var(--case-wood);border-right:3px solid var(--shelf-underside)}
.side>.brand{background:var(--case-crown);
  border-bottom:5px solid var(--shelf-plank);
  box-shadow:inset 0 -7px 0 -4px var(--shelf-lip),inset 0 2px 0 rgba(255,255,255,.10)}
.nav{background:var(--shelf-back);
  border-left:6px solid var(--shelf-upright);border-right:6px solid var(--shelf-upright);
  box-shadow:inset 0 9px 11px -9px rgba(0,0,0,.85)}
.legal{margin:0;padding:12px 16px 14px;background:var(--case-plinth);
  border-top:4px solid var(--shelf-plank);color:var(--page-edge)}
:root[data-theme="light"] .legal{color:var(--room-ink)}

/* ---------------------------------------------------------------------------
   Pick your wood.

   PLATFORM_ARCHITECTURE.md 10.2 is explicit: one component system, design
   tokens only, no separate interface per wood.  So a wood is TWO attributes,
   never one:

     data-theme  keeps holding ONLY "light" or "dark".  Every correction above
                 is keyed on the literal selector :root[data-theme="light"];
                 a wood name in this attribute would un-match all of them and
                 silently break light mode again.
     data-wood   holds the chosen binding and supplies that wood's accent and
                 timber tokens on top of whichever base the wood declares.

   Each palette is declared once and applied twice: to the document root when
   the wood is chosen, and to that wood's own button in the Appearance picker,
   so the picker previews the wood rather than the word for it.  The "Match my
   system" button deliberately carries no palette of its own - it inherits the
   root's, and so previews whatever the operating system resolves to right now.

   Walnut and Birch are the migration targets for the old "dark" and "light"
   preferences and restate today's values exactly, so nothing moves for an
   existing user, apart from the two contrast corrections at the end.

   Everything here is a token.  No rule above is restructured, so this block
   merges cleanly against a concurrent repaint of the palette.
   --------------------------------------------------------------------------- */

/* Walnut - dark base.  The house binding; the founding dark palette verbatim. */
:root[data-wood="walnut"],
.acct-theme-options button[data-acct-theme="walnut"]{--wood-base:dark;
  --wood-sidebar:#12100e;--wood-case:#3b2b1d;--wood-crown:#553d28;--wood-plinth:#2e2116;
  --wood-back:#15110d;--wood-upright:#3a2b1e;--wood-plank:#4a3524;--wood-lip:#6b5137;
  --wood-bind-1:#5f3f24;--wood-bind-2:#5a1d28;--wood-bind-3:#1f2f52;--wood-bind-4:#243a2b;
  --wood-gilt:#c8a35a;--wood-letter:#ead9b8;--wood-hub:rgba(0,0,0,.42);
  --wood-accent:#6ea8e6;--wood-link:#8fc5ff;--wood-action:#338bd5;--wood-focus:#9ac7ef;
  --wood-brass:#b4945a;--wood-brass-bright:#d2b06b;--wood-botanical:#789276}

/* Mahogany - dark base.  Red-brown boards, copper signal, brass gilt. */
:root[data-wood="mahogany"],
.acct-theme-options button[data-acct-theme="mahogany"]{--wood-base:dark;
  --wood-sidebar:#1a100e;--wood-case:#4a2620;--wood-crown:#64332a;--wood-plinth:#351a16;
  --wood-back:#1d100d;--wood-upright:#4c2a22;--wood-plank:#5d3227;--wood-lip:#7f4a37;
  --wood-bind-1:#6b3128;--wood-bind-2:#8a3b2c;--wood-bind-3:#4e211b;--wood-bind-4:#7d5638;
  --wood-gilt:#d2a463;--wood-letter:#f3e0d2;--wood-hub:rgba(0,0,0,.45);
  --wood-accent:#d98f5e;--wood-link:#f0a878;--wood-action:#a3461f;--wood-focus:#f2b48c;
  --wood-brass:#c1874f;--wood-brass-bright:#dda76a;--wood-botanical:#9a8a62}

/* Spruce - dark base.  Green-black boards, mint signal. */
:root[data-wood="spruce"],
.acct-theme-options button[data-acct-theme="spruce"]{--wood-base:dark;
  --wood-sidebar:#0f1512;--wood-case:#24312a;--wood-crown:#33443a;--wood-plinth:#18211c;
  --wood-back:#101613;--wood-upright:#2b3a31;--wood-plank:#35473b;--wood-lip:#4f6754;
  --wood-bind-1:#2f4a38;--wood-bind-2:#3d5540;--wood-bind-3:#234034;--wood-bind-4:#4a5c3a;
  --wood-gilt:#c2b06a;--wood-letter:#e8efdf;--wood-hub:rgba(0,0,0,.45);
  --wood-accent:#79c39a;--wood-link:#a3e2c0;--wood-action:#1f6b45;--wood-focus:#a7dcc0;
  --wood-brass:#a89b5c;--wood-brass-bright:#c7b972;--wood-botanical:#8fb08c}

/* Birch - light base.  Today's Birch verbatim; the migration target for "light". */
:root[data-wood="birch"],
.acct-theme-options button[data-acct-theme="birch"]{--wood-base:light;
  --wood-sidebar:#e8edf2;--wood-case:#c3a37a;--wood-crown:#d8bc95;--wood-plinth:#b08e63;
  --wood-back:#e9dfcd;--wood-upright:#b99a72;--wood-plank:#c9a97f;--wood-lip:#e5cfae;
  --wood-bind-1:#70481f;--wood-bind-2:#732531;--wood-bind-3:#263c69;--wood-bind-4:#2a4534;
  --wood-gilt:#f0d9a0;--wood-letter:#f6ecd6;--wood-plinth-ink:#33220f;--wood-hub:rgba(0,0,0,.34);
  --wood-accent:#1769aa;--wood-link:#075985;--wood-action:#1769aa;--wood-focus:#075985;
  --wood-brass:#8a6728;--wood-brass-bright:#8a6728;--wood-botanical:#3f6b53}

/* Willow - light base.  Sun-bleached pale green, olive signal. */
:root[data-wood="willow"],
.acct-theme-options button[data-acct-theme="willow"]{--wood-base:light;
  --wood-sidebar:#eaeee0;--wood-case:#cbd2b4;--wood-crown:#dde2c8;--wood-plinth:#b6bd9c;
  --wood-back:#eef0e2;--wood-upright:#c3c9a9;--wood-plank:#d5dab9;--wood-lip:#ecefdc;
  --wood-bind-1:#5f6e46;--wood-bind-2:#55643c;--wood-bind-3:#66734f;--wood-bind-4:#454f33;
  --wood-gilt:#efeac2;--wood-letter:#f8f8ea;--wood-plinth-ink:#2b3320;--wood-hub:rgba(0,0,0,.34);
  --wood-accent:#3f6b45;--wood-link:#2f5a38;--wood-action:#2f6b43;--wood-focus:#2f5a38;
  --wood-brass:#6f6a2a;--wood-brass-bright:#6f6a2a;--wood-botanical:#3f6b53}

/* The single wiring point: the chosen wood's tokens become the app's tokens.
   Same specificity as :root[data-theme="light"] and later in the file, so a
   wood wins over its base without either one being restructured. */
:root[data-wood]{
  --nomos-sidebar:var(--wood-sidebar);
  --nomos-moss:var(--wood-accent);--nomos-signal:var(--wood-accent);--nomos-judicial:var(--wood-accent);
  --nomos-official:var(--wood-link);--nomos-action:var(--wood-action);--nomos-focus:var(--wood-focus);
  --nomos-brass:var(--wood-brass);--nomos-brass-bright:var(--wood-brass-bright);
  --nomos-botanical:var(--wood-botanical);
  --shelf-back:var(--wood-back);--shelf-upright:var(--wood-upright);
  --shelf-plank:var(--wood-plank);--shelf-lip:var(--wood-lip);
  --case-crown:var(--wood-crown);--case-plinth:var(--wood-plinth);
  --bind-leather:var(--wood-bind-1);--bind-oxblood:var(--wood-bind-2);
  --bind-blue:var(--wood-bind-3);--bind-forest:var(--wood-bind-4);
  --bind-gilt:var(--wood-gilt);--book-letter:var(--wood-letter);--spine-hub:var(--wood-hub)
}
/* --case-wood is defined exactly twice on purpose, once per base, and that
   count is a contract in test_brand_and_birch_theme.  So the wood repaints the
   case through the rule rather than by adding a third definition. */
:root[data-wood] .side{background:var(--wood-case)}

/* The picker previews what it offers: each option is the volume the app will
   be bound in - the wood's own tone, raised hubs, a page block on the fore
   edge, gilt when chosen, and the name stamped on the spine.  No second grain
   tile is introduced here; the shelf layer's tile count is a contract too. */
:root[data-wood] .acct-theme-options button[data-acct-theme]{position:relative;
  display:grid;align-content:center;justify-items:start;gap:3px;
  min-height:78px;padding:10px 12px 10px 26px;text-align:left;
  background:var(--wood-bind-1);color:var(--wood-letter);
  border:1px solid rgba(0,0,0,.55);border-right:4px solid var(--wood-lip);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.14),inset 0 -2px 3px rgba(0,0,0,.34)}
:root[data-wood] .acct-theme-options button[data-acct-theme]:after{content:"";
  position:absolute;left:8px;top:7px;bottom:7px;width:2px;
  background:var(--wood-hub);box-shadow:6px 0 0 var(--wood-hub)}
:root[data-wood] .acct-theme-options button[data-acct-theme]:hover{color:#fff;
  box-shadow:inset 0 0 0 999px rgba(255,255,255,.07),inset 0 1px 0 rgba(255,255,255,.14)}
:root[data-wood] .acct-theme-options button[data-acct-theme].active{
  border-color:var(--wood-gilt);
  box-shadow:inset 0 0 0 2px var(--wood-gilt),inset 0 -2px 3px rgba(0,0,0,.34)}
:root[data-wood] .acct-theme-options button[data-acct-theme].active:after{
  background:var(--wood-gilt);box-shadow:6px 0 0 var(--wood-gilt)}
.acct-theme-options .wood-name{display:block;font:600 15px/1.2 var(--font-display)}
.acct-theme-options .wood-note{display:block;font-size:12px;line-height:1.3}

/* A legibility correction the light bases need.  It is pre-existing and
   measured: the plinth text is #4a3524 on #b08e63 (3.8:1).  On a dark base
   it already clears 4.5:1, so the correction is scoped to light.  The other
   correction here stamped the Website Studio step badge, and retired with it. */
:root[data-wood][data-theme="light"] .legal{color:var(--wood-plinth-ink)}


/* Writable calendar events -------------------------------------------------
   The event editor and the per-event agenda controls. Every colour here is
   one of the bookcase custom properties the calendar already draws from, so
   an event reads as part of the same shelf instead of a bolted-on panel, and
   both themes stay correct without a second set of values. */
.cal-event-editor .form-grid{display:grid;gap:10px}
.cal-event-editor textarea{width:100%;resize:vertical;font:inherit}
.cal-event-editor .cal-event-allday label{display:flex;align-items:center;gap:7px;color:var(--room-ink-soft);font-size:12px}
.cal-event-editor small{display:block;margin-top:5px;line-height:1.45}
.cal-event-actions{margin-top:12px}
.cal-event-row-actions{margin-top:8px;gap:6px}
.calendar-chip.event{border-left:2px solid var(--room-gilt)}
.calendar-chip.event .calendar-chip-time{color:var(--room-accent)}
.calendar-source.event{border-color:var(--room-gilt);color:var(--room-gilt)}
.calendar-agenda-item.is-cancelled strong{text-decoration:line-through;color:var(--room-ink-soft)}
/* ---------------------------------------------------------------------------
   Case matters.

   The complaint was that this screen "doesn't feel structured".  Two shapes
   answer it, and both are built from the room's own tokens - no new palette,
   no gradients (the visual-system contract forbids them), 2px radii, and every
   colour flips with the theme because none of it is a literal.

   THE INDEX is a docket, not a wall of tiles: a masthead with the counts that
   decide where the day goes, one row of controls, then cards whose left edge
   is the urgency of the next open deadline - danger when it has passed, warning
   inside a week, the Casework binding otherwise.  Only the three semantic
   tokens (--nomos-danger / --nomos-warning / --nomos-success) are allowed in a
   rule by the reading-room contract, and alarm is exactly what they are for.

   THE WORKSPACE stops being eight equal boxes.  The facts strip is a ledger
   across the top, the primary surface gives documents the wider column beside
   the analysis it feeds, and everything else is one tabbed panel.  The panel
   host keeps the .matter-ws-grid class court_filing.js polls for; the id
   simply outranks the 3-across rule the shell's inline style still writes.
   --------------------------------------------------------------------------- */

/* -- the index masthead ---------------------------------------------------- */
.matters-center{max-width:760px;width:100%;margin:0 auto;padding:4px 0 40px}
.comms-stack{display:grid;gap:16px;max-width:760px;width:100%;margin:0 auto;padding:4px 0 40px}
.matter-index{max-width:none;margin:0}
.matter-index-head{display:grid;grid-template-columns:1fr;gap:6px;align-items:start;padding:0 0 12px;border-bottom:1px solid var(--room-rule)}
.matter-index-head h2{margin:0 0 6px;font-size:22px;line-height:1.15;letter-spacing:-.025em}
.matter-index-head p{margin:0;font-size:12px}
.matter-summary{display:flex;flex-wrap:wrap;gap:4px 14px;max-width:none;margin:2px 0 0;border:0;background:transparent;align-items:baseline}
.matter-summary .metric{display:flex;align-items:baseline;gap:6px;min-height:0;min-width:0;padding:0;background:transparent;border:0;border-radius:0}
.matter-summary .metric:first-child{padding-left:0;border-left:0}
.matter-summary .label{white-space:nowrap;color:var(--room-ink-soft);font:500 11px/1.3 var(--font-mono-technical);letter-spacing:.04em}
.matter-summary strong{font-family:var(--font-mono-technical);font-size:12px;font-weight:500;line-height:1;color:var(--room-ink);font-variant-numeric:tabular-nums}

/* -- the controls ---------------------------------------------------------- */
.matter-toolbar{display:grid;grid-template-columns:minmax(190px,2fr) repeat(3,minmax(135px,1fr)) auto;gap:12px;align-items:end;max-width:none;margin:0;padding:14px 0 16px}
.matter-toolbar .form-group{display:grid;gap:5px;min-width:0;margin:0}
.matter-toolbar input,.matter-toolbar select{width:100%;min-width:0}
.matter-toolbar-toggle label{display:flex;align-items:center;gap:8px;min-height:36px;color:var(--room-ink);font:400 13px/1.3 var(--font-body);letter-spacing:0;text-transform:none;white-space:nowrap}
.matter-toolbar-toggle input{width:16px;height:16px;min-height:0;flex:none}

/* -- the cards ------------------------------------------------------------- */
#matterGrid[data-grouped="true"]{display:block}
.matter-group{margin:0 0 22px}
.matter-group:last-child{margin-bottom:0}
.matter-group-title{display:flex;align-items:baseline;gap:9px;margin:0 0 11px;padding-bottom:7px;border-bottom:1px solid var(--room-rule);color:var(--room-ink-soft);font:500 11px/1.2 var(--font-mono-technical);letter-spacing:.085em;text-transform:uppercase}
.matter-group-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:12px;max-width:none;margin:0}
.matter-card{display:flex;flex-direction:column;gap:9px;padding:15px 16px 14px;border-left:3px solid var(--room-rule-strong)}
.matter-card:hover{border-color:var(--room-rule-strong)}
.matter-card[data-urgency="overdue"]{border-left-color:var(--nomos-danger)}
.matter-card[data-urgency="soon"]{border-left-color:var(--nomos-warning)}
.matter-card[data-urgency="later"]{border-left-color:var(--bind-oxblood)}
.matter-card[data-urgency="none"]{border-left-color:var(--room-rule)}
.matter-card-head{display:flex;align-items:center;justify-content:space-between;gap:10px}
.matter-card-status{padding:2px 9px}
.matter-card-due{color:var(--room-ink-soft);font:600 11px/1.2 var(--font-mono-technical);letter-spacing:.02em;text-align:right;font-variant-numeric:tabular-nums}
.matter-card-due[data-urgency="overdue"]{color:var(--nomos-danger)}
.matter-card-due[data-urgency="soon"]{color:var(--nomos-warning)}
.matter-card-name{margin:0;color:var(--room-ink);font:600 16px/1.3 var(--font-display);letter-spacing:-.02em}
.matter-card-client{margin:0;color:var(--room-ink);font-size:13px}
.matter-card-next{margin:0;font-size:12px;line-height:1.4}
.matter-card-facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 14px;margin:0;padding-top:11px;border-top:1px solid var(--room-rule)}
.matter-card-facts>div,.matter-ws-facts>div{min-width:0}
.matter-card-facts dt{color:var(--room-ink-soft);font:500 9px/1.4 var(--font-mono-technical);letter-spacing:.075em;text-transform:uppercase}
.matter-card-facts dd{overflow:hidden;margin:0;color:var(--room-ink);font-size:12px;line-height:1.35;text-overflow:ellipsis;white-space:nowrap}
.matter-card .actions{margin-top:auto;padding-top:5px}
#matterGrid{display:grid;grid-template-columns:minmax(0,1fr);gap:8px;max-width:none}.matter-card{cursor:pointer}.matter-card.selected{box-shadow:inset 0 0 0 1px var(--room-gilt)}.matter-card:focus-visible{outline:2px solid var(--room-gilt);outline-offset:2px}.matter-maker,.matter-storage,.matter-workspace{max-width:none;margin:22px 0 0}.matter-maker h3,.matter-storage h3{margin:6px 0 8px}.matter-storage-advanced{margin-top:10px}.matter-storage-advanced summary{cursor:pointer;color:var(--room-ink-soft);font:500 12px/1.4 var(--font-body)}

/* -- the workspace ledger -------------------------------------------------- */
.matter-ws-facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(148px,1fr));gap:1px;margin:0 0 14px;padding:0;background:var(--room-rule);border:1px solid var(--room-rule)}
.matter-ws-facts>div{display:grid;gap:3px;padding:9px 12px;background:var(--room-page-raised)}
.matter-ws-facts dt{color:var(--room-ink-soft);font:500 9px/1.4 var(--font-mono-technical);letter-spacing:.075em;text-transform:uppercase}
.matter-ws-facts dd{margin:0;color:var(--room-ink);font-size:12px;line-height:1.4;overflow-wrap:anywhere}
.matter-ws-facts>div[data-urgency="overdue"] dd{color:var(--nomos-danger);font-weight:600}
.matter-ws-facts>div[data-urgency="soon"] dd{color:var(--nomos-warning);font-weight:600}

/* -- primary surface: the work, weighted ----------------------------------- */
.matter-ws-primary{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);gap:14px;align-items:start;margin:0 0 20px}.matter-ws-primary[hidden]{display:none}
.matter-ws-primary>.matter-ws-col{min-width:0;padding:15px 16px 16px;background:var(--room-page-raised);border:1px solid var(--room-rule);border-radius:2px}
.matter-ws-primary h3{margin:0 0 9px;font-size:15px}

/* -- secondary surface: one tab strip over the rest ------------------------ */
.matter-ws-secondary{margin:0}
#matters.matter-focus .matter-index,#matters.matter-focus #matterMaker,#matters.matter-focus .matter-storage{display:none}.matter-team{margin:0 0 18px;padding:14px 16px;border:1px solid var(--room-rule);background:var(--room-page-raised);border-radius:2px}.matter-team h3{margin:0 0 6px;font-size:15px}.matter-team-list{margin:10px 0}.matter-team-add label{display:block;margin:0 0 6px}.matter-team-invite{margin-top:12px}#matters.matter-focus .matters-center{max-width:none;width:100%;margin:0;padding:0}#matters.matter-focus .matter-workspace{margin:0;width:100%;max-width:none;min-height:calc(100vh - 132px);padding:18px 8px 28px}#matters.matter-focus #matterWsPanels>.matter-ws-col{max-width:none}.matter-ws-head{display:grid;gap:14px;margin-bottom:16px}.matter-ws-back{justify-self:start}.matter-ws-head-main{display:flex;justify-content:space-between;align-items:flex-start;gap:20px}.matter-ws-head-main h2{margin:6px 0 4px}.matter-ws-stepbar{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:12px;margin:0 0 18px}.matter-ws-step-btn{flex:none;min-width:88px;min-height:40px;padding:10px 16px;border:1px solid var(--room-rule);background:var(--room-page-raised);color:var(--room-ink);font:500 14px/1.2 var(--font-body);white-space:nowrap;cursor:pointer}.matter-ws-step-btn:disabled{opacity:.4;cursor:not-allowed}.matter-ws-stepbar .matter-ws-tabs{min-width:0;width:100%}#matterWsFilesCol{min-height:0;padding:0;border:0;background:transparent}#matterWsFilesCol h3{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}#matterWsPanels:has(#matterWsFilesCol:not([hidden])){padding:0;border:0;background:transparent}.matter-ws-tabs{display:flex;gap:2px;overflow-x:auto;margin:0;padding:0 0 0 1px;border-bottom:1px solid var(--room-rule)}
.matter-ws-tab{min-height:40px;padding:9px 14px;border:1px solid transparent;border-bottom:0;border-radius:2px 2px 0 0;background:transparent;color:var(--room-ink-soft);font:500 12px/1.3 var(--font-body);white-space:nowrap;cursor:pointer;transition:background-color 110ms ease,color 110ms ease}
.matter-ws-tab:hover{background:var(--room-lift);color:var(--room-ink)}
.matter-ws-tab.active{background:var(--room-page-raised);border-color:var(--room-rule);color:var(--room-ink);box-shadow:inset 0 2px 0 var(--room-gilt)}
#matterWsPanels{display:grid;grid-template-columns:minmax(0,1fr);gap:0;padding:20px;background:var(--room-page-raised);border:1px solid var(--room-rule);border-top:0;border-radius:0 0 2px 2px}
#matterWsPanels>.matter-ws-col{min-width:0;max-width:920px}
#matterWsPanels>.matter-ws-col[hidden]{display:none}
#matterWsPanels h3{margin:0 0 6px;font-size:15px}

@media(max-width:1100px){
  .matters-center{max-width:100%;padding:0 4px 32px}
  .comms-stack{max-width:100%;padding:0 4px 32px}
  .matter-index-head{grid-template-columns:1fr;gap:16px;align-items:start}
  .matter-toolbar{grid-template-columns:repeat(2,minmax(0,1fr))}
  .matter-ws-primary{grid-template-columns:1fr}
}
@media(max-width:760px){
  .matter-toolbar{grid-template-columns:1fr}
  .matter-summary{overflow-x:auto}
  .matter-summary .metric{min-width:112px}
  .matter-card-facts{grid-template-columns:1fr}
  .matter-group-grid{grid-template-columns:1fr}
  #matterWsPanels{padding:14px}
  .matter-ws-facts{grid-template-columns:repeat(auto-fit,minmax(132px,1fr))}
}

/* ---------------------------------------------------------------------------
   The half-window tier.

   Nomos gets docked to half a monitor, and half a monitor is not one width:
   a 1920 panel at 100% scaling gives 960 CSS px, the same panel at 125% gives
   768, a 2560 panel gives 1280. Everything from roughly 700 to 1300 is "half
   screen", and that whole band used to fall between the desktop layout and the
   760px phone tier -- wide enough that nothing collapsed, narrow enough that
   nothing fit.

   Every rule below answers something measured in a real browser against the
   demo firm, at viewports 768/820/900/960/1024/1280, across every nav view:

     * the calendar's matter picker rendered 435px wide inside a ~300px card
       and pushed a horizontal scrollbar onto the whole document -- at EVERY
       width, 1920 included, not only the narrow ones;
     * the persona switcher ran past the right edge of the header at 820 and
       below, because .top only stacks at 760;
     * Grounded Retrieval held its two-column workbench down to 761px, so at
       768 the chat column measured 266px while its own children measured 300,
       and .rag-chat-main clipped them under overflow:hidden with no scrollbar;
     * the composer kept the question box, "Deep research" and send on one row,
       leaving the textarea about 170px at 960 and a few characters at 768 --
       the placeholder wrapped inside a one-row box and read "Descr...".

   tests/test_crm_half_window_layout.py re-measures each of them.
   --------------------------------------------------------------------------- */

/* A <select> is sized by its widest option unless a rule says otherwise.
   `.matter-toolbar` said so locally; nothing else did, so one long matter name
   in the calendar picker was enough to make the entire page scroll sideways.
   Constrain the control and let the grid track shrink around it. */
.form-group{min-width:0}
.form-group>select,
.form-group>textarea,
.form-group>input:not([type=checkbox]):not([type=radio]){width:100%;min-width:0;max-width:100%}
select{max-width:100%}

/* The header is a flex row that never wrapped, so instead of moving down, the
   persona controls moved off the edge. */
.top{flex-wrap:wrap}
.persona-switch{flex-wrap:wrap}

/* The voice button is fixed to the bottom-right of the VIEWPORT, so it lands on
   the composer's disclosure line at every width. Reserve its footprint rather
   than move a control people reach for by muscle memory. */
.rag-composer-meta{padding-right:58px}

@media(max-width:1100px){
  /* The composer stacks: the question takes the full row, the two buttons sit
     beneath it on the right. Sharing one row, the textarea gets whatever is
     left after a 112px button and a send button, which here is nothing. The
     right gutter keeps the send button out from under the fixed voice button,
     and the taller box holds the two lines the placeholder wraps to. */
  .rag-composer{flex-wrap:wrap;align-items:stretch;padding:10px 66px 10px 12px}
  .rag-composer textarea{flex:1 1 100%;min-width:0;min-height:46px;order:1}
  .rag-composer #legalChatDeep{order:2;margin-left:auto;min-width:0}
  .rag-composer .rag-send{order:3;flex:none}
  .rag-composer-meta{flex-wrap:wrap;gap:4px 12px}
}

@media(min-width:761px) and (max-width:1100px){
  /* Give the work back the width the chrome was holding. Bounded below at 761
     so the phone tier, which drops the sidebar entirely, still wins there.
     The 220px rail stays: narrowing it to 188 bought 32px of content and cost
     a two-line wrap on "Record Deposition" and "Grounded Retrieval", which is
     a worse read than the width was worth. */
  .main{padding:20px 18px 34px}
}

@media(min-width:761px) and (max-width:1000px){
  /* .top stacked only at 760. Between 761 and 1000 the title and the persona
     controls fought over one row and the label broke mid-phrase. */
  .top{flex-direction:column;align-items:flex-start}
  .auth{width:100%}
}

@media(min-width:761px) and (max-width:900px){
  /* The counsel workbench kept a 220px authority rail down to 761px, leaving
     the chat column too narrow to hold its own children. Stack it here -- the
     treatment the 760 tier already uses, applied at the width where the
     two-column form actually stops fitting. */
  [data-layout="counsel-workbench"]{display:block;overflow:visible}
  [data-role="authority-margin"]{border-right:0;border-bottom:1px solid var(--room-rule)}
  [data-role="authority-margin"]:before{display:none}
  .rag-chat-workspace{height:auto;min-height:0}
  .rag-chat-shell{display:block}
  .rag-chat-sidebar{border-right:0;border-bottom:1px solid var(--room-rule)}
  .rag-sidebar-copy{margin-top:14px;padding-left:0}
  .rag-binder,.rag-sidebar-footer{margin-left:0}
  [data-layout="work-product"]{min-height:560px}
}

/* UIUX-20260909: author layout rules must not reveal hidden controls or groups. */
[hidden]:not([hidden="until-found"]){display:none!important}
input[aria-invalid="true"]{border-color:var(--nomos-danger);outline:2px solid var(--nomos-danger);outline-offset:2px}
body:has(#login-panel:not([hidden])){overflow:hidden}
#login-panel.is-creating-firm{grid-template-columns:minmax(0,640px);align-content:start}
#login-panel.is-creating-firm .login-hero{display:none}
#login-panel>#acctSignin.is-signup-page{max-height:none;overflow:visible}
.signup-legal-terms{max-height:none;overflow:visible}
.signup-policy-links a{color:var(--room-ink);text-decoration:underline;text-underline-offset:3px}
#login-panel>#acctSignin #acctSignupGoogle{display:inline;width:auto;margin:0;padding:0;color:var(--room-ink);text-decoration:underline}
.acct-settings-tabs [role="tab"]:focus-visible{outline:2px solid var(--room-gilt);outline-offset:-3px}
@media(max-width:900px){
  #login-panel .login-hero{display:none}
  #login-panel{align-items:center;justify-content:flex-start;padding:20px 14px}
  #login-panel>#acctSignin{max-height:none;overflow:visible;width:min(100%,640px)}
}

#login-panel.is-creating-firm{grid-template-rows:max-content}
#login-panel>#acctSignin.is-signup-page{height:auto;min-height:max-content}

@media(max-width:760px){.nav-group::after{display:none}.nav{gap:6px}.nav button{flex-shrink:0;margin:0}}

/* Audit follow-up: one focused authentication surface at every width. */
#login-panel{grid-template-columns:minmax(0,520px);grid-template-rows:max-content;align-content:start;background:var(--room-floor);padding-top:clamp(20px,8vh,80px)}
#login-panel .login-hero{display:none}
#login-panel>#acctSignin{max-height:none;overflow:visible}
#contacts>.card{margin-bottom:16px}
