@font-face{font-family:"Fraunces";font-weight:400;font-display:swap;src:url(fonts/fraunces-latin-400-normal.woff2) format("woff2")}
@font-face{font-family:"Fraunces";font-weight:600;font-display:swap;src:url(fonts/fraunces-latin-600-normal.woff2) format("woff2")}
@font-face{font-family:"Manrope";font-weight:400;font-display:swap;src:url(fonts/manrope-latin-400-normal.woff2) format("woff2")}
@font-face{font-family:"Manrope";font-weight:500;font-display:swap;src:url(fonts/manrope-latin-500-normal.woff2) format("woff2")}
@font-face{font-family:"Manrope";font-weight:600;font-display:swap;src:url(fonts/manrope-latin-600-normal.woff2) format("woff2")}
@font-face{font-family:"Manrope";font-weight:700;font-display:swap;src:url(fonts/manrope-latin-700-normal.woff2) format("woff2")}
@font-face{font-family:"JetBrains Mono";font-weight:400;font-display:swap;src:url(fonts/jetbrains-mono-latin-400-normal.woff2) format("woff2")}
@font-face{font-family:"JetBrains Mono";font-weight:500;font-display:swap;src:url(fonts/jetbrains-mono-latin-500-normal.woff2) format("woff2")}

@font-face{font-family:"Inter";font-weight:400;font-display:swap;src:url(fonts/inter-latin-400-normal.woff2) format("woff2")}
@font-face{font-family:"Inter";font-weight:700;font-display:swap;src:url(fonts/inter-latin-700-normal.woff2) format("woff2")}
@font-face{font-family:"Lora";font-weight:400;font-display:swap;src:url(fonts/lora-latin-400-normal.woff2) format("woff2")}
@font-face{font-family:"Lora";font-weight:700;font-display:swap;src:url(fonts/lora-latin-700-normal.woff2) format("woff2")}
@font-face{font-family:"Lora";font-weight:400;font-style:italic;font-display:swap;src:url(fonts/lora-latin-400-italic.woff2) format("woff2")}
@font-face{font-family:"Playfair Display";font-weight:400;font-display:swap;src:url(fonts/playfair-display-latin-400-normal.woff2) format("woff2")}
@font-face{font-family:"Playfair Display";font-weight:700;font-display:swap;src:url(fonts/playfair-display-latin-700-normal.woff2) format("woff2")}
@font-face{font-family:"DM Sans";font-weight:400;font-display:swap;src:url(fonts/dm-sans-latin-400-normal.woff2) format("woff2")}
@font-face{font-family:"DM Sans";font-weight:600;font-display:swap;src:url(fonts/dm-sans-latin-600-normal.woff2) format("woff2")}
@font-face{font-family:"DM Sans";font-weight:700;font-display:swap;src:url(fonts/dm-sans-latin-700-normal.woff2) format("woff2")}
@font-face{font-family:"Outfit";font-weight:400;font-display:swap;src:url(fonts/outfit-latin-400-normal.woff2) format("woff2")}
@font-face{font-family:"Outfit";font-weight:600;font-display:swap;src:url(fonts/outfit-latin-600-normal.woff2) format("woff2")}
@font-face{font-family:"Outfit";font-weight:700;font-display:swap;src:url(fonts/outfit-latin-700-normal.woff2) format("woff2")}
@font-face{font-family:"Plus Jakarta Sans";font-weight:400;font-display:swap;src:url(fonts/plus-jakarta-sans-latin-400-normal.woff2) format("woff2")}
@font-face{font-family:"Plus Jakarta Sans";font-weight:600;font-display:swap;src:url(fonts/plus-jakarta-sans-latin-600-normal.woff2) format("woff2")}
@font-face{font-family:"Plus Jakarta Sans";font-weight:700;font-display:swap;src:url(fonts/plus-jakarta-sans-latin-700-normal.woff2) format("woff2")}
@font-face{font-family:"Space Grotesk";font-weight:400;font-display:swap;src:url(fonts/space-grotesk-latin-400-normal.woff2) format("woff2")}
@font-face{font-family:"Space Grotesk";font-weight:600;font-display:swap;src:url(fonts/space-grotesk-latin-600-normal.woff2) format("woff2")}
@font-face{font-family:"Space Grotesk";font-weight:700;font-display:swap;src:url(fonts/space-grotesk-latin-700-normal.woff2) format("woff2")}
@font-face{font-family:"Inter";font-weight:600;font-display:swap;src:url(fonts/inter-latin-600-normal.woff2) format("woff2")}
/* Layout: sidebar command rail on desktop, bottom tab bar on phone; pure black base with one accent */
:root{
  color-scheme: dark;
  --bg:#060608; --panel:#0d0d12; --panel2:#14141b; --line:#202029; --line2:#2d2d39;
  --fg:#ECEBF3; --muted:#8E8D9E; --faint:#5E5D6E;
  --acc:#8B7CF6; --acc2:#C9BEFF; --acc-soft:rgba(139,124,246,.13); --acc-glow:rgba(139,124,246,.28); --on-acc:#0b0a12;
  --good:#4ADE80; --warn:#FBBF24; --bad:#F87171;
  --f-display:"Fraunces", Georgia, "Times New Roman", serif;
  --f-body:"Manrope", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
  --f-mono:"JetBrains Mono", ui-monospace, "SF Mono", Menlo, monospace;
  --r:12px; --nav-h:64px;
}
:root[data-accent="emerald"]{--acc:#34D399;--acc2:#A7F3D0;--acc-soft:rgba(52,211,153,.13);--acc-glow:rgba(52,211,153,.28)}
:root[data-accent="amber"]{--acc:#F2B043;--acc2:#FFE0A3;--acc-soft:rgba(242,176,67,.13);--acc-glow:rgba(242,176,67,.28)}
:root[data-accent="blue"]{--acc:#3EB8F5;--acc2:#B5E6FF;--acc-soft:rgba(62,184,245,.13);--acc-glow:rgba(62,184,245,.28)}
[hidden]{display:none!important}
*{box-sizing:border-box}
html,body{height:100%;margin:0}
body{background:var(--bg);color:var(--fg);font-family:var(--f-body);font-size:14.5px;line-height:1.5;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}
button,input,select,textarea{font:inherit;color:inherit}
:focus-visible{outline:2px solid var(--acc);outline-offset:2px}
a{color:var(--acc2)}
.app{display:grid;grid-template-columns:236px 1fr;height:100%}

/* sidebar */
.side{border-right:1px solid var(--line);background:var(--panel);display:flex;flex-direction:column;padding:22px 14px calc(16px + env(safe-area-inset-bottom,0px)) max(14px,env(safe-area-inset-left,0px));gap:20px;overflow-y:auto}
.brand{display:flex;align-items:center;gap:10px;padding:0 8px}
.mark{width:30px;height:30px;border-radius:9px;background:radial-gradient(circle at 30% 25%,var(--acc2),var(--acc) 55%,#17142a);box-shadow:0 0 22px var(--acc-glow);flex:none}
.brand b{font-family:var(--f-display);font-weight:600;font-size:19px;letter-spacing:.01em;display:block;line-height:1.1}
.brand small{display:block;font-family:var(--f-mono);font-size:10px;color:var(--faint);letter-spacing:.1em;text-transform:uppercase}
.nav{display:flex;flex-direction:column;gap:2px}
.nav button{all:unset;cursor:pointer;display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:9px;color:var(--muted);font-weight:500;position:relative;transition:background .15s,color .15s}
.nav button svg{width:17px;height:17px;flex:none;opacity:.8}
.nav button:hover{background:var(--panel2);color:var(--fg)}
.nav button[aria-current="page"]{background:var(--acc-soft);color:var(--fg)}
.nav button[aria-current="page"]::before{content:"";position:absolute;left:-14px;top:9px;bottom:9px;width:2px;border-radius:2px;background:var(--acc)}
.nav kbd{margin-left:auto;font-family:var(--f-mono);font-size:10px;color:var(--faint);border:1px solid var(--line2);border-radius:5px;padding:0 5px}
.side-foot{margin-top:auto;display:flex;flex-direction:column;gap:8px}
.statepill{display:flex;align-items:center;gap:8px;padding:9px 11px;border:1px solid var(--line);border-radius:10px;font-size:12px;color:var(--muted)}
.statepill i{width:7px;height:7px;border-radius:50%;background:var(--good);box-shadow:0 0 8px var(--good);flex:none}
.statepill.warn i{background:var(--warn);box-shadow:0 0 8px var(--warn)}

/* main */
main{overflow-y:auto;padding-block:30px 70px;padding-left:max(28px,env(safe-area-inset-left,0px));padding-right:max(28px,env(safe-area-inset-right,0px))}
.wrap{max-width:1120px;margin:0 auto;display:flex;flex-direction:column;gap:20px}
.view-in{animation:rise .3s ease both}
@keyframes rise{from{opacity:.4;transform:translateY(6px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.view-in,.sheet,.modal,.toast{animation:none!important}*{transition:none!important}}
.topbar{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap}
.topbar-actions{display:flex;gap:8px;align-items:center}
.eyebrow{font-family:var(--f-mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--acc2)}
h1{font-family:var(--f-display);font-weight:400;font-size:clamp(28px,4vw,40px);line-height:1.1;margin:4px 0 0;text-wrap:balance;letter-spacing:-.01em}
h2{font-size:15px;font-weight:600;margin:0}
h3{font-size:11.5px;font-weight:600;margin:0;color:var(--muted);letter-spacing:.08em;text-transform:uppercase}
p{margin:0}
.muted{color:var(--muted)} .faint{color:var(--faint)} .small{font-size:12.5px}
.lead{color:var(--muted);max-width:66ch}
.grid2{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:18px;align-items:start}
.grid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;align-items:start}
.col{display:flex;flex-direction:column;gap:18px;min-width:0}
.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:18px;display:flex;flex-direction:column;gap:14px;min-width:0;transition:border-color .2s}
.card:hover{border-color:var(--line2)}
.card-h{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.row > *{min-width:0}
.spacer{flex:1}

/* buttons and chips */
.btn{cursor:pointer;border:1px solid var(--line2);background:var(--panel2);border-radius:9px;padding:8px 13px;font-weight:600;font-size:13px;transition:border-color .15s,background .15s,box-shadow .15s;white-space:nowrap}
.btn:hover{border-color:var(--acc);box-shadow:inset 0 -1px 0 var(--acc)}
.btn.primary{background:var(--acc);border-color:var(--acc);color:var(--on-acc)}
.btn.primary:hover{box-shadow:0 0 0 3px var(--acc-soft)}
.btn.ghost{background:none;border-color:transparent;color:var(--muted);padding:6px 8px}
.btn.ghost:hover{color:var(--fg);border-color:var(--line2);box-shadow:none}
.btn.sm{padding:5px 9px;font-size:12px}
.btn.danger{color:var(--bad)}
.btn[data-armed]{border-color:var(--bad);color:var(--bad)}
.iconbtn{cursor:pointer;position:relative;width:38px;height:38px;border-radius:10px;border:1px solid var(--line2);background:var(--panel2);display:grid;place-items:center}
.iconbtn:hover{border-color:var(--acc)}
.iconbtn svg{width:18px;height:18px}
.badge{position:absolute;top:-5px;right:-5px;min-width:17px;height:17px;padding:0 4px;border-radius:9px;background:var(--acc);color:var(--on-acc);font-size:10.5px;font-weight:700;display:grid;place-items:center}
.chip{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:600;padding:3px 8px;border-radius:99px;background:var(--panel2);border:1px solid var(--line2);color:var(--muted);white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis}
.chip.acc{background:var(--acc-soft);border-color:transparent;color:var(--acc2)}
.chip.warn{color:var(--warn);border-color:rgba(251,191,36,.3);background:rgba(251,191,36,.08)}
.chip.bad{color:var(--bad);border-color:rgba(248,113,113,.3);background:rgba(248,113,113,.08)}
.chip.good{color:var(--good);border-color:rgba(74,222,128,.3);background:rgba(74,222,128,.08)}
.chip.dash{border-style:dashed;background:none}
.c-confirmed{color:var(--good);border-color:rgba(74,222,128,.3);background:rgba(74,222,128,.08)}
.c-provisional{color:var(--warn);border-color:rgba(251,191,36,.3);background:rgba(251,191,36,.07)}
.c-proposed{color:var(--muted);border-style:dashed;background:none}

/* hero */
.hero{position:relative;overflow:hidden;background:linear-gradient(130deg,var(--acc-soft),transparent 55%),var(--panel);border:1px solid var(--line);border-radius:16px;padding:22px 24px;display:grid;grid-template-columns:auto 1fr;gap:26px;align-items:center}
.hero .big{font-family:var(--f-display);font-size:62px;line-height:.9;color:var(--acc2);font-variant-numeric:tabular-nums}
.hero .big small{display:block;font-family:var(--f-mono);font-size:10.5px;color:var(--muted);letter-spacing:.1em;text-transform:uppercase;margin-top:8px}
.bar{height:6px;border-radius:6px;background:var(--panel2);overflow:hidden}
.bar i{display:block;height:100%;background:linear-gradient(90deg,var(--acc),var(--acc2));border-radius:6px;transition:width .4s}

/* proverb */
.proverb{gap:10px;background:radial-gradient(120% 140% at 0% 0%,var(--acc-soft),transparent 60%),var(--panel)}
.proverb blockquote{margin:0;font-family:var(--f-display);font-size:21px;line-height:1.35;text-wrap:balance}
.proverb .orig{font-style:italic;color:var(--muted);font-size:13px}
.proverb .why{font-size:12.5px;color:var(--faint);border-top:1px solid var(--line);padding-top:10px}

/* lists */
.list{display:flex;flex-direction:column}
.item{display:grid;grid-template-columns:22px minmax(0,1fr) auto;gap:10px;align-items:center;padding:9px 2px;border-bottom:1px solid var(--line)}
.item:last-child{border-bottom:0}
.item.noc{grid-template-columns:minmax(0,1fr) auto}
.check{cursor:pointer;width:18px;height:18px;border-radius:6px;border:1.5px solid var(--line2);background:none;padding:0;display:grid;place-items:center;transition:border-color .15s}
.check:hover{border-color:var(--acc)}
.done .check{background:var(--acc);border-color:var(--acc)}
.done .check::after{content:"";width:7px;height:4px;border-left:2px solid var(--on-acc);border-bottom:2px solid var(--on-acc);transform:rotate(-45deg) translate(1px,-1px)}
.done .tt{color:var(--faint);text-decoration:line-through}
.tt{overflow-wrap:anywhere}
.meta{display:flex;gap:6px;flex-wrap:wrap;margin-top:3px}
.acts{display:flex;gap:2px;opacity:.6;transition:opacity .15s}
.item:hover .acts{opacity:1}
.star{cursor:pointer;background:none;border:0;color:var(--faint);font-size:15px;padding:2px 6px;border-radius:6px}
.star.on{color:var(--acc2)}
.empty{color:var(--faint);font-size:13px;padding:8px 2px}
.agenda-day{font-family:var(--f-mono);font-size:11px;color:var(--faint);letter-spacing:.06em;text-transform:uppercase;margin-top:6px}
.ev{display:grid;grid-template-columns:54px minmax(0,1fr) auto;gap:10px;align-items:center;padding:8px 10px;border-radius:9px;cursor:pointer;border:1px solid transparent;text-align:left;background:none;width:100%}
.ev:hover{background:var(--panel2);border-color:var(--line2)}
.ev time{font-family:var(--f-mono);font-size:12px;color:var(--muted)}
.ev .t{font-weight:500;overflow-wrap:anywhere}
.st-tentative .t,.st-idea .t{color:var(--muted)}
.st-cancelled .t,.st-postponed .t{text-decoration:line-through;color:var(--faint)}

/* suggestions */
.sugg{display:flex;flex-direction:column;gap:8px}
.sugg > div{display:flex;flex-direction:column;gap:3px;padding:10px 12px 10px 26px;border-radius:10px;background:var(--panel2);font-size:13.5px;position:relative}
.sugg > div::before{content:"";position:absolute;left:12px;top:16px;width:6px;height:6px;border-radius:50%;background:var(--acc);box-shadow:0 0 10px var(--acc)}
.sugg > div.warn::before{background:var(--warn);box-shadow:0 0 10px var(--warn)}
.sugg small{color:var(--faint);font-size:11.5px}

/* forms */
input[type=text],input[type=search],input[type=url],input[type=email],input[type=number],input[type=date],input[type=time],input[type=password],select,textarea{background:var(--bg);border:1px solid var(--line2);border-radius:9px;padding:8px 11px;outline:none;transition:border-color .15s;min-width:0;max-width:100%}
input:focus,select:focus,textarea:focus{border-color:var(--acc)}
.grow{flex:1 1 200px}
textarea{width:100%;resize:vertical;min-height:80px;line-height:1.55}
label.f{display:flex;flex-direction:column;gap:6px;font-size:12px;font-weight:600;color:var(--muted);min-width:0}
label.f > input,label.f > select,label.f > textarea{font-weight:400;font-size:14px;color:var(--fg);width:100%}
.form{display:flex;flex-direction:column;gap:14px}
.two{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.three{display:grid;grid-template-columns:1fr 1fr 1fr;gap:12px}
fieldset{border:1px solid var(--line);border-radius:10px;padding:12px;margin:0;display:flex;flex-direction:column;gap:10px;min-width:0}
legend{font-size:12px;font-weight:600;color:var(--muted);padding:0 6px}
.seg{display:inline-flex;padding:3px;border:1px solid var(--line2);border-radius:10px;background:var(--bg);gap:2px;flex-wrap:wrap}
.seg label{cursor:pointer;padding:5px 11px;border-radius:7px;font-size:12.5px;font-weight:600;color:var(--muted)}
.seg input{position:absolute;opacity:0;pointer-events:none}
.seg label:has(input:checked){background:var(--acc-soft);color:var(--fg)}
.seg label:has(input:focus-visible){outline:2px solid var(--acc)}
.checks{display:flex;flex-wrap:wrap;gap:8px}
.checks label{display:flex;align-items:center;gap:6px;font-size:13px;font-weight:500;color:var(--fg);padding:5px 10px;border:1px solid var(--line2);border-radius:99px;cursor:pointer}
.checks label:has(input:checked){border-color:var(--acc);background:var(--acc-soft)}
.checks input{accent-color:var(--acc)}

/* tabs */
.tabs{display:flex;gap:4px;padding:4px;background:var(--panel);border:1px solid var(--line);border-radius:11px;width:max-content;max-width:100%;overflow-x:auto;scrollbar-width:none}
.tabs button{all:unset;cursor:pointer;padding:7px 14px;border-radius:8px;color:var(--muted);font-weight:600;font-size:13px;white-space:nowrap}
.tabs button[aria-selected="true"]{background:var(--acc-soft);color:var(--fg)}
.tabs button:hover{color:var(--fg)}
.chain{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-family:var(--f-mono);font-size:11px;color:var(--faint)}
.chain .on{color:var(--acc2)}

/* goals */
.area{display:flex;flex-direction:column;gap:10px}
.area-h{display:flex;align-items:center;gap:10px}
.area-h h2{font-family:var(--f-display);font-weight:400;font-size:20px}
.area-h .n{font-family:var(--f-mono);font-size:11px;color:var(--faint)}
.area-h::after{content:"";flex:1;height:1px;background:var(--line)}
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px}
.goal{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:15px 16px;display:flex;flex-direction:column;gap:9px;position:relative;transition:border-color .2s,transform .2s;min-width:0}
.goal:hover{border-color:var(--line2);transform:translateY(-1px)}
.goal::after{content:"";position:absolute;left:16px;right:16px;bottom:-1px;height:1px;background:var(--acc);transform:scaleX(0);transition:transform .25s}
.goal:hover::after{transform:scaleX(1)}
.goal h4{margin:0;font-size:15px;font-weight:600;line-height:1.35;overflow-wrap:anywhere}
.goal .ln{font-size:12.5px;color:var(--muted);overflow-wrap:anywhere}
.goal .ln b{color:var(--fg);font-weight:600}
.goal .serve{font-size:12px;color:var(--faint)}
.goal .serve b{color:var(--muted);font-weight:500}
.goal-foot{display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap;margin-top:auto}
.prog{display:grid;grid-template-columns:1fr auto;gap:10px;align-items:center}
.prog output{font-family:var(--f-mono);font-size:12px;color:var(--acc2)}
.nomeasure{font-size:12px;color:var(--faint);font-style:italic}
.ghost-goal{border:1px dashed var(--line2);border-radius:var(--r);padding:14px 15px;color:var(--faint);font-size:13px;display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.vision{font-family:var(--f-display);font-size:20px;line-height:1.55;min-height:220px;background:var(--panel);border-color:var(--line)}

/* table */
.tablewrap{overflow-x:auto}
table.t{border-collapse:collapse;width:100%;min-width:560px;font-size:13.5px}
table.t th{font-size:11px;font-weight:600;color:var(--faint);text-transform:uppercase;letter-spacing:.06em;text-align:left;padding:6px 10px;border-bottom:1px solid var(--line)}
table.t td{padding:10px;border-bottom:1px solid var(--line);vertical-align:top}
table.t tr:last-child td{border-bottom:0}
.num{font-variant-numeric:tabular-nums;font-family:var(--f-mono);font-size:12.5px}

/* calendar */
.calbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.calbar h2{font-family:var(--f-display);font-weight:400;font-size:24px;min-width:0}
.month{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));border:1px solid var(--line);border-radius:var(--r);overflow:hidden;background:var(--line);gap:1px}
.month .dow{background:var(--panel);font-family:var(--f-mono);font-size:10.5px;color:var(--faint);text-align:center;padding:7px 0;letter-spacing:.08em}
.day{background:var(--panel);min-height:104px;padding:6px;display:flex;flex-direction:column;gap:3px;cursor:pointer;border:0;text-align:left;font:inherit;color:inherit;min-width:0;transition:background .15s}
.day:hover{background:var(--panel2)}
.day.out{background:#09090c}
.day.out .dn{color:var(--faint)}
.day .dn{font-family:var(--f-mono);font-size:12px;color:var(--muted);width:24px;height:24px;display:grid;place-items:center;border-radius:50%}
.day.today .dn{background:var(--acc);color:var(--on-acc);font-weight:600}
.day.sel{box-shadow:inset 0 0 0 1.5px var(--acc)}
.pill{font-size:11.5px;padding:2px 6px;border-radius:5px;background:var(--acc-soft);color:var(--fg);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border-left:2px solid var(--acc)}
.pill.st-tentative{background:none;border:1px dashed var(--line2);border-left:2px dashed var(--acc);color:var(--muted)}
.pill.st-idea{background:none;color:var(--faint);border-left:2px solid var(--line2)}
.pill.st-completed{opacity:.55}
.pill.st-cancelled,.pill.st-postponed{text-decoration:line-through;color:var(--faint);background:none;border-left-color:var(--line2)}
.pill.task{background:none;border-left:2px solid var(--warn);color:var(--muted)}
.more{font-size:11px;color:var(--faint)}
.calgrid{grid-template-columns:minmax(0,2.2fr) minmax(0,1fr)}
.week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:10px}
.wday{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:10px;display:flex;flex-direction:column;gap:6px;min-height:240px;min-width:0}
.wday.today{border-color:var(--acc)}
.wday h4{margin:0;font-size:12px;font-family:var(--f-mono);color:var(--muted);font-weight:500;letter-spacing:.04em}
.year{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.qcol{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:14px;display:flex;flex-direction:column;gap:10px;min-width:0}
.qcol h3{color:var(--acc2)}
.mini{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}
.mini button{all:unset;cursor:pointer;text-align:center;padding:8px 4px;border-radius:8px;background:var(--panel2);font-size:12px;color:var(--muted)}
.mini button:hover{color:var(--fg);outline:1px solid var(--acc)}
.mini b{display:block;font-family:var(--f-mono);font-size:15px;color:var(--fg);font-weight:500}
.legend{display:flex;gap:14px;flex-wrap:wrap;font-size:12px;color:var(--muted)}
.legend span{display:flex;align-items:center;gap:6px}
.legend i{width:16px;height:10px;border-radius:3px;display:inline-block}

/* freedom tracker and wheel */
.freedom .figure{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.freedom .figure b{font-family:var(--f-display);font-weight:400;font-size:44px;line-height:1;font-variant-numeric:tabular-nums}
.chart svg{display:block;width:100%;height:auto}
.wheelwrap{display:grid;grid-template-columns:minmax(0,220px) 1fr;gap:16px;align-items:center}
.scores{display:flex;flex-direction:column;gap:6px;font-size:13px}
.scores div{display:flex;justify-content:space-between;gap:8px}
.scores div.low{color:var(--warn)}
.scorepick{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px 14px;align-items:center}
.scorepick input[type=range]{width:min(220px,40vw);accent-color:var(--acc)}

/* habits */
table.hab{border-collapse:separate;border-spacing:0 6px;width:100%;min-width:520px}
.hab th{font-family:var(--f-mono);font-weight:400;font-size:11px;color:var(--faint);text-align:center;padding:0 4px}
.hab th.today{color:var(--acc2)}
.hab td{text-align:center;padding:0 4px}
.hab td.name{text-align:left;font-weight:500;padding-right:12px;white-space:nowrap}
.hcell{cursor:pointer;width:30px;height:30px;border-radius:8px;border:1px solid var(--line2);background:var(--panel2);transition:background .15s,border-color .15s}
.hcell:hover{border-color:var(--acc)}
.hcell.on{background:var(--acc);border-color:var(--acc);box-shadow:0 0 12px var(--acc-glow)}
.mono{font-family:var(--f-mono);font-size:12px;color:var(--muted)}
.hchips{display:flex;flex-wrap:wrap;gap:8px}
.hchip{cursor:pointer;border:1px solid var(--line2);background:var(--panel2);border-radius:99px;padding:6px 12px;font-size:12.5px;font-weight:600;color:var(--muted);transition:all .15s}
.hchip.on{background:var(--acc-soft);border-color:var(--acc);color:var(--fg)}

/* details */
details.box{border:1px solid var(--line);border-radius:10px;background:var(--panel)}
details.box > summary{cursor:pointer;padding:12px 14px;display:flex;justify-content:space-between;align-items:center;gap:10px;list-style:none}
details.box > summary::-webkit-details-marker{display:none}
details.box .body{padding:0 14px 14px;display:flex;flex-direction:column;gap:10px}
.qa b{display:block;font-size:12px;color:var(--muted);font-weight:600}
.qa p{white-space:pre-wrap;overflow-wrap:anywhere}
.replay{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.replay > div{background:var(--panel2);border-radius:10px;padding:12px;display:flex;flex-direction:column;gap:6px;min-width:0}
.replay p{white-space:pre-wrap;overflow-wrap:anywhere;font-size:13.5px}
.stars{display:flex;gap:4px}
.stars label{cursor:pointer;width:30px;height:30px;border-radius:8px;border:1px solid var(--line2);display:grid;place-items:center;font-size:13px;font-weight:600;color:var(--muted)}
.stars input{position:absolute;opacity:0;pointer-events:none}
.stars label:has(input:checked){background:var(--acc);border-color:var(--acc);color:var(--on-acc)}
.swatches{display:flex;gap:10px;flex-wrap:wrap}
.sw{cursor:pointer;display:flex;align-items:center;gap:10px;padding:10px 14px;border-radius:10px;border:1px solid var(--line2);background:var(--panel2);font-weight:600;font-size:13px}
.sw i{width:18px;height:18px;border-radius:50%}
.sw[aria-pressed="true"]{border-color:var(--fg)}
.stat{display:flex;gap:22px;flex-wrap:wrap}
.stat div{display:flex;flex-direction:column}
.stat b{font-family:var(--f-display);font-size:30px;font-weight:400;font-variant-numeric:tabular-nums;line-height:1.1}
.stat span{font-size:12px;color:var(--muted)}

/* modal, sheet, toast */
.modal{position:fixed;inset:0;background:rgba(0,0,0,.72);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);display:grid;place-items:center;z-index:50;padding:calc(16px + env(safe-area-inset-top,0px)) max(16px,env(safe-area-inset-right,0px)) calc(16px + env(safe-area-inset-bottom,0px)) max(16px,env(safe-area-inset-left,0px));animation:fade .18s ease}
.sheet{width:min(660px,100%);max-height:100%;overflow-y:auto;background:var(--panel);border:1px solid var(--line2);border-radius:16px;padding:22px;display:flex;flex-direction:column;gap:16px;box-shadow:0 30px 80px rgba(0,0,0,.6),0 0 0 1px var(--acc-soft);animation:pop .22s cubic-bezier(.2,.9,.3,1.2)}
.sheet h2.big{font-size:19px;margin-top:4px}
@keyframes fade{from{opacity:0}}
@keyframes pop{from{opacity:0;transform:translateY(10px) scale(.98)}}
.toast{position:fixed;bottom:calc(24px + env(safe-area-inset-bottom,0px));left:50%;transform:translateX(-50%);background:var(--panel2);border:1px solid var(--acc);padding:9px 16px;border-radius:99px;font-size:13px;font-weight:600;z-index:60;animation:pop .2s ease;max-width:calc(100% - 32px);text-align:center}
.banner{border:1px solid rgba(251,191,36,.35);background:rgba(251,191,36,.07);color:var(--warn);border-radius:10px;padding:10px 14px;font-size:13px}
.notice{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:center;padding:10px 0;border-bottom:1px solid var(--line)}
.notice:last-child{border-bottom:0}
.notice.read .t{color:var(--muted)}

/* phone */
.tabbar,.fab{display:none}
@media (max-width:860px){
  .app{grid-template-columns:1fr}
  .side,.qbtn{display:none}
  main{padding-block:calc(18px + env(safe-area-inset-top,0px)) calc(var(--nav-h) + 40px + env(safe-area-inset-bottom,0px));padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}
  .tabbar{display:grid;grid-template-columns:repeat(5,1fr);position:fixed;left:0;right:0;bottom:0;z-index:40;background:rgba(13,13,18,.94);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-top:1px solid var(--line);padding:6px max(8px,env(safe-area-inset-right,0px)) calc(6px + env(safe-area-inset-bottom,0px)) max(8px,env(safe-area-inset-left,0px))}
  .tabbar button{all:unset;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:3px;padding:6px 0;font-size:10.5px;font-weight:600;color:var(--faint)}
  .tabbar button svg{width:21px;height:21px}
  .tabbar button[aria-current="page"]{color:var(--acc2)}
  .fab{display:grid;place-items:center;position:fixed;right:max(18px,env(safe-area-inset-right,0px));bottom:calc(var(--nav-h) + 18px + env(safe-area-inset-bottom,0px));width:54px;height:54px;border-radius:17px;background:var(--acc);color:var(--on-acc);border:0;z-index:41;box-shadow:0 10px 30px var(--acc-glow);cursor:pointer}
  .fab svg{width:24px;height:24px}
  .grid2,.grid3,.calgrid{grid-template-columns:1fr}
  .week{grid-template-columns:1fr}
  .wday{min-height:0}
  .year{grid-template-columns:1fr 1fr}
  .day{min-height:62px;padding:4px}
  .day .pill{font-size:0;padding:0;height:5px;border-radius:3px;border:0}
  .day .pill.st-tentative{border:0;background:var(--line2)}
  .day .more{display:none}
  .modal{place-items:end center;padding-bottom:0}
  .sheet{border-radius:18px 18px 0 0;padding-bottom:calc(22px + env(safe-area-inset-bottom,0px));max-height:92%}
  .toast{bottom:calc(var(--nav-h) + 24px + env(safe-area-inset-bottom,0px))}
}
@media (max-width:540px){
  .hero{grid-template-columns:1fr;gap:12px}
  .hero .big{font-size:48px}
  .two,.three,.replay{grid-template-columns:1fr}
  .wheelwrap{grid-template-columns:1fr}
  .year{grid-template-columns:1fr}
  h1{font-size:28px}
}

/* money */
.amt{font-family:var(--f-mono);font-size:13px;white-space:nowrap;font-variant-numeric:tabular-nums}
.amt.in,.stat b.in,.moneystats b.in{color:var(--good)}
.amt.tr{color:var(--muted)}
.amt.adj{color:var(--warn)}
.neg{color:var(--bad)!important}
.bigamt{font-family:var(--f-display);font-size:28px;line-height:1.1;font-variant-numeric:tabular-nums;margin:2px 0}
.moneystats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}
.moneystats .card{gap:6px}
.moneystats b{font-family:var(--f-display);font-weight:400;font-size:26px;line-height:1.15;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.catbars{display:flex;flex-direction:column;gap:10px}
.catbars > div{display:grid;grid-template-columns:1fr auto;gap:4px 10px;align-items:center}
.catbars i{grid-column:1 / -1;height:5px;border-radius:4px;background:var(--acc);opacity:.85}
.fgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:10px}
table.money{min-width:600px}
.txrow{cursor:pointer}
.txrow:hover td,.txrow:focus td{background:var(--panel2)}
.txrow:focus{outline:none}
.txrow:focus-visible td:first-child{box-shadow:inset 2px 0 0 var(--acc)}
.formerr{color:var(--bad);font-size:13px;margin:0}
.formerr:empty{display:none}
.reccode{font-family:var(--f-mono);font-size:26px;letter-spacing:.08em;text-align:center;padding:16px;border:1px dashed var(--acc);border-radius:12px;color:var(--acc2);user-select:all}
.lock{position:fixed;inset:0;z-index:100;background:var(--bg);display:grid;place-items:center;padding:24px max(16px,env(safe-area-inset-right,0px)) 24px max(16px,env(safe-area-inset-left,0px))}
.lockbox{display:flex;flex-direction:column;align-items:center;gap:16px;width:min(360px,100%);text-align:center}
.lockbox .mark{width:56px;height:56px;border-radius:16px}
.lockbox h1{font-size:28px}
.lockbox form{width:100%;justify-content:center}
.lockbox input[type=password]{flex:1 1 160px;text-align:center;font-size:20px;letter-spacing:.3em;font-family:var(--f-mono)}
#lockbtn{width:100%}
@media (max-width:860px){ .moneystats{grid-template-columns:1fr 1fr} }
@media (max-width:540px){ .moneystats b{font-size:21px} }

input[aria-invalid="true"]{border-color:var(--bad)!important}

/* quests and year picker */
.yearpick{display:flex;align-items:center;gap:6px}
.yearpick select{font-family:var(--f-display);font-size:18px;padding:6px 10px}
.namechips{display:flex;flex-wrap:wrap;gap:6px}
.namechips .chip{cursor:pointer}
.namechips .chip:hover{border-color:var(--acc);color:var(--fg)}
.qdots{display:flex;flex-wrap:wrap;gap:5px}
.qd{width:16px;height:16px;border-radius:5px;border:1px solid var(--line2);background:none;padding:0}
button.qd{cursor:pointer}
button.qd:hover{border-color:var(--acc)}
.qd.on{background:var(--acc);border-color:var(--acc);box-shadow:0 0 8px var(--acc-glow)}
.qd.miss{background:var(--panel2);border-color:var(--line)}
.qd.now{border:1.5px solid var(--acc2)}
.qd.fut{opacity:.45}
.quest.active{border-color:var(--line2)}
.quest.closing{border-color:rgba(251,191,36,.35)}

/* money stage 2 */
.budget{display:flex;flex-direction:column;gap:6px;padding:10px 0;border-bottom:1px solid var(--line)}
.budget:last-child{border-bottom:0}
.bar.warn i{background:var(--warn)}
.bar.bad i{background:var(--bad)}
.mpick{font-family:var(--f-display);font-weight:400;font-size:20px;min-width:150px;text-align:center}
.pill.bill{background:none;border-left:2px solid var(--good);color:var(--muted)}
.mchart{display:grid;grid-template-columns:repeat(6,1fr);gap:12px;align-items:end;height:170px}
.mcol{display:flex;flex-direction:column;align-items:center;gap:6px;height:100%}
.mbars{flex:1;width:100%;display:flex;align-items:flex-end;justify-content:center;gap:4px}
.mbars i{width:min(22px,40%);border-radius:4px 4px 0 0;min-height:2px}
.mbars .mi{background:var(--good);opacity:.85}
.mbars .me{background:var(--acc)}

/* ventures */
.stages{display:flex;gap:3px;flex-wrap:wrap}
.stages span{font-size:10.5px;font-weight:600;padding:3px 7px;border-radius:5px;background:var(--panel2);color:var(--faint);letter-spacing:.02em}
.stages span.past{background:var(--acc-soft);color:var(--acc2)}
.stages span.now{background:var(--acc);color:var(--on-acc)}
.moneystats > div h3{margin-bottom:4px}
.moneystats.mini b{font-size:19px;white-space:nowrap}
/* welcome (first run) */
body.onboarding .side,body.onboarding .tabbar,body.onboarding .fab{display:none!important}
body.onboarding .app{grid-template-columns:1fr}
.welcome{display:grid;place-items:start center;padding:48px 0 64px}
.wbox{display:flex;flex-direction:column;gap:16px;width:min(560px,100%)}
.wbox>.mark{width:52px;height:52px;border-radius:15px}
.wbox h1{font-size:30px}
.wbox fieldset{display:flex;flex-direction:column;gap:10px}
.sw:has(input:checked){border-color:var(--fg)}
.sw input{position:absolute;opacity:0;pointer-events:none}
.wrestore{display:flex;align-items:center;gap:12px;flex-wrap:wrap;border-top:1px solid var(--line);padding-top:16px}
/* health (v1.8) */
.plan-day .plan-items{display:flex;flex-direction:column;gap:10px}
.plan-item{display:flex;flex-direction:column;gap:6px;padding:10px 0;border-top:1px solid var(--line)}
.plan-item:first-child{border-top:0;padding-top:0}
.pi-act{display:flex;gap:6px;flex-wrap:wrap}
.pi-act .btn.danger.on{border-color:var(--bad);color:var(--bad)}
.pi-note{font-size:13px}
.plangrid td{padding:4px}.plangrid input{min-width:110px;font-size:13px;padding:7px 9px}
.shop.got span{text-decoration:line-through;color:var(--muted)}
details.mini summary{cursor:pointer;padding:4px 0}
/* reflection, AI and radar (v1.8) */
.hint-box{border:1px solid var(--line2);background:var(--panel2);border-radius:12px;padding:12px 14px;display:flex;flex-direction:column;gap:6px}
.hint-box .eyebrow{margin-bottom:2px}
ul.facts{margin:0;padding-left:18px;display:flex;flex-direction:column;gap:4px}
ul.facts li{font-size:13.5px}
.mbar{display:inline-block;width:90px;height:6px;border-radius:9px;background:var(--line2);overflow:hidden}.mbar i{display:block;height:100%;background:var(--acc)}
svg.ic{width:15px;height:15px;vertical-align:-3px}
.ai-bar{display:flex;flex-direction:column;gap:6px;margin-top:-4px}
.ai-btn{align-self:flex-start;color:var(--acc2)}
.ai-sugg{border:1px solid var(--acc);border-radius:10px;padding:10px 12px;background:var(--acc-soft);display:flex;flex-direction:column;gap:8px}
.sugg-text{white-space:pre-wrap}
.ai-review{border-color:var(--acc)}
.radar-body{display:flex;flex-direction:column;gap:14px;margin-top:10px}
.radar-body h3{font-size:13px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin-bottom:4px}
ul.sigs{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
li.sig{font-size:14px;line-height:1.5}
li.sig a{color:var(--acc2)}
.update{border-top:1px solid var(--line);padding-top:10px;margin-top:10px;display:flex;flex-direction:column;gap:6px}
.update:first-of-type{border-top:0;margin-top:0;padding-top:0}
/* calendar and today (v1.9) */
.layers{display:flex;flex-wrap:wrap;gap:6px;margin:4px 0 10px}
.layers .chip{cursor:pointer;opacity:.55}.layers .chip.on{opacity:1;border-color:var(--acc);background:var(--acc-soft)}
.pill.task{border-left:2px solid var(--muted)}.pill.task.hi{border-left-color:var(--warn)}
.pill.ms,.blk.ms,.ev.ms{border-left:2px solid #c084fc}
.pill.quest,.blk.quest,.ev.quest{border-left:2px solid var(--good)}
.pill.camp,.blk.camp,.ev.camp{border-left:2px solid #38bdf8}
.pill.meal,.blk.meal,.ev.meal{border-left:2px solid #fbbf24}
.pill.workout,.blk.workout,.ev.workout{border-left:2px solid #fb7185}
.tgrid-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:14px;background:var(--panel)}
.tgrid{display:grid;grid-template-columns:52px repeat(var(--cols),minmax(110px,1fr));min-width:calc(52px + var(--cols) * 110px)}
.gcol,.gtimes{border-left:1px solid var(--line);display:flex;flex-direction:column;min-width:0}
.gtimes{border-left:0}
.ghead{height:34px;display:flex;align-items:center;justify-content:space-between;gap:4px;padding:0 6px;font-size:12px;border-bottom:1px solid var(--line)}
.gcol.today .ghead{color:var(--acc2)}
.gall{padding:3px;display:flex;flex-direction:column;gap:3px;border-bottom:1px solid var(--line2);overflow:hidden;box-sizing:border-box}
.gall .pill{font-size:11px;text-align:left;cursor:pointer}
.gbody{position:relative}
.gtimes .gbody span{position:absolute;right:6px;transform:translateY(-6px);font:10px var(--f-mono);color:var(--faint)}
.gline{position:absolute;left:0;right:0;border-top:1px solid var(--line)}
.gnow{position:absolute;left:0;right:0;border-top:2px solid var(--bad);z-index:3}
.blk{position:absolute;z-index:2;overflow:hidden;text-align:left;font-size:11.5px;line-height:1.25;padding:3px 6px;border-radius:7px;background:var(--acc-soft);border:1px solid var(--line2);border-left:3px solid var(--acc);color:var(--fg);cursor:pointer}
.blk.task{background:var(--panel2);border-left-color:var(--muted)}.blk.task.hi{border-left-color:var(--warn)}
.blk .mono{font-size:10px;color:var(--muted)}
.timecheck{font-size:13px;padding:9px 12px;border-radius:10px;background:var(--panel2);border:1px solid var(--line2)}
.timecheck.over{border-color:var(--bad)}
.tline{display:flex;flex-direction:column;gap:4px}
.tl{display:grid;grid-template-columns:52px 1fr auto;gap:10px;align-items:center;text-align:left;padding:7px 10px;border-radius:9px;border:1px solid var(--line);background:var(--panel2);color:var(--fg);cursor:pointer;border-left:3px solid var(--acc)}
.tl time{font:12px var(--f-mono);color:var(--muted)}
.tl.past{opacity:.5}
.tl.task{border-left-color:var(--muted)}.tl.meal{border-left-color:#fbbf24}.tl.workout{border-left-color:#fb7185}.tl.camp{border-left-color:#38bdf8}.tl.ms{border-left-color:#c084fc}.tl.quest{border-left-color:var(--good)}
.dealadd{display:grid;grid-template-columns:1.3fr 1fr 1fr auto auto;gap:6px}
@media (max-width:700px){.dealadd{grid-template-columns:1fr 1fr}}
.deal.st-won{border-left:3px solid var(--good)}.deal.st-lost{opacity:.6}
button.item{grid-template-columns:minmax(0,1fr) auto;width:100%;background:none;border:0;border-bottom:1px solid var(--line);border-radius:0;color:var(--fg);font:inherit;text-align:left;cursor:pointer}
button.item:hover{background:var(--panel2)}
/* pickers (v1.9) */
.picker{position:relative}
.picker .pk-in{width:100%;padding-right:30px}
.pk-clear{position:absolute;right:6px;top:50%;transform:translateY(-50%);background:none;border:0;color:var(--faint);cursor:pointer;font-size:13px}
.pk-list{position:absolute;left:0;right:0;top:calc(100% + 4px);z-index:60;max-height:260px;overflow:auto;background:var(--panel);border:1px solid var(--line2);border-radius:10px;box-shadow:0 14px 40px rgba(0,0,0,.45);padding:4px}
.pk-opt{display:flex;flex-direction:column;align-items:flex-start;gap:2px;width:100%;text-align:left;background:none;border:0;border-radius:7px;padding:7px 9px;color:var(--fg);cursor:pointer;font:inherit;font-size:13.5px}
.pk-opt:hover,.pk-opt:focus{background:var(--acc-soft)}
.pk-new{color:var(--acc2);font-weight:600}
.pk-create{border:1px dashed var(--acc);border-radius:10px;padding:10px;display:flex;flex-direction:column;gap:8px;margin-top:6px}
.msugg{display:flex;flex-wrap:wrap;gap:6px;align-items:center;min-height:0}
.pk-sugg{cursor:pointer}
.mrow{display:flex;flex-direction:column;gap:4px}

/* ---------- v1.10: clients, studio, templates, search, events ---------- */
.cweek{display:flex;flex-direction:column;gap:4px;padding:8px 0;border-top:1px solid var(--line)}
.cweek:first-child{border-top:0}
.lt-in{background:transparent;border:0;border-bottom:1px solid var(--line2);padding:2px 4px;min-width:min(420px,60vw)}
.lt-in:focus{outline:none;border-bottom-color:var(--acc)}
.tplgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:10px}
.tplcard{all:unset;box-sizing:border-box;cursor:pointer;display:flex;flex-direction:column;gap:6px;padding:14px;border:1px solid var(--line);border-radius:var(--r);background:var(--panel)}
.tplcard:hover,.tplcard:focus-visible{border-color:var(--acc);background:var(--panel2)}
div.tplcard{cursor:default}
.tplpick{max-height:300px;overflow-y:auto}
.tplpick label.ev{cursor:pointer}
.doc-meta{display:flex;flex-direction:column;gap:8px}
.doc-title{font-family:var(--f-display);font-size:26px;font-weight:600;background:transparent;border:0;border-bottom:1px solid var(--line);padding:4px 0;width:100%}
.doc-title:focus{outline:none;border-bottom-color:var(--acc)}
.doc-tools{display:flex;flex-wrap:wrap;gap:4px;position:sticky;top:0;z-index:5;background:var(--bg);padding:6px 0;border-bottom:1px solid var(--line)}
.doc-tools .spacer,.doc-actions .spacer{flex:1}
.doc-page{background:#fbfaf7;color:#1b1a22;border-radius:10px;padding:clamp(18px,5vw,56px);box-shadow:0 10px 40px rgba(0,0,0,.4)}
.doc-body{outline:none;min-height:50vh;font-size:15px;line-height:1.6;overflow-wrap:anywhere}
.doc-body h1,.print-doc h1{font-family:var(--f-display);font-size:28px;line-height:1.2;margin:0 0 .5em}
.doc-body h2,.print-doc h2{font-family:var(--f-display);font-size:19px;margin:1.3em 0 .4em}
.doc-body h3,.print-doc h3{font-size:15px;margin:1em 0 .3em}
.doc-body p,.print-doc p{margin:.4em 0}
.doc-body a{color:#4b3fc4}
.doc-body blockquote,.print-doc blockquote{border-left:3px solid #8B7CF6;margin:.6em 0;padding:.2em 0 .2em 12px;color:#444}
.doc-body table,.print-doc table{border-collapse:collapse;width:100%;margin:.6em 0;font-size:13.5px}
.doc-body th,.doc-body td,.print-doc th,.print-doc td{border:1px solid #cfccd8;padding:6px 8px;text-align:left;vertical-align:top;min-width:40px}
.doc-body th,.print-doc th{background:#efedf5;font-weight:700}
.doc-body:empty:before{content:"Start writing…";color:#999}
.doc-page .doc-body{caret-color:#4b3fc4}
.gs-res{max-height:min(60vh,520px);overflow-y:auto;gap:10px}
.gs-group{display:flex;flex-direction:column;gap:2px}
.gs-group .eyebrow{margin:4px 0 2px}
.gs-hit:focus{outline:2px solid var(--acc);outline-offset:-2px}
#gs-q{font-size:17px;padding:12px 14px}
.prep{display:flex;flex-direction:column;gap:4px;padding:6px 0;border-top:1px solid var(--line)}
.prep:first-of-type{border-top:0}
#print-root{display:none}
@media print{
  body.printing{background:#fff!important;color:#000}
  body.printing > *:not(#print-root){display:none!important}
  body.printing #print-root{display:block}
  .print-doc{font-family:var(--f-body);font-size:11.5pt;line-height:1.55;color:#111}
  .print-doc footer{margin-top:28px;padding-top:8px;border-top:1px solid #ccc;font-size:9pt;color:#666}
  .print-doc table{page-break-inside:auto}.print-doc tr{page-break-inside:avoid}
  .print-doc h1,.print-doc h2{page-break-after:avoid}
  @page{margin:18mm 16mm}
}
.dealadd.cadd{grid-template-columns:auto auto 1fr auto}
.dealadd.cadd [name=title]{grid-column:1/-1;order:-1}
@media (max-width:700px){.dealadd.cadd{grid-template-columns:1fr 1fr}.dealadd.cadd select[name=project]{grid-column:1/-1}}

/* ---------- v1.11: learning, menu, exercise numbers ---------- */
.pi-act{align-items:center}
.pi-val{display:inline-flex;align-items:center;gap:6px;margin-right:4px}
.pi-val input{width:84px;padding:5px 8px}
.exinfo{margin-top:4px}
.exinfo summary{cursor:pointer;font-size:12px;color:var(--acc2);list-style:none;display:inline}
.exinfo summary::-webkit-details-marker{display:none}
.exinfo summary:before{content:"ⓘ ";}
.exinfo p{margin:4px 0 0}
.minibars{width:100%;height:56px;display:block;margin:6px 0 2px;color:var(--acc)}
.minibars rect{fill:currentColor;opacity:.85}
.minibars .goal-line{stroke:var(--good);stroke-width:.4;stroke-dasharray:1.5 1.2;vector-effect:non-scaling-stroke}
.exadd{grid-template-columns:1.4fr .8fr .8fr 1fr auto}
@media (max-width:700px){.exadd{grid-template-columns:1fr 1fr}.exadd [name=name]{grid-column:1/-1}}
.steps form input{min-width:0}
.yearjump{padding:5px 8px;font-size:13px}
.levelup{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:8px 10px;border:1px dashed var(--acc);border-radius:9px;background:var(--acc-soft)}
.nudge{border-color:var(--warn)}
.numbers .stat{margin-top:6px}
.numbers .stat span.small{display:block;font-size:11px}

/* ---------- Appearance: Glass (Setup → Appearance). Translucent panels over a soft accent glow. ---------- */
:root[data-look="glass"]{--glass:rgba(255,255,255,.055);--glass2:rgba(255,255,255,.085);--glass-line:rgba(255,255,255,.13);--glass-hi:inset 0 1px 0 rgba(255,255,255,.10);--line:rgba(255,255,255,.10);--line2:rgba(255,255,255,.16)}
:root[data-look="glass"] body{background:
  radial-gradient(55vmax 45vmax at 8% 0%, var(--acc-glow), transparent 60%),
  radial-gradient(50vmax 40vmax at 100% 30%, rgba(62,184,245,.16), transparent 60%),
  radial-gradient(60vmax 45vmax at 50% 110%, rgba(52,211,153,.12), transparent 60%),
  #07070b fixed}
:root[data-look="glass"] .side,
:root[data-look="glass"] .card,
:root[data-look="glass"] .goal,
:root[data-look="glass"] .hero,
:root[data-look="glass"] .tabs,
:root[data-look="glass"] .sheet,
:root[data-look="glass"] .tabbar{background:var(--glass);border-color:var(--glass-line);box-shadow:var(--glass-hi);-webkit-backdrop-filter:blur(22px) saturate(160%);backdrop-filter:blur(22px) saturate(160%)}
:root[data-look="glass"] .side{background:rgba(255,255,255,.035);border-right-color:var(--glass-line)}
:root[data-look="glass"] .card,:root[data-look="glass"] .goal{border-radius:18px}
:root[data-look="glass"] .sheet{background:rgba(22,22,30,.72);border-radius:22px;box-shadow:var(--glass-hi),0 30px 80px rgba(0,0,0,.55)}
:root[data-look="glass"] .tabbar{background:rgba(18,18,26,.62)}
:root[data-look="glass"] .modal{background:rgba(0,0,0,.45);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}
:root[data-look="glass"] .tabs button[aria-selected="true"],:root[data-look="glass"] .nav button[aria-current="page"]{background:rgba(255,255,255,.12)}
:root[data-look="glass"] input[type=text],:root[data-look="glass"] input[type=search],:root[data-look="glass"] input[type=url],:root[data-look="glass"] input[type=email],:root[data-look="glass"] input[type=number],:root[data-look="glass"] input[type=date],:root[data-look="glass"] input[type=time],:root[data-look="glass"] input[type=password],:root[data-look="glass"] select,:root[data-look="glass"] textarea{background:rgba(0,0,0,.28);border-color:rgba(255,255,255,.14)}
:root[data-look="glass"] .btn:not(.primary):not(.ghost){background:rgba(255,255,255,.07);border-color:rgba(255,255,255,.14)}
:root[data-look="glass"] .item:hover,:root[data-look="glass"] button.item:hover{background:rgba(255,255,255,.05)}
:root[data-look="glass"] .doc-tools{background:rgba(12,12,18,.82);border-radius:12px;padding:6px 8px;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}
/* Respect the system's "Reduce transparency" and keep text readable */
@media (prefers-reduced-transparency:reduce){
  :root[data-look="glass"] .side,:root[data-look="glass"] .card,:root[data-look="glass"] .goal,:root[data-look="glass"] .hero,:root[data-look="glass"] .tabs,:root[data-look="glass"] .sheet,:root[data-look="glass"] .tabbar{-webkit-backdrop-filter:none;backdrop-filter:none;background:#14141b}
}
@media print{:root[data-look="glass"] body{background:#fff}}
.lookpick{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.lookpick button{all:unset;box-sizing:border-box;cursor:pointer;border:1px solid var(--line2);border-radius:14px;padding:10px;display:flex;flex-direction:column;gap:8px}
.lookpick button[aria-pressed="true"]{border-color:var(--acc);box-shadow:0 0 0 1px var(--acc)}
.lookpick .sw-prev{height:58px;border-radius:10px;position:relative;overflow:hidden;background:#0d0d12}
.lookpick .sw-prev i{position:absolute;left:12px;right:12px;top:14px;bottom:14px;border-radius:8px;background:#14141b;border:1px solid #2d2d39}
.lookpick .sw-prev.glass{background:radial-gradient(60px 40px at 20% 20%,var(--acc-glow),transparent),radial-gradient(70px 40px at 90% 80%,rgba(62,184,245,.3),transparent),#08080c}
.lookpick .sw-prev.glass i{background:rgba(255,255,255,.08);border-color:rgba(255,255,255,.18);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}

/* document fonts and house style */
.doc-body{font-family:var(--doc-b, var(--f-body));font-size:var(--doc-size,15px)}
.doc-body h1,.doc-body h2,.doc-body h3,.print-doc h1,.print-doc h2,.print-doc h3{font-family:var(--doc-h, var(--f-display));color:var(--doc-acc,#1b1a22)}
.doc-body th,.print-doc th{border-bottom:2px solid var(--doc-acc,#cfccd8)}
.doc-fonts{display:inline-flex;gap:4px;flex-wrap:wrap}
.doc-fonts select{font-size:12px;padding:4px 6px;max-width:170px}
@media print{ .print-doc{font-family:var(--doc-b, var(--f-body));font-size:var(--doc-size,15px)} }

/* ---------- v1.12: interface fonts ---------- */
:root[data-tsans="1"] h1{font-weight:600;letter-spacing:-.025em}
:root[data-tsans="1"] .stat b,:root[data-tsans="1"] .moneystats b,:root[data-tsans="1"] .figure b,:root[data-tsans="1"] .bigamt,:root[data-tsans="1"] .hero .big,:root[data-tsans="1"] .brand b{font-weight:600;letter-spacing:-.02em}
.fontpick{display:grid;grid-template-columns:repeat(auto-fill,minmax(104px,1fr));gap:8px}
.fontpick button{all:unset;box-sizing:border-box;cursor:pointer;border:1px solid var(--line2);border-radius:12px;padding:10px;display:flex;flex-direction:column;gap:2px;align-items:flex-start}
.fontpick button[aria-pressed="true"]{border-color:var(--acc);box-shadow:0 0 0 1px var(--acc)}
.fontpick .fp-t{font-size:26px;line-height:1.1}
.fontpick .fp-b{font-size:12px;color:var(--muted)}

/* ---------- v1.12: motion ---------- */
:root[data-motion="full"] .view-in{animation:riseIn .38s cubic-bezier(.2,.8,.2,1) both}
@keyframes riseIn{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
:root[data-motion="full"] .view-in .card,:root[data-motion="full"] .view-in .goal{animation:cardIn .45s cubic-bezier(.2,.8,.2,1) both}
:root[data-motion="full"] .view-in .grid2 > .col:nth-child(2) .card{animation-delay:.05s}
@keyframes cardIn{from{opacity:0;transform:translateY(10px) scale(.99)}to{opacity:1;transform:none}}
:root[data-motion="full"] .view-in .bar i,:root[data-motion="full"] .view-in .prog .bar i{animation:barFill .9s cubic-bezier(.2,.8,.2,1) both;transform-origin:left}
@keyframes barFill{from{transform:scaleX(0)}}
:root[data-motion="full"] .view-in .minibars rect{animation:barRise .7s cubic-bezier(.2,.8,.2,1) both;transform-box:fill-box;transform-origin:bottom}
@keyframes barRise{from{transform:scaleY(0)}}
:root[data-motion="subtle"] .view-in{animation:fadeIn .25s ease both}
@keyframes fadeIn{from{opacity:0}}
.pop{animation:popTick .45s cubic-bezier(.3,1.6,.5,1)}
@keyframes popTick{0%{transform:scale(1)}35%{transform:scale(1.28)}100%{transform:scale(1)}}
:root[data-motion="subtle"] .pop{animation:popSoft .3s ease}
@keyframes popSoft{50%{transform:scale(1.1)}}
:root[data-motion="full"] .item.done .tt,:root[data-motion="full"] .item.done{transition:opacity .3s}
:root[data-motion="full"] .sheet{animation:sheetIn .34s cubic-bezier(.2,1.2,.35,1) both}
@keyframes sheetIn{from{opacity:0;transform:translateY(18px) scale(.97)}to{opacity:1;transform:none}}
:root[data-motion="full"] .toast{animation:toastIn .4s cubic-bezier(.2,1.3,.4,1) both}
@keyframes toastIn{from{opacity:0;transform:translate(-50%,14px) scale(.95)}}
:root[data-motion="off"] *,:root[data-motion="off"] *::before,:root[data-motion="off"] *::after{animation:none!important;transition:none!important}
.confetti{position:fixed;inset:0;width:100vw;height:100vh;pointer-events:none;z-index:200}

/* ---------- v1.12: focus timer, daily rhythm ---------- */
.focuspill{position:fixed;right:20px;bottom:calc(20px + env(safe-area-inset-bottom,0px));z-index:45;display:flex;align-items:center;gap:8px;padding:8px 10px 8px 14px;border-radius:999px;background:var(--panel2);border:1px solid var(--acc);box-shadow:0 12px 40px rgba(0,0,0,.5);max-width:calc(100vw - 32px)}
.focuspill .fp-time{font-size:16px;font-weight:600;color:var(--fg)}
.focuspill .fp-lbl{font-size:12px;color:var(--muted);max-width:180px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.focuspill .fp-dot{width:8px;height:8px;border-radius:50%;background:var(--good);box-shadow:0 0 0 0 var(--good);animation:pulse 1.6s infinite}
.focuspill .fp-dot.paused{background:var(--warn);animation:none}
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(74,222,128,.6)}70%{box-shadow:0 0 0 8px rgba(74,222,128,0)}100%{box-shadow:0 0 0 0 rgba(74,222,128,0)}}
:root[data-look="glass"] .focuspill{background:rgba(22,22,30,.7);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}
@media (max-width:860px){.focuspill{left:16px;right:16px;bottom:calc(var(--nav-h) + 84px + env(safe-area-inset-bottom,0px));justify-content:space-between}.focuspill .fp-lbl{flex:1}}
.focusbtn{opacity:.55;padding:2px 6px}
.item:hover .focusbtn{opacity:1}
.rhythm{border-color:color-mix(in srgb,var(--acc) 45%,var(--line))}
ol.guide{margin:0;padding-left:20px;display:flex;flex-direction:column;gap:8px}
ol.guide code{background:var(--panel2);padding:1px 5px;border-radius:5px;font-size:12px}
