:root{
  --bg:#12100e; --panel:#1c1815; --panel2:#242019; --line:#3a3227;
  --txt:#f2e9d8; --dim:#b3a48c; --acc:#ffb300; --acc2:#ff7043;
  --ok:#8fd694; --bad:#ff8a8a; --info:#7fb3d5;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--txt);
  font-family:system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;min-height:100vh}
#topbar{position:sticky;top:0;z-index:20;background:var(--bg);
  border-bottom:1px solid var(--line);padding:10px 12px}
.brand{font-size:19px;font-weight:800;margin-bottom:8px}
#nav{display:flex;gap:6px;overflow-x:auto;padding-bottom:4px;-webkit-overflow-scrolling:touch}
#nav a{flex:0 0 auto;text-decoration:none;color:var(--dim);background:var(--panel);
  border:1px solid var(--line);border-radius:10px;padding:8px 12px;font-size:14px;white-space:nowrap}
#nav a.on{background:var(--acc);color:#1a1206;border-color:var(--acc);font-weight:700}
.top-actions{position:absolute;top:10px;right:12px}
main{padding:14px 12px 80px;max-width:1100px;margin:0 auto}
.card{background:var(--panel);border:1px solid var(--line);border-radius:12px;
  padding:14px;margin-bottom:12px}
.card h2{margin:0 0 10px;font-size:17px}
.card h3{margin:14px 0 8px;font-size:14px;color:var(--dim)}
.row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
@media(max-width:640px){.grid2{grid-template-columns:1fr}}
button,.btn{background:var(--acc);color:#1a1206;border:0;border-radius:10px;
  padding:10px 16px;font-size:15px;font-weight:700;cursor:pointer}
button.ghost,.btn.ghost{background:transparent;color:var(--txt);
  border:1px solid var(--line);font-weight:400}
button.danger{background:transparent;color:var(--bad);border:1px solid var(--bad)}
button.small,.btn.small{padding:7px 11px;font-size:13px}
button:disabled{opacity:.45;cursor:default}
input[type=text],input[type=date],input[type=time],input[type=number],input[type=email],
input[type=datetime-local],select,textarea{background:#0f0c0a;color:var(--txt);
  border:1px solid var(--line);border-radius:8px;padding:9px;font-size:15px;width:100%}
textarea{min-height:90px;resize:vertical;font-family:inherit}
input[type=range]{width:100%}
input[type=color]{width:52px;height:38px;padding:2px;background:#0f0c0a;
  border:1px solid var(--line);border-radius:8px}
input[type=checkbox]{width:20px;height:20px}
label.f{display:flex;flex-direction:column;gap:4px;font-size:13px;color:var(--dim);
  min-width:130px;flex:1}
table.data{width:100%;border-collapse:collapse;font-size:14px}
table.data th,table.data td{border-bottom:1px solid var(--line);padding:8px 6px;
  text-align:left;vertical-align:top}
table.data th{color:var(--dim);font-weight:600;font-size:12px;text-transform:uppercase}
.hint{color:var(--dim);font-size:13px}
.kv{font-size:13px;color:var(--dim)}
.ok{color:var(--ok)} .bad{color:var(--bad)} .info{color:var(--info)}
.pill{display:inline-block;background:var(--panel2);border:1px solid var(--line);
  border-radius:20px;padding:3px 10px;font-size:12px;color:var(--dim);margin:2px}
.pill.warn{border-color:var(--acc);color:var(--acc)}
.pill.bad{border-color:var(--bad);color:var(--bad)}
.pill.ok{border-color:var(--ok);color:var(--ok)}
.list-plain{list-style:none;margin:0;padding:0}
.list-plain li{padding:9px 4px;border-bottom:1px solid var(--line)}
.list-plain li:last-child{border-bottom:0}
/* kanban */
.kanban{display:flex;gap:10px;overflow-x:auto;padding-bottom:8px}
.kcol{flex:0 0 260px;background:var(--panel2);border:1px solid var(--line);
  border-radius:10px;padding:10px;max-height:70vh;overflow-y:auto}
.kcol h4{margin:0 0 8px;font-size:14px;display:flex;justify-content:space-between;align-items:center}
.kcard{background:var(--panel);border:1px solid var(--line);border-radius:8px;
  padding:9px;margin-bottom:8px;cursor:pointer}
.kcard .t{font-weight:600;font-size:14px}
.kcard .m{font-size:12px;color:var(--dim);margin-top:4px}
.kcard.duewarn{border-color:var(--acc)} .kcard.duebad{border-color:var(--bad)}
/* modal + toast */
#modalRoot:empty{display:none}
.mback{position:fixed;inset:0;background:rgba(0,0,0,.6);z-index:50;
  display:flex;align-items:flex-end;justify-content:center}
@media(min-width:640px){.mback{align-items:center}}
.mbox{background:var(--panel);border:1px solid var(--line);border-radius:14px 14px 0 0;
  width:100%;max-width:560px;max-height:88vh;overflow-y:auto;padding:18px}
@media(min-width:640px){.mbox{border-radius:14px}}
.mbox h3{margin:0 0 12px}
#toasts{position:fixed;bottom:16px;left:50%;transform:translateX(-50%);z-index:60;
  display:flex;flex-direction:column;gap:8px;align-items:center;pointer-events:none}
.toast{background:#000;border:1px solid var(--acc);color:var(--txt);
  border-radius:10px;padding:10px 16px;font-size:14px}
/* wiki */
.wiki-body{line-height:1.55}
.wiki-body h1,.wiki-body h2,.wiki-body h3{margin:.7em 0 .3em}
.wiki-body ul{padding-left:22px}
.wiki-body code{background:#0f0c0a;padding:2px 6px;border-radius:5px;font-size:13px}
.wiki-body pre{background:#0f0c0a;padding:10px;border-radius:8px;overflow-x:auto}
.wiki-body a{color:var(--info)}
/* sign */
.docwrap{position:relative;display:inline-block;max-width:100%}
.docwrap img{max-width:100%;display:block;border:1px solid var(--line);border-radius:8px}
.sigfield{position:absolute;border:2px dashed var(--info);border-radius:6px;
  background:rgba(127,179,213,.12);font-size:11px;color:var(--info);
  display:flex;align-items:center;justify-content:center;cursor:pointer;overflow:hidden}
.sigfield.signed{border-style:solid;border-color:var(--ok);background:transparent}
.sigpad{width:100%;height:160px;border:1px solid var(--line);border-radius:8px;
  background:#fff;touch-action:none;cursor:crosshair}
/* misc */
iframe.resume{width:100%;height:calc(100vh - 170px);border:1px solid var(--line);
  border-radius:12px;background:#fff}
.dashgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:12px}
.stat{font-size:26px;font-weight:800}
.hr{border:0;border-top:1px solid var(--line);margin:14px 0}
footer.foot{color:var(--dim);font-size:12px;text-align:center;padding:20px}
/* public guest views (booking / form links): hide the app nav */
body.public #nav{display:none}
body.public .top-actions{display:none}

/* ---------- Write (native document editor) ---------- */
.wo-write{display:flex;flex-direction:column;gap:0;border:1px solid var(--line);border-radius:12px;overflow:hidden}
.ww-tabbar{background:#2f6f4f;display:flex;align-items:flex-end;padding:6px 10px 0;gap:2px;user-select:none;overflow-x:auto}
.ww-tabbar .brand{color:#fff;font-weight:700;font-size:15px;margin:0 12px 6px 2px;white-space:nowrap}
.ww-tab{border:0;background:transparent;color:#eef3f0;cursor:pointer;font-size:13px;padding:7px 14px;border-radius:6px 6px 0 0;white-space:nowrap}
.ww-tab.on{background:#fff;color:#1a1a1a;font-weight:600}
.ww-ribbon{background:#fff;border-bottom:1px solid #d8d5cd;color:#1a1a1a}
.ww-panel{display:none;padding:6px 10px 8px;gap:4px;flex-wrap:wrap}
.ww-panel.on{display:flex}
.ww-rgroup{display:flex;flex-direction:column;padding:2px 8px;border-right:1px solid #d8d5cd}
.ww-rgroup:last-child{border-right:0}
.ww-rgroup .btns{display:flex;gap:2px;align-items:flex-start;flex:1;flex-wrap:wrap}
.ww-rgroup .glabel{font-size:10px;color:#888;text-align:center;margin-top:3px}
.ww-rbtn{border:1px solid transparent;background:transparent;border-radius:4px;cursor:pointer;color:#1a1a1a;
  display:inline-flex;flex-direction:column;align-items:center;padding:4px 7px;min-width:44px;gap:2px;font-family:inherit}
.ww-rbtn:hover{background:#e9e7e1;border-color:#d8d5cd}
.ww-rbtn.on{background:#dcd9d0;border-color:#c4c0b4}
.ww-rbtn .ic{font-size:16px;line-height:1.2}
.ww-rbtn .lb{font-size:10px;white-space:nowrap}
.ww-rbtn.sm{min-width:30px;padding:4px 6px}
.ww-rsel{height:26px;border:1px solid #d8d5cd;border-radius:4px;background:#fff;font-size:12px;padding:0 3px;color:#1a1a1a}
.ww-rcolor{width:30px;height:26px;border:1px solid #d8d5cd;border-radius:4px;background:#fff;padding:2px;cursor:pointer}
.ww-desk{background:#e8e6e1;overflow-y:auto;padding:22px 12px 50px;max-height:70vh}
.ww-page{background:#fff;max-width:760px;min-height:600px;margin:0 auto;padding:56px;box-shadow:0 2px 10px rgba(0,0,0,.18);color:#1a1a1a}
.ww-doc{outline:none;min-height:500px;font-size:12pt;line-height:1.5;word-wrap:break-word}
.ww-doc:empty::before{content:'Start writing…';color:#aaa}
.ww-doc h1{font-size:24pt;margin:.6em 0 .3em}.ww-doc h2{font-size:18pt;margin:.6em 0 .3em}.ww-doc h3{font-size:14pt;margin:.6em 0 .3em}
.ww-doc p{margin:0 0 .7em}.ww-doc ul,.ww-doc ol{margin:0 0 .7em 1.6em}
.ww-doc table{border-collapse:collapse;margin:.7em 0}.ww-doc td,.ww-doc th{border:1px solid #999;padding:6px 10px;min-width:50px}
.ww-doc img{max-width:100%;height:auto}.ww-doc a{color:#1a5fb4}.ww-doc hr{margin:1em 0;border:none;border-top:1px solid #999}
.ww-page.theme-clean{font-family:Arial,sans-serif}
.ww-page.theme-modern{font-family:Verdana,sans-serif;background:#fdfdf8}
.ww-page.theme-serif{font-family:Georgia,serif}
.ww-status{background:#f5f4f1;border-top:1px solid #d8d5cd;font-size:12px;color:#666;padding:5px 14px;display:flex;gap:18px}
.ww-status .right{margin-left:auto}
@media print{
  body.print-write #topbar,body.print-write #nav,body.print-write .ww-tabbar,body.print-write .ww-ribbon,
  body.print-write .ww-status,body.print-write .no-print{display:none !important}
  body.print-write .ww-desk{padding:0;overflow:visible;max-height:none}
  body.print-write .ww-page{box-shadow:none;max-width:none;min-height:0}
}

/* ---------- Present ---------- */
.pslide{position:relative;width:100%;aspect-ratio:16/9;border-radius:10px;overflow:hidden;
  padding:5%;display:flex;flex-direction:column;justify-content:center}
.pslide h1{font-size:2.2em;margin:0 0 .3em}.pslide h2{font-size:1.6em;margin:0 0 .5em}
.pslide ul{margin:0;padding-left:1.4em;font-size:1.15em;line-height:1.7}
.pslide p{font-size:1.15em;line-height:1.6}
.pslide.theme-dark{background:#1c1815;color:#f2e9d8;border:1px solid #3a3227}
.pslide.theme-light{background:#ffffff;color:#1a1a1a;border:1px solid #d8d5cd}
.pslide.theme-accent{background:linear-gradient(135deg,#2f6f4f,#1c3a2a);color:#fff}
.pslide .ps-title-only{text-align:center}
.pslide .ps-cols{display:grid;grid-template-columns:1fr 1fr;gap:5%;height:100%}
.pslide .ps-blank{font-size:1.3em}
.pslide .ps-num{position:absolute;bottom:3%;right:4%;font-size:.85em;opacity:.6}
.pshow{position:fixed;inset:0;z-index:100;background:#000;display:flex;
  flex-direction:column;align-items:center;justify-content:center;padding:4vmin;cursor:pointer}
.pshow .pslide{width:min(96vw,150vh);font-size:2.4vmin}
.pshow-hint{color:#888;font-size:13px;margin-top:12px}
.pshow-notes{color:#666;font-size:12px;margin-top:6px;max-width:80vw;text-align:center}
@media print{
  body.print-present #topbar,body.print-present .no-print{display:none !important}
  body.print-present .pslide{break-inside:avoid;margin-bottom:12px;border:1px solid #999}
}

/* ---------- Resume templates ---------- */
.rtpl-paper{background:#fff;color:#1a1a1a;border-radius:8px;padding:48px;max-width:760px;margin:0 auto}
.rtpl{font-family:Georgia,serif;font-size:11pt;line-height:1.5}
.rtpl .rhead{text-align:center;margin-bottom:1.2em}
.rtpl .rhead h1{font-size:22pt;margin:0}
.rtpl .rtitle{font-size:13pt;color:#444;margin:.2em 0}
.rtpl .rcontact{font-size:10pt;color:#666}
.rtpl .rsec{margin-bottom:1.1em}
.rtpl .rsec h2{font-size:13pt;border-bottom:1px solid #999;margin:0 0 .4em;padding-bottom:.15em;text-transform:uppercase;letter-spacing:.06em}
.rtpl .rjob{margin-bottom:.7em}
.rtpl .jline{display:flex;justify-content:space-between;gap:12px}
.rtpl .jt,.rtpl .jschool{font-weight:700}
.rtpl .dates{color:#555;white-space:nowrap}
.rtpl ul{margin:.3em 0 .3em 1.4em}
.rtpl.tpl-classic .rhead{text-align:left}
.rtpl.tpl-classic .rsec h2{border-bottom:2px solid #333}
.rtpl.tpl-minimal{font-family:Arial,sans-serif}
.rtpl.tpl-minimal .rhead h1{font-size:20pt}
.rtpl.tpl-minimal .rsec h2{border-bottom:0;color:#2f6f4f;font-size:11pt}
.rtpl.tpl-minimal .jline{display:block}
.rtpl.tpl-minimal .dates{display:block;color:#888;font-size:10pt}
@media print{
  body.print-resume #topbar,body.print-resume .no-print{display:none !important}
  body.print-resume main{padding:0;max-width:none}
  body.print-resume .card{border:0;padding:0;margin:0}
  body.print-resume .rtpl-paper{max-width:none;border-radius:0}
}

/* ---------- WizDoc scanner facet ---------- */
.ds-main{display:flex;flex-direction:column;gap:10px}
@media(min-width:860px){.ds-main{flex-direction:row}.ds-strip{width:170px;flex-direction:column !important}.ds-editor{flex:1}}
.ds-strip{display:flex;flex-direction:row;gap:8px;overflow:auto;padding:2px}
.thumb{position:relative;flex:0 0 auto;width:110px;border:2px solid var(--line);border-radius:8px;overflow:hidden;cursor:pointer;background:#000}
@media(min-width:860px){.thumb{width:100%}}
.thumb img{width:100%;display:block;aspect-ratio:3/4;object-fit:cover}
.thumb.sel{border-color:var(--acc)}
.thumb .n{position:absolute;left:0;right:0;bottom:0;background:rgba(0,0,0,.65);font-size:11px;padding:3px 6px;display:flex;justify-content:space-between;color:#fff}
.thumb .n .x{color:var(--bad);font-weight:700;padding:0 4px;cursor:pointer}
.thumb .mv{position:absolute;top:2px;right:2px;display:flex;gap:2px}
.thumb .mv span{background:rgba(0,0,0,.65);border-radius:4px;font-size:11px;padding:1px 5px;cursor:pointer;color:#fff}
.ds-editor{background:var(--panel2);border:1px solid var(--line);border-radius:12px;padding:12px}
.ds-pwrap{position:relative;width:100%;background:#000;border-radius:8px;overflow:hidden;touch-action:none}
.ds-pwrap canvas{width:100%;display:block}
.ds-pwrap svg{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:4}
.ds-handle{position:absolute;width:26px;height:26px;margin:-13px 0 0 -13px;border:3px solid var(--ok);border-radius:50%;background:rgba(143,214,148,.25);cursor:grab;touch-action:none;z-index:5}
.ds-handle:active{cursor:grabbing;background:rgba(143,214,148,.55)}
.ds-controls{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:10px}
.ds-controls .row{grid-column:1/-1}
.seg{display:flex;gap:6px;flex-wrap:wrap}
.seg button.on{background:var(--ok);color:#0a140c}
@media print{
  body.print-docscan #topbar,body.print-docscan .no-print{display:none !important}
  body.print-docscan #dsPrintArea{display:block !important}
  body.print-docscan #dsPrintArea img{width:100%;page-break-after:always;display:block}
  body.print-docscan #dsPrintArea img:last-child{page-break-after:avoid}
}
