/* HesaCor – Design im HesaTower-System (Navy + Signaturfarbe Cor-Rose) */
:root{
  --ink:#0A1D2E;--ink-2:#102A40;--ink-3:#1A3A55;
  --paper:#F2F5F8;--card:#FFFFFF;--card-2:#F7F9FB;--line:#DDE4EA;--line-2:#C5D0DA;
  --text:#0D1B27;--muted:#4F6274;--muted-2:#7A8B9B;
  --sig:#FF5470;--sig-hover:#FF6E86;--sig-2:#C21E45;--sig-3:#8F1230;--sig-soft:#FFE3E8;--on-sig:#2B0710;
  --ok:#1E7F45;--ok-soft:#DDF2E5;--warn:#8A5A00;--warn-soft:#FFF1D6;--crit:#C9353B;--crit-soft:#FBE3E4;--info:#1F5FB8;--info-soft:#E3EEFC;
  --chart-1:#D6365A;--chart-2:#2A78D6;--grid:#E6EBF0;--axis:#C5D0DA;--chart-surface:#FFFFFF;
  --r-sm:9px;--r-card:14px;--r-sheet:22px;
  --shadow:0 1px 2px rgba(10,29,46,.06),0 6px 18px rgba(10,29,46,.06);
  --shadow-float:0 14px 38px rgba(10,29,46,.24),0 2px 6px rgba(10,29,46,.12);
  --f-body:'Overpass',system-ui,-apple-system,'Segoe UI',Roboto,Arial,sans-serif;
  --f-disp:'Barlow Condensed','Arial Narrow','Roboto Condensed',system-ui,sans-serif;
  --top:60px;--rail:252px;--tabh:64px;
  color-scheme:light;
}
:root[data-theme="dark"]{
  --paper:#06141F;--card:#0C2030;--card-2:#102838;--line:#1C3A4E;--line-2:#285066;--text:#E4EDF3;--muted:#9BB0C0;--muted-2:#7B93A5;
  --sig-2:#FF8DA1;--sig-3:#FFB3C0;--sig-soft:#3A1019;
  --ok:#4CC985;--ok-soft:#113A28;--warn:#F2B54A;--warn-soft:#3A2A0C;--crit:#FF7378;--crit-soft:#3E1719;--info:#7FB2F2;--info-soft:#0F2A4A;
  --chart-1:#EE5A77;--chart-2:#3987E5;--grid:#163045;--axis:#285066;--chart-surface:#0C2030;
  --shadow:0 1px 2px rgba(0,0,0,.3),0 8px 22px rgba(0,0,0,.25);color-scheme:dark}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]){
    --paper:#06141F;--card:#0C2030;--card-2:#102838;--line:#1C3A4E;--line-2:#285066;--text:#E4EDF3;--muted:#9BB0C0;--muted-2:#7B93A5;
    --sig-2:#FF8DA1;--sig-3:#FFB3C0;--sig-soft:#3A1019;
    --ok:#4CC985;--ok-soft:#113A28;--warn:#F2B54A;--warn-soft:#3A2A0C;--crit:#FF7378;--crit-soft:#3E1719;--info:#7FB2F2;--info-soft:#0F2A4A;
    --chart-1:#EE5A77;--chart-2:#3987E5;--grid:#163045;--axis:#285066;--chart-surface:#0C2030;
    --shadow:0 1px 2px rgba(0,0,0,.3),0 8px 22px rgba(0,0,0,.25);color-scheme:dark}
}

*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-padding-top:calc(var(--top) + 16px)}
body{margin:0;font-family:var(--f-body);font-size:16px;line-height:1.55;color:var(--text);background:var(--paper);-webkit-font-smoothing:antialiased;min-height:100vh}
body.app{padding-bottom:calc(var(--tabh) + env(safe-area-inset-bottom,0px))}
img,svg{max-width:100%}
button,input,select,textarea{font:inherit;color:inherit}
a{color:var(--sig-2)}
h1,h2,h3{font-family:var(--f-disp);font-weight:700;line-height:1.05;margin:0;letter-spacing:.005em;text-wrap:balance}
h1{font-size:clamp(2.2rem,5.4vw,3.3rem);margin-bottom:10px}
h2{font-size:clamp(1.5rem,3vw,1.95rem)}
h3{font-size:1.2rem;line-height:1.2}
h4{font-size:1rem;margin:0 0 4px}
p{margin:0 0 .7em}
.ic{width:1.2em;height:1.2em;flex:none;stroke:currentColor;fill:none;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round;vertical-align:-.22em}
.sr{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.muted{color:var(--muted)}.sm{font-size:.88rem}.xs{font-size:.8rem}.num{font-variant-numeric:tabular-nums}
.skip{position:absolute;inset-inline-start:-999px;top:0;background:var(--sig);color:var(--on-sig);padding:10px 14px;z-index:999;font-weight:700}
.skip:focus{inset-inline-start:0}
:focus-visible{outline:3px solid var(--sig);outline-offset:2px;border-radius:6px}
[hidden]{display:none!important}

/* ---------- top bar ---------- */
.top{position:sticky;top:0;z-index:50;height:calc(var(--top) + env(safe-area-inset-top,0px));display:flex;align-items:center;justify-content:space-between;gap:10px;padding:env(safe-area-inset-top,0px) 10px 0 14px;background:var(--ink);color:#fff}
.brand{display:flex;align-items:center;gap:10px;color:#fff;text-decoration:none;font-family:var(--f-disp);font-weight:700;font-size:1.5rem;letter-spacing:.01em}
.logo{width:30px;height:30px;flex:none}
.top-act{display:flex;align-items:center;gap:2px}
.ibtn{display:inline-grid;place-items:center;width:44px;height:44px;border-radius:12px;border:0;background:transparent;color:inherit;cursor:pointer;text-decoration:none;position:relative}
.ibtn:hover{background:rgba(255,255,255,.1)}
.ibtn .ic{width:22px;height:22px}
.card .ibtn:hover,.sheet .ibtn:hover{background:var(--card-2)}
.sdot{position:absolute;top:10px;inset-inline-end:9px;width:9px;height:9px;border-radius:50%;border:2px solid var(--ink);background:var(--muted-2)}
.sdot.ok{background:#3CC47A}.sdot.wait{background:#F2B54A}.sdot.err{background:#FF6B70}
.top .link{color:#fff;font-weight:700;text-decoration:none;padding:8px 12px;border-radius:10px}
.top .link:hover{background:rgba(255,255,255,.1)}

/* ---------- navigation: tabs (mobile) / rail (desktop) ---------- */
.tabs{position:fixed;z-index:40;inset-inline:0;bottom:0;height:calc(var(--tabh) + env(safe-area-inset-bottom,0px));padding-bottom:env(safe-area-inset-bottom,0px);display:grid;grid-template-columns:repeat(5,1fr);background:var(--card);border-top:1px solid var(--line)}
.tabs a{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;color:var(--muted);text-decoration:none;font-size:.72rem;font-weight:700;min-width:0}
.tabs a span{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:0 2px}
.tabs a .ic{width:24px;height:24px}
.tabs a.on{color:var(--sig-2)}
.tabs .sub,.tabs .rh,.tabs .dsk{display:none}
@media (min-width:980px){
  body.app{padding-bottom:0}
  .tabs{top:var(--top);bottom:0;inset-inline-end:auto;width:var(--rail);height:auto;display:flex;flex-direction:column;gap:2px;padding:16px 12px 24px;border-top:0;border-inline-end:1px solid var(--line);overflow-y:auto}
  .tabs a{flex-direction:row;justify-content:flex-start;gap:12px;padding:10px 14px;border-radius:11px;font-size:.98rem}
  .tabs a.on{background:var(--sig-soft);color:var(--sig-3)}
  .tabs a:hover:not(.on){background:var(--card-2);color:var(--text)}
  .tabs .sub{display:flex;padding:7px 14px 7px 50px;font-size:.9rem;font-weight:600}
  .tabs .rh{display:block;margin:14px 14px 4px;font-size:.8rem;font-weight:700;color:var(--muted-2)}
  .tabs .dsk{display:flex}
  .tabs .only-m{display:none}
  main.with-nav{margin-inline-start:var(--rail)}
}

/* ---------- layout ---------- */
main{display:block;outline:none}
.page{max-width:920px;margin:0 auto;padding:22px 16px 48px}
.page.wide{max-width:1080px}
.sec{margin:28px 0 12px;display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.sec h2{display:flex;align-items:center;gap:10px}
.lead{font-size:1.08rem;max-width:64ch;color:var(--muted)}
.grid2{display:grid;gap:14px}
@media (min-width:760px){.grid2{grid-template-columns:1fr 1fr}.grid2 .span2{grid-column:1/-1}}
.grid3{display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(220px,1fr))}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r-card);box-shadow:var(--shadow);padding:16px}
.card-h{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}
.card-h h2,.card-h h3{display:flex;align-items:center;gap:8px}
.card-h h2{font-size:1.45rem}
.card-h .ic{color:var(--sig-2)}
.bk{display:inline-flex;align-items:center;gap:6px;font-weight:700;text-decoration:none;color:var(--muted);min-height:44px}
.bk:hover{color:var(--text)}
.fine{color:var(--muted);font-size:.86rem;margin-top:16px}
hr.sep{border:0;border-top:1px solid var(--line);margin:16px 0}

/* ---------- dashboard band + pulse line ---------- */
.band{background:var(--ink);color:#fff;position:relative;overflow:hidden;border-bottom:1px solid rgba(255,255,255,.06)}
.band-in{max-width:920px;margin:0 auto;padding:20px 16px 18px;position:relative}
.band h1{font-size:clamp(2rem,5vw,2.9rem);margin:2px 0 4px;color:#fff}
.band p{color:rgba(255,255,255,.78);margin:0}
.band .meta{display:flex;flex-wrap:wrap;gap:6px 18px;margin-top:6px;color:rgba(255,255,255,.78);font-weight:600}
.band .meta b{color:#fff}
.pulse{display:block;width:100%;height:auto;margin:14px 0 2px;overflow:visible}
.pulse .todo{fill:none;stroke:rgba(255,255,255,.22);stroke-width:2;stroke-dasharray:2 6;stroke-linecap:round}
.pulse .done{fill:none;stroke:var(--sig);stroke-width:2.6;stroke-linejoin:round;stroke-linecap:round;filter:drop-shadow(0 0 6px rgba(255,84,112,.55))}
.pulse .ms circle{fill:var(--ink);stroke:rgba(255,255,255,.4);stroke-width:2}
.pulse .ms.hit circle{fill:var(--sig);stroke:var(--sig)}
.pulse .ms text{fill:rgba(255,255,255,.7);font:700 12px var(--f-body)}
.pulse .now{fill:#fff;stroke:var(--sig);stroke-width:3}
@media (prefers-reduced-motion:no-preference){
  .pulse .done{stroke-dasharray:var(--len);stroke-dashoffset:var(--len);animation:trace 1.6s cubic-bezier(.3,.6,.2,1) .15s forwards}
}
@keyframes trace{to{stroke-dashoffset:0}}

/* ---------- stats & figures ---------- */
.fig{font-family:var(--f-body);font-weight:800;font-size:clamp(2.6rem,7vw,3.4rem);line-height:1;letter-spacing:-.01em}
.fig small{font-size:.9rem;font-weight:700;color:var(--muted);margin-inline-start:6px;letter-spacing:0}
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px}
.stat{padding:12px 14px;border-radius:12px;background:var(--card-2);border:1px solid var(--line)}
.stat .l{font-size:.84rem;color:var(--muted);font-weight:600}
.stat .v{font-weight:800;font-size:1.5rem;line-height:1.15}
.stat .d{font-size:.84rem;font-weight:700;color:var(--muted)}
.delta-down{color:var(--ok)}.delta-up{color:var(--muted)}
.ring{width:64px;height:64px;flex:none}
.ring .bg{fill:none;stroke:var(--line);stroke-width:7}
.ring .fg{fill:none;stroke:var(--sig);stroke-width:7;stroke-linecap:round;transform:rotate(-90deg);transform-origin:50% 50%;transition:stroke-dashoffset .5s}
.ring text{font:800 15px var(--f-body);fill:var(--text)}

/* ---------- habits / checklists ---------- */
.habits{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.hb{display:flex;align-items:center;gap:12px;width:100%;min-height:56px;padding:8px 12px;border-radius:12px;border:1.5px solid var(--line);background:var(--card);color:var(--text);text-align:start;cursor:pointer;font-weight:600;transition:border-color .15s,background .15s}
.hb:hover{border-color:var(--line-2)}
.hb .tk{flex:none;width:30px;height:30px;border-radius:50%;border:2px solid var(--line-2);display:grid;place-items:center;color:transparent;transition:background .15s,border-color .15s}
.hb .tk .ic{width:18px;height:18px;stroke-width:3}
.hb.on{border-color:color-mix(in srgb,var(--ok) 45%,var(--line));background:color-mix(in srgb,var(--ok-soft) 55%,var(--card))}
.hb.on .tk{background:var(--ok);border-color:var(--ok);color:#fff}
.hb .tx{flex:1;min-width:0;display:flex;flex-direction:column}
.hb .tx small{font-weight:500;color:var(--muted);font-size:.82rem}
.hb .hi{flex:none;color:var(--muted-2)}
.tasks{list-style:none;margin:0;padding:0;display:grid;gap:6px}

/* ---------- rows / lists ---------- */
.rows{display:grid;background:var(--card);border:1px solid var(--line);border-radius:var(--r-card);box-shadow:var(--shadow);overflow:hidden}
.row{display:flex;align-items:center;gap:14px;padding:14px 16px;text-decoration:none;color:var(--text);border-bottom:1px solid var(--line);background:transparent;border-inline:0;border-top:0;width:100%;text-align:start;cursor:pointer;font:inherit}
.row:last-child{border-bottom:0}
.row:hover{background:var(--card-2)}
.row .ri{display:inline-grid;place-items:center;width:42px;height:42px;border-radius:12px;background:var(--sig-soft);color:var(--sig-3);flex:none}
.row .tx{flex:1;min-width:0;display:flex;flex-direction:column}
.row b{font-size:1.02rem}
.row small{color:var(--muted);font-size:.87rem}
.row>.ic:last-child{color:var(--muted-2)}
.row .tag{flex:none}

/* ---------- buttons ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:46px;padding:0 18px;border-radius:12px;border:1.5px solid transparent;font-weight:700;font-size:.98rem;cursor:pointer;text-decoration:none;line-height:1.1;background:transparent;color:var(--text);transition:background .15s,border-color .15s}
.btn:active{transform:scale(.98)}
.btn[disabled]{opacity:.55;cursor:not-allowed}
.btn.primary{background:var(--sig);color:var(--on-sig)}
.btn.primary:hover{background:var(--sig-hover)}
.btn.ghost{border-color:var(--line-2)}
.btn.ghost:hover{border-color:var(--sig-2)}
.btn.light{border-color:rgba(255,255,255,.35);color:#fff}
.btn.light:hover{border-color:#fff}
.btn.danger{background:var(--crit);color:#fff}
.btn.sm{min-height:38px;padding:0 13px;font-size:.88rem;border-radius:10px}
.btn.block{width:100%}
.btns{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}
.lnk{background:none;border:0;padding:0;color:var(--sig-2);font-weight:700;cursor:pointer;text-decoration:underline;text-underline-offset:3px}

/* ---------- chips ---------- */
.chips{position:relative;display:flex;gap:8px;overflow-x:auto;padding:2px 2px 10px;scrollbar-width:none}
.chips::-webkit-scrollbar{display:none}
.chips button,.chips a{flex:none;display:inline-flex;align-items:center;gap:6px;min-height:40px;padding:0 15px;border-radius:999px;border:1.5px solid var(--line-2);background:var(--card);font-weight:700;font-size:.9rem;cursor:pointer;color:var(--text);text-decoration:none}
.chips .on{background:var(--ink);border-color:var(--ink);color:#fff}
:root[data-theme="dark"] .chips .on{background:var(--sig);border-color:var(--sig);color:var(--on-sig)}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .chips .on{background:var(--sig);border-color:var(--sig);color:var(--on-sig)}}
.tag{display:inline-flex;align-items:center;gap:5px;padding:3px 10px;border-radius:999px;font-size:.78rem;font-weight:700;background:var(--card-2);color:var(--muted);border:1px solid var(--line);white-space:nowrap}
.tag.new{background:var(--sig-soft);color:var(--sig-3);border-color:transparent}
.tag.ok{background:var(--ok-soft);color:var(--ok);border-color:transparent}
.tag.warn{background:var(--warn-soft);color:var(--warn);border-color:transparent}

/* ---------- forms ---------- */
.form{display:grid;gap:14px}
.fgrid{display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(160px,1fr))}
.fld{display:grid;gap:6px;min-width:0}
.fld>span{font-weight:700;font-size:.86rem;color:var(--muted)}
.fld>span small{font-weight:500}
.inp{min-height:48px;width:100%;border-radius:11px;border:1.5px solid var(--line-2);background:var(--card);padding:0 13px;color:var(--text)}
textarea.inp{min-height:96px;padding:10px 13px;resize:vertical;line-height:1.45}
select.inp{padding-inline-end:8px}
.inp:focus{border-color:var(--sig-2);outline:none;box-shadow:0 0 0 3px color-mix(in srgb,var(--sig) 28%,transparent)}
.inp[aria-invalid="true"]{border-color:var(--crit)}
.pw{position:relative}
.pw .inp{padding-inline-end:52px}
.pw .eye{position:absolute;inset-inline-end:4px;top:2px;width:44px;height:44px;border:0;background:transparent;border-radius:9px;display:grid;place-items:center;color:var(--muted);cursor:pointer}
.seg{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:4px;padding:4px;border-radius:12px;background:var(--card-2);border:1px solid var(--line)}
.seg button{min-height:42px;border-radius:9px;border:0;background:transparent;font-weight:700;cursor:pointer;color:var(--muted);padding:0 8px}
.seg button.on{background:var(--card);color:var(--text);box-shadow:var(--shadow)}
.err{color:var(--crit);font-weight:700;margin:0;min-height:1.2em}
.okmsg{color:var(--ok);font-weight:700;margin:0}
.cb{display:flex;align-items:flex-start;gap:10px;font-weight:600;cursor:pointer;line-height:1.45}
.cb input{flex:none;width:22px;height:22px;margin-top:1px;accent-color:var(--sig-2)}
.hp{position:absolute!important;left:-5000px;width:1px;height:1px;overflow:hidden}
.opts{display:grid;gap:8px;grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}
.opt{min-height:52px;padding:10px 14px;border-radius:12px;border:1.5px solid var(--line-2);background:var(--card);cursor:pointer;font-weight:700;text-align:start;color:var(--text)}
.opt:hover{border-color:var(--sig-2)}
.opt.on{border-color:var(--sig-2);background:var(--sig-soft);color:var(--sig-3)}
.meter{height:6px;border-radius:3px;background:var(--line);overflow:hidden;margin-top:6px}
.meter i{display:block;height:100%;background:var(--sig);transition:width .3s}
.bar{display:block;height:6px;border-radius:3px;background:var(--line);overflow:hidden}
.bar i{display:block;height:100%;background:var(--sig)}
.bar.ok i{background:var(--ok)}

/* ---------- tables ---------- */
.tblw{position:relative;overflow-x:auto;border:1px solid var(--line);border-radius:12px;background:var(--card);-webkit-overflow-scrolling:touch}
.tbl{width:100%;border-collapse:collapse;font-size:.92rem;min-width:520px}
.tbl.narrow{min-width:0}
.tbl th,.tbl td{text-align:start;padding:10px 12px;border-bottom:1px solid var(--line);vertical-align:top}
.tbl th{font-weight:800;font-size:.84rem;color:var(--muted);background:var(--card-2);white-space:nowrap}
.tbl tr:last-child td{border-bottom:0}
.tbl td:first-child{white-space:nowrap}
.tbl td.n,.tbl th.n{text-align:end;font-variant-numeric:tabular-nums;white-space:nowrap}
.tbl td b{font-weight:800}
.tnote{font-size:.85rem;color:var(--muted);margin:8px 2px 0}

/* ---------- content blocks ---------- */
.prose p,.prose li{max-width:72ch}
.prose ul{padding-inline-start:20px;margin:0 0 .8em}
.prose li{margin:4px 0}
.kblock{margin:0 0 26px;scroll-margin-top:calc(var(--top) + 16px)}
.kblock>h2{margin-bottom:10px}
.callout{display:flex;gap:12px;align-items:flex-start;padding:14px 16px;border-radius:12px;border:1px solid var(--line);background:var(--card-2);margin:12px 0}
.callout>.ic{margin-top:3px;flex:none}
.callout p:last-child{margin-bottom:0}
.callout.info{background:var(--info-soft);border-color:transparent}.callout.info>.ic{color:var(--info)}
.callout.warn{background:var(--warn-soft);border-color:transparent}.callout.warn>.ic{color:var(--warn)}
.callout.crit{background:var(--crit-soft);border-color:transparent}.callout.crit>.ic{color:var(--crit)}
.callout.ok{background:var(--ok-soft);border-color:transparent}.callout.ok>.ic{color:var(--ok)}
.srcs{display:flex;flex-wrap:wrap;gap:6px 12px;margin-top:10px;font-size:.82rem;color:var(--muted)}
.srcs a{display:inline-flex;align-items:center;gap:4px;text-decoration:none;color:var(--muted);border-bottom:1px solid var(--line-2)}
.srcs a:hover{color:var(--sig-2);border-color:var(--sig-2)}
.srcs .ic{width:.95em;height:.95em}
.kcards{display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(250px,1fr))}
.kc{padding:14px 16px;border-radius:12px;background:var(--card);border:1px solid var(--line)}
.kc h3{display:flex;align-items:center;gap:8px;font-family:var(--f-body);font-size:1rem;font-weight:800;margin-bottom:6px}
.kc h3 .ic{color:var(--sig-2)}
.kc p{margin:0;font-size:.94rem}
.steps{list-style:none;margin:0;padding:0;counter-reset:st;display:grid;gap:10px}
.steps li{counter-increment:st;display:grid;grid-template-columns:36px 1fr;gap:12px;align-items:start}
.steps li::before{content:counter(st);display:grid;place-items:center;width:36px;height:36px;border-radius:50%;background:var(--ink);color:#fff;font-weight:800;font-size:.95rem}
:root[data-theme="dark"] .steps li::before{background:var(--sig);color:var(--on-sig)}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .steps li::before{background:var(--sig);color:var(--on-sig)}}
.steps b{display:block}
.faq{display:grid;gap:8px}
.faq details{border:1px solid var(--line);border-radius:12px;background:var(--card);padding:0 14px}
.faq summary{cursor:pointer;list-style:none;display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:52px;font-weight:700}
.faq summary::-webkit-details-marker{display:none}
.faq summary .ic{transition:transform .2s;color:var(--muted)}
.faq details[open] summary .ic{transform:rotate(90deg)}
.faq details>div{padding:0 0 14px}
.tl{list-style:none;margin:0;padding:0;position:relative}
.tl::before{content:"";position:absolute;inset-inline-start:7px;top:6px;bottom:6px;width:2px;background:var(--line)}
.tl li{position:relative;padding:0 0 16px 30px}
.tl li::before{content:"";position:absolute;inset-inline-start:0;top:5px;width:16px;height:16px;border-radius:50%;background:var(--card);border:3px solid var(--sig)}
.tl .d{font-weight:800;font-size:.84rem;color:var(--sig-2)}
.tl b{display:block}
.tiles{display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(200px,1fr))}
.tile{display:flex;flex-direction:column;gap:6px;padding:16px;border-radius:var(--r-card);background:var(--card);border:1px solid var(--line);text-decoration:none;color:var(--text);box-shadow:var(--shadow);min-height:132px}
.tile:hover{border-color:var(--sig-2)}
.tile .ti{display:inline-grid;place-items:center;width:44px;height:44px;border-radius:12px;background:var(--ink);color:var(--sig);margin-bottom:4px}
.tile b{font-size:1.06rem}
.tile small{color:var(--muted);font-size:.86rem}
.search{position:relative;margin:4px 0 16px}
.search .ic{position:absolute;inset-inline-start:14px;top:14px;color:var(--muted)}
.search .inp{padding-inline-start:44px}
.hits{display:grid;gap:8px;margin-bottom:18px}
.hit{display:block;padding:12px 14px;border-radius:12px;background:var(--card);border:1px solid var(--line);text-decoration:none;color:var(--text)}
.hit small{display:block;color:var(--muted)}
.hit mark{background:var(--sig-soft);color:inherit;border-radius:3px;padding:0 2px}
.day{border:1px solid var(--line);border-radius:12px;background:var(--card);padding:0 14px}
.meal{display:grid;grid-template-columns:110px 1fr;gap:4px 12px;padding:6px 0;border-top:1px solid var(--line)}
.meal:first-child{border-top:0}
.meal b{font-size:.88rem;color:var(--muted)}
@media (max-width:520px){.meal{grid-template-columns:1fr}}

/* ---------- landing ---------- */
.land{background:var(--ink);color:#fff;position:relative;overflow:hidden;isolation:isolate}
.land canvas{position:absolute;inset:0;width:100%;height:100%;z-index:-1;pointer-events:none}
.land::after{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(180deg,rgba(10,29,46,.15),rgba(10,29,46,.55) 70%,rgba(10,29,46,.9));pointer-events:none}
.land-in{max-width:1120px;margin:0 auto;padding:40px 16px 40px;display:grid;gap:28px;align-items:start}
@media (min-width:980px){.land-in{grid-template-columns:1.1fr .9fr;padding:72px 24px 80px;gap:56px;align-items:center}}
.land h1{font-size:clamp(3rem,8vw,5.4rem);line-height:.95;margin:0 0 18px;color:#fff;max-width:11ch}
.land .lead{color:rgba(255,255,255,.82);font-size:1.12rem;max-width:46ch;margin-bottom:22px}
.trust{list-style:none;margin:22px 0 0;padding:0;display:grid;gap:10px}
.trust li{display:flex;gap:10px;align-items:flex-start;color:rgba(255,255,255,.86);font-weight:600}
.trust .ic{color:var(--sig);margin-top:2px}
.auth{background:rgba(9,27,43,.62);border:1px solid rgba(255,255,255,.16);border-radius:var(--r-sheet);padding:20px;backdrop-filter:blur(18px) saturate(1.2);-webkit-backdrop-filter:blur(18px) saturate(1.2);box-shadow:0 20px 60px rgba(0,0,0,.35);color:#fff}
.auth h2{font-size:1.9rem;margin-bottom:6px;color:#fff}
.auth .seg{background:rgba(255,255,255,.07);border-color:rgba(255,255,255,.14);margin-bottom:16px}
.auth .seg button{color:rgba(255,255,255,.75)}
.auth .seg button.on{background:rgba(255,255,255,.95);color:var(--ink)}
.auth .fld>span{color:rgba(255,255,255,.8)}
.auth .inp{background:rgba(255,255,255,.95);color:#0D1B27;border-color:transparent}
.auth .pw .eye{color:#4F6274}
.auth .cb{color:rgba(255,255,255,.88);font-weight:500;font-size:.92rem}
.auth .cb a{color:#FFB3C0}
.auth .err{color:#FF9AA2}
.auth .okmsg{color:#7FE0A8}
.auth .lnk{color:#FFB3C0}
.auth .meter{background:rgba(255,255,255,.18)}
.auth .muted{color:rgba(255,255,255,.7)}
.pow{display:flex;align-items:center;gap:8px;font-size:.84rem;color:rgba(255,255,255,.7)}
.spin{width:16px;height:16px;border-radius:50%;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;animation:sp 1s linear infinite;flex:none}
@keyframes sp{to{transform:rotate(360deg)}}
.lsec{max-width:1120px;margin:0 auto;padding:44px 16px}
.lsec h2{font-size:clamp(1.9rem,4vw,2.6rem);margin-bottom:8px}
.feat{display:grid;gap:14px;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));margin-top:20px}
.feat>div{padding:18px;border-radius:var(--r-card);background:var(--card);border:1px solid var(--line)}
.feat .ic{width:28px;height:28px;color:var(--sig-2);margin-bottom:8px}
.feat h3{font-family:var(--f-body);font-weight:800;font-size:1.06rem;margin-bottom:6px}
.feat p{margin:0;color:var(--muted)}
.foot{border-top:1px solid var(--line);padding:22px 16px 40px;color:var(--muted);font-size:.88rem}
.foot-in{max-width:1120px;margin:0 auto;display:flex;flex-wrap:wrap;gap:8px 20px;align-items:center;justify-content:space-between}
.foot nav{display:flex;flex-wrap:wrap;gap:6px 16px}
.foot a{color:var(--muted)}

/* ---------- onboarding ---------- */
.ob{max-width:640px;margin:0 auto;padding:24px 16px 48px}
.ob-dots{display:flex;gap:6px;margin-bottom:18px}
.ob-dots i{flex:1;height:5px;border-radius:3px;background:var(--line)}
.ob-dots i.on{background:var(--sig)}
.ob h1{font-size:clamp(2rem,6vw,2.8rem)}
.ob .card{margin-top:14px}
.ob-nav{display:flex;justify-content:space-between;gap:10px;margin-top:20px}

/* ---------- chart ---------- */
.chart{position:relative;margin-top:6px}
.chart svg{display:block;width:100%;height:auto;touch-action:pan-y}
.chart .gl{stroke:var(--grid);stroke-width:1}
.chart .ax{stroke:var(--axis);stroke-width:1}
.chart .tk{fill:var(--muted);font:600 12px var(--f-body)}
.chart .ln{fill:none;stroke-width:2;stroke-linejoin:round;stroke-linecap:round}
.chart .pt{stroke:var(--chart-surface);stroke-width:2}
.chart .tg{stroke:var(--text);stroke-width:1.5;stroke-dasharray:6 5;opacity:.7}
.chart .tgl{fill:var(--text);font:700 12px var(--f-body);opacity:.8}
.chart .lbl{fill:var(--text);font:800 13px var(--f-body)}
.chart .xh{stroke:var(--muted-2);stroke-width:1}
.chart:focus-visible{outline:3px solid var(--sig);outline-offset:4px;border-radius:8px}
.tip{position:absolute;z-index:5;pointer-events:none;background:var(--card);border:1px solid var(--line);box-shadow:var(--shadow-float);border-radius:10px;padding:8px 10px;font-size:.84rem;min-width:130px;transform:translate(-50%,-100%);white-space:nowrap}
.tip .tv{display:flex;align-items:center;gap:8px;font-weight:800;font-size:1rem}
.tip .tv i{display:inline-block;width:14px;height:2px;border-radius:1px}
.tip .td{color:var(--muted);font-weight:600}
.legend{display:flex;flex-wrap:wrap;gap:6px 16px;font-size:.86rem;font-weight:700;color:var(--muted);margin:4px 0 0}
.legend span{display:inline-flex;align-items:center;gap:6px}
.legend i{display:inline-block;width:16px;height:2px;border-radius:1px}
.empty{padding:22px;text-align:center;color:var(--muted);background:var(--card);border:1px dashed var(--line-2);border-radius:var(--r-card)}
.empty .ic{width:30px;height:30px;color:var(--sig-2);margin-bottom:6px}

/* ---------- sheet, toast, update ---------- */
.sheet{border:0;padding:0;border-radius:var(--r-sheet);width:min(460px,calc(100% - 24px));max-height:calc(100vh - 40px);background:var(--card);color:var(--text);box-shadow:var(--shadow-float)}
.sheet::backdrop{background:rgba(3,12,20,.6)}
.sh-h{display:flex;align-items:center;justify-content:space-between;padding:14px 10px 4px 18px}
.sh-h h2{font-size:1.6rem}
.sh-b{padding:4px 18px 18px}
.tour-art{display:grid;place-items:center;height:120px;border-radius:14px;background:var(--ink);color:var(--sig);margin-bottom:14px}
.tour-art .ic{width:54px;height:54px;stroke-width:1.5}
.toast{position:fixed;z-index:90;inset-inline:16px;bottom:calc(var(--tabh) + 16px + env(safe-area-inset-bottom,0px));margin:0 auto;max-width:420px;padding:12px 16px;border-radius:12px;background:var(--ink);color:#fff;box-shadow:var(--shadow-float);text-align:center;transition:opacity .4s,transform .4s;font-weight:600;border:1px solid rgba(255,255,255,.12)}
.toast.out{opacity:0;transform:translateY(8px)}
body:not(.app) .toast{bottom:24px}
@media (min-width:980px){.toast{bottom:24px}}
.upd{position:fixed;z-index:80;top:calc(var(--top) + 10px);inset-inline:12px;margin:0 auto;max-width:480px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px 10px 16px;border-radius:14px;background:var(--card);border:1px solid var(--line);box-shadow:var(--shadow-float);font-weight:700}
.note-112{display:flex;gap:10px;align-items:flex-start;margin-top:26px;padding:12px 14px;border-radius:12px;background:var(--crit-soft);color:var(--text);font-size:.9rem}
.note-112 .ic{color:var(--crit);margin-top:2px}
.disc{display:flex;gap:10px;align-items:flex-start;color:var(--muted);font-size:.84rem;margin-top:22px}
.disc .ic{color:var(--muted-2);margin-top:2px}

/* ---------- report (print) ---------- */
.report{background:#fff;color:#0D1B27;border:1px solid var(--line);border-radius:var(--r-card);padding:22px;box-shadow:var(--shadow)}
.report h1{font-size:2rem;color:#0D1B27}
.report h2{font-size:1.25rem;margin:18px 0 8px;color:#0D1B27}
.report .tbl th{background:#F7F9FB;color:#4F6274}
.report .tbl td,.report .tbl th{border-color:#DDE4EA;color:#0D1B27}
.report .tblw{background:#fff;border-color:#DDE4EA}
.report .rmeta{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:6px 18px;font-size:.92rem}
.report .rmeta b{display:block;font-size:.8rem;color:#4F6274}
.report .chart{--grid:#E6EBF0;--axis:#C5D0DA;--chart-1:#D6365A;--chart-surface:#fff;--muted:#4F6274;--text:#0D1B27}
@media print{
  @page{margin:14mm}
  body{background:#fff!important;padding:0!important}
  .top,.tabs,.no-print,.toast,.upd,.skip{display:none!important}
  main.with-nav{margin:0!important}
  .page{max-width:none;padding:0}
  .report{border:0;box-shadow:none;padding:0}
  .tblw{overflow:visible;border:0}
  .tbl{min-width:0;font-size:10.5pt}
  a{color:inherit;text-decoration:none}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
