/* Houtepen hub — design system v2 ("chart room") */
@import url('https://fonts.googleapis.com/css2?family=Public+Sans:wght@400;600;700&display=swap');
:root{
  --ink:#12303F; --slate:#3E5C6B; --mist:#8FA3AE; --line:#D3DCE1; --canvas:#E9EEF0; --paper:#FFFFFF; --paper2:#F5F7F9;
  --brass:#B07D1F; --brass-soft:#F6EBD3; --red:#B8322B; --red-soft:#F8E3E1; --green:#2E7D4F;
  --text:#12303F; --text-2:#3E5C6B; --rail:#12303F; --rail-text:#C9D6DD; --rail-active:#1D4559;
  --btn-bg:#12303F; --btn-fg:#FFFFFF; --btn-quiet-fg:#12303F;
  --radius:6px; --rail-w:220px; --tree-w:290px;
}
:root[data-theme="dark"], :root:not([data-theme="light"]) .never{}
@media (prefers-color-scheme:dark){ :root:not([data-theme="light"]){
  --ink:#E6EEF2; --slate:#A9BCC6; --mist:#6F8591; --line:#27404D; --canvas:#0B1D27; --paper:#12303F; --paper2:#163A4B;
  --brass:#D7A23A; --brass-soft:#3A3014; --red:#E0645C; --red-soft:#3D1F1D; --text:#E6EEF2; --text-2:#A9BCC6; --rail:#081520; --rail-text:#AFC1CB; --rail-active:#163A4B;
  --btn-bg:#D7A23A; --btn-fg:#12202A; --btn-quiet-fg:#E6EEF2; }}
*{box-sizing:border-box}
html{font-size:15px}
body{margin:0;font-family:"Public Sans",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;background:var(--canvas);color:var(--text);line-height:1.5;font-feature-settings:"tnum" 1}
a{color:inherit}
h1,h2,h3{letter-spacing:-.01em;line-height:1.2;margin:0}
h1{font-size:1.45rem;font-weight:700}h2{font-size:1.15rem;font-weight:600}h3{font-size:1rem;font-weight:600}
button,input,select,textarea{font:inherit}
:focus-visible{outline:2px solid var(--brass);outline-offset:2px}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}

/* ---- app shell: left rail + content ---- */
.shell{display:grid;grid-template-columns:var(--rail-w) 1fr;min-height:100vh}
.rail{background:var(--rail);color:var(--rail-text);padding:1.1rem .9rem;display:flex;flex-direction:column;gap:1.2rem;position:sticky;top:0;height:100vh}
.rail .brand{color:#fff;text-decoration:none;display:flex;flex-direction:column;gap:.1rem;padding:.2rem .5rem}
.rail .brand b{font-size:1.05rem;letter-spacing:-.01em}.rail .brand span{font-size:.78rem;color:var(--rail-text)}
.rail nav{display:flex;flex-direction:column;gap:.15rem}
.rail nav a{color:var(--rail-text);text-decoration:none;padding:.5rem .6rem;border-radius:var(--radius);display:flex;gap:.6rem;align-items:center}
.rail nav a svg{width:18px;height:18px;flex:none;opacity:.8}
.rail nav a:hover{background:var(--rail-active);color:#fff}
.rail nav a.active{background:var(--rail-active);color:#fff;box-shadow:inset 3px 0 0 var(--brass)}
.rail .me{margin-top:auto;font-size:.82rem;display:flex;flex-direction:column;gap:.4rem;padding:.6rem;border-top:1px solid rgba(255,255,255,.12)}
.rail .me .who{color:#fff;word-break:break-all}.rail .me .role{color:var(--rail-text)}
.rail .me .row{display:flex;gap:.8rem;align-items:center}.rail .me a{color:var(--rail-text)}.rail .me a.on{color:#fff;font-weight:600}
.rail .me button.link{color:var(--rail-text)}
.content{min-width:0;display:flex;flex-direction:column}
.topbar{display:flex;align-items:center;gap:1rem;padding:.8rem 1.4rem;background:var(--paper);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:5}
.topbar h1{font-size:1.1rem}
.topbar form{margin-left:auto;display:flex;gap:.4rem;max-width:520px;flex:1}
.topbar input[type=search]{flex:1;padding:.5rem .7rem;border:1px solid var(--line);border-radius:var(--radius);background:var(--paper2);color:var(--text)}
.page{padding:1.2rem 1.4rem;flex:1}
.auth{min-height:100vh;display:grid;place-items:center;padding:1rem}
.auth .panel{background:var(--paper);border:1px solid var(--line);border-radius:10px;padding:2rem;max-width:420px;width:100%}
.auth .panel h1{margin-bottom:.3rem}.auth .panel p.lead{color:var(--text-2);margin:0 0 1.2rem}
.auth .lang{display:flex;gap:.6rem;justify-content:flex-end;font-size:.85rem;margin-bottom:.5rem}.auth .lang a{color:var(--text-2);text-decoration:none}.auth .lang a.on{color:var(--text);font-weight:600}

/* ---- primitives ---- */
.btn{display:inline-flex;align-items:center;gap:.4rem;padding:.5rem .9rem;border-radius:var(--radius);border:1px solid var(--btn-bg);background:var(--btn-bg);color:var(--btn-fg);text-decoration:none;cursor:pointer;font-weight:600}
.btn:hover{filter:brightness(1.08)}
.btn.quiet{background:transparent;color:var(--btn-quiet-fg);border-color:var(--line);font-weight:400}
.btn.quiet:hover{background:var(--paper2);filter:none}
button:not(.btn):not(.link){padding:.5rem .9rem;border-radius:var(--radius);border:1px solid var(--btn-bg);background:var(--btn-bg);color:var(--btn-fg);cursor:pointer;font-weight:600}
.btn.small{padding:.3rem .6rem;font-size:.85rem}
button.link{background:none;border:0;padding:0;color:var(--text-2);text-decoration:underline;cursor:pointer}
label{display:block;margin:.7rem 0 .3rem;font-weight:600;font-size:.9rem}
input,select,textarea{width:100%;padding:.5rem .6rem;border:1px solid var(--line);border-radius:var(--radius);background:var(--paper);color:var(--text)}
.field-row{display:flex;gap:.6rem;flex-wrap:wrap}.field-row>*{flex:1 1 160px}
.muted{color:var(--text-2)}.small{font-size:.85rem}.nowrap{white-space:nowrap}
.ok{color:var(--green)}.err{color:var(--red)}
.notice{padding:.7rem .9rem;border-radius:var(--radius);background:var(--paper2);border-left:3px solid var(--brass)}
.notice.err{border-left-color:var(--red);background:var(--red-soft)}
table{width:100%;border-collapse:collapse}th{text-align:left;font-weight:600;color:var(--text-2);font-size:.85rem;padding:.5rem .6rem;border-bottom:1px solid var(--line)}
td{padding:.55rem .6rem;border-bottom:1px solid var(--line);vertical-align:top}tr:hover td{background:var(--paper2)}
.panel{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius)}
.panel .head{padding:.8rem 1rem;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:.8rem}
.panel .body{padding:1rem}
.pill{display:inline-block;padding:0 .5rem;border-radius:999px;border:1px solid var(--line);font-size:.78rem;color:var(--text-2);line-height:1.6}
.pill.financial,.pill.legal,.pill.personal{border-color:var(--red);color:var(--red)}
.code{color:var(--brass);font-weight:600;font-variant-numeric:tabular-nums}

/* ---- home ---- */
.home-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:1rem;margin-top:1rem}
.home-grid a{display:block;background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);padding:1rem 1.1rem;text-decoration:none;color:var(--text)}
.home-grid a:hover{border-color:var(--brass)}
.home-grid h3{margin-bottom:.3rem}.home-grid p{margin:0;color:var(--text-2);font-size:.9rem}
.home-grid .n{font-size:1.6rem;font-weight:700;color:var(--brass);letter-spacing:-.02em}

/* ---- documents browser ---- */
.browser{display:grid;grid-template-columns:var(--tree-w) minmax(0,1fr);gap:1rem;align-items:start}
.browser.with-preview{grid-template-columns:minmax(0,1fr) minmax(0,1.25fr)}.browser.with-preview .tree{display:none}
.browser.with-preview .files td.cls,.browser.with-preview .files td.date{display:none}.browser.with-preview .files .dateinline{display:inline;color:var(--text-2);font-weight:400;margin-right:.5rem}
.files .dateinline{display:none}
@media (max-width:1100px){.browser.with-preview{grid-template-columns:1fr}.preview{position:static;height:70vh}}
@media (max-width:860px){.shell{grid-template-columns:1fr}.rail{position:static;height:auto;flex-direction:row;flex-wrap:wrap;align-items:center}.rail nav{flex-direction:row;flex-wrap:wrap}.rail .me{margin-top:0;border:0;margin-left:auto}.browser,.browser.with-preview{grid-template-columns:1fr}}
.tree{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);padding:.5rem .3rem;position:sticky;top:4.4rem;max-height:calc(100vh - 5.5rem);overflow:auto}
.tree ul{list-style:none;margin:0;padding:0}
.tree li{margin:0}
.tree details>summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:.4rem;padding:.3rem .5rem;border-radius:var(--radius);color:var(--text)}
.tree details>summary::-webkit-details-marker{display:none}
.tree details>summary::before{content:"";width:0;height:0;border-left:5px solid var(--mist);border-top:4px solid transparent;border-bottom:4px solid transparent;transition:transform .15s;flex:none}
.tree details[open]>summary::before{transform:rotate(90deg)}
.tree a.leaf{display:flex;align-items:center;gap:.4rem;padding:.3rem .5rem .3rem 1.4rem;border-radius:var(--radius);text-decoration:none;color:var(--text)}
.tree details details{padding-left:.8rem}
.tree summary:hover,.tree a.leaf:hover{background:var(--paper2)}
.tree .here>summary,.tree a.leaf.here{background:var(--brass-soft);box-shadow:inset 3px 0 0 var(--brass);color:var(--text)}
.tree .name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tree .count{color:var(--mist);font-size:.78rem;font-variant-numeric:tabular-nums}
.tree .sect{display:flex;gap:.4rem;padding:.3rem .5rem;color:var(--text)}
.listing{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);min-height:60vh}
.crumbs{display:flex;flex-wrap:wrap;gap:.3rem;align-items:center;padding:.8rem 1rem;border-bottom:1px solid var(--line);font-size:.92rem}
.crumbs a{color:var(--text-2);text-decoration:none}.crumbs a:hover{text-decoration:underline}.crumbs .sep{color:var(--mist)}.crumbs .cur{font-weight:600}
.listing .purpose{padding:.7rem 1rem;color:var(--text-2);font-size:.9rem;border-bottom:1px solid var(--line)}
.listing .toolbar{display:flex;gap:1rem;align-items:center;padding:.5rem 1rem;border-bottom:1px solid var(--line);font-size:.85rem;color:var(--text-2)}
.listing .toolbar a{color:var(--text-2)}
.folders{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:.5rem;padding:.8rem 1rem;border-bottom:1px solid var(--line)}
.folders a{display:flex;gap:.6rem;align-items:center;padding:.55rem .7rem;border:1px solid var(--line);border-radius:var(--radius);text-decoration:none;color:var(--text);background:var(--paper2)}
.folders a:hover{border-color:var(--brass)}
.folders svg{width:18px;height:18px;color:var(--brass);flex:none}
.folders .name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.folders .count{color:var(--mist);font-size:.8rem}
.files{width:100%}
.files td.date{width:7rem;color:var(--text-2);white-space:nowrap}
.files td.name a{text-decoration:none;color:var(--text);font-weight:600;overflow-wrap:anywhere}
.files td.name a:hover{color:var(--brass)}
.files .desc{color:var(--text-2);font-size:.88rem;margin-top:.1rem}
.files .snippet{font-size:.85rem;margin-top:.25rem;color:var(--text-2)}.files .snippet b{background:var(--brass-soft);color:var(--text);padding:0 .15rem;border-radius:2px}
.files tr.sel td{color:var(--text)}
.files td.cls{width:7rem}
.files tr.sel td{background:var(--brass-soft)}
.files .where{font-size:.8rem;color:var(--mist)}
.empty{padding:2.5rem 1rem;text-align:center;color:var(--text-2)}
.pager{display:flex;gap:1rem;padding:.7rem 1rem;color:var(--text-2)}
.preview{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);position:sticky;top:4.4rem;height:calc(100vh - 5.5rem);display:flex;flex-direction:column;overflow:hidden}
.preview .head{padding:.6rem .8rem;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:.6rem;font-size:.9rem}
.preview .head .t{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}
.preview iframe{flex:1;border:0;background:#fff}
.preview .none{flex:1;display:grid;place-items:center;color:var(--text-2);padding:2rem;text-align:center}

/* ---- document detail ---- */
.detail{display:grid;grid-template-columns:minmax(300px,420px) minmax(0,1fr);gap:1rem;align-items:start}
@media (max-width:1000px){.detail{grid-template-columns:1fr}}
.detail .meta{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);padding:1rem 1.1rem;position:sticky;top:4.4rem;max-height:calc(100vh - 5.5rem);overflow:auto}
.detail .meta h1{font-size:1.15rem;word-break:break-word;margin-bottom:.6rem}
.detail dl{display:grid;grid-template-columns:8rem 1fr;gap:.35rem .8rem;margin:1rem 0;font-size:.92rem}
.detail dt{color:var(--text-2)}.detail dd{margin:0;word-break:break-word}
.detail .viewer{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}
.detail .viewer iframe{width:100%;height:calc(100vh - 6rem);border:0;background:#fff}
.hits{padding-left:1.1rem;font-size:.9rem}.hits li{margin:.3rem 0}.hits b{background:var(--brass-soft);padding:0 .15rem;border-radius:2px}
details.editbox{margin-top:1rem;border-top:1px solid var(--line);padding-top:.6rem}details.editbox summary{cursor:pointer;font-weight:600}
.actions{display:flex;gap:.5rem;flex-wrap:wrap;margin:.6rem 0}

/* ---- admin ---- */
.matrix th,.matrix td{text-align:center}.matrix th:first-child,.matrix td:first-child{text-align:left}
.chk{display:inline-flex;gap:.3rem;align-items:center;margin:0 .4rem;font-size:.85rem;font-weight:400}
.chk input{width:auto}
form.inline{display:inline}
.dim{opacity:.55}
