/* ZeroTask customer app — component layer on the ZERONEX tokens (zeronex-bootstrap.css). No raw hex colours. */
@font-face{font-family:'Vazirmatn';font-weight:400;font-display:swap;src:url(fonts/Vazirmatn-Regular.woff2) format('woff2')}
@font-face{font-family:'Vazirmatn';font-weight:500;font-display:swap;src:url(fonts/Vazirmatn-Medium.woff2) format('woff2')}
@font-face{font-family:'Vazirmatn';font-weight:600;font-display:swap;src:url(fonts/Vazirmatn-SemiBold.woff2) format('woff2')}
@font-face{font-family:'Vazirmatn';font-weight:700;font-display:swap;src:url(fonts/Vazirmatn-Bold.woff2) format('woff2')}

html,body{height:100%}
body{background:var(--bg-canvas);color:var(--fg-primary);font-family:var(--zx-font-fa);overscroll-behavior-y:none}
a{text-decoration:none}
.zt-icon{width:1.15em;height:1.15em;vertical-align:-.2em;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.num{font-variant-numeric:tabular-nums}

/* ---------- shell ---------- */
.zt-shell{display:grid;grid-template-columns:232px 1fr;grid-template-rows:auto 1fr;min-height:100vh;min-height:100dvh}
.zt-top{grid-column:1/-1;position:sticky;top:0;z-index:30;display:flex;align-items:center;gap:var(--zx-s-3);padding:var(--zx-s-3) var(--zx-s-4);
  padding-top:max(var(--zx-s-3),env(safe-area-inset-top));background:color-mix(in srgb,var(--bg-canvas) 86%,transparent);backdrop-filter:blur(14px);border-bottom:1px solid var(--border-subtle)}
.zt-brand{display:flex;align-items:center;gap:.6rem;font-family:var(--zx-font-display);letter-spacing:.2em;font-size:.95rem;color:var(--fg-primary)}
.zt-brand b{display:grid;place-items:center;width:30px;height:30px;border-radius:9px;background:var(--grad-brand);color:var(--fg-on-brand);font-weight:600;letter-spacing:0}
.zt-top .spacer{flex:1}
.zt-side{padding:var(--zx-s-4) var(--zx-s-3);border-inline-end:1px solid var(--border-subtle);position:sticky;top:57px;align-self:start;height:calc(100vh - 57px)}
.zt-nav{display:flex;flex-direction:column;gap:2px}
.zt-nav a{display:flex;align-items:center;gap:.7rem;padding:.6rem .8rem;border-radius:var(--zx-r-sm);color:var(--fg-secondary);font-size:var(--zx-fs-base);transition:background var(--zx-d-fast),color var(--zx-d-fast)}
.zt-nav a:hover{background:var(--bg-hover);color:var(--fg-primary)}
.zt-nav a.active{background:var(--accent-soft);color:var(--fg-brand);font-weight:500}
.zt-nav .sep{height:1px;background:var(--border-subtle);margin:var(--zx-s-3) 0}
.zt-main{padding:var(--zx-s-5);min-width:0;padding-bottom:calc(var(--zx-s-7) + env(safe-area-inset-bottom))}
.zt-page-head{display:flex;flex-wrap:wrap;align-items:center;gap:var(--zx-s-3);margin-bottom:var(--zx-s-5)}
.zt-page-head h1{font-size:var(--zx-fs-h3);margin:0;font-family:var(--zx-font-fa);font-weight:600}
.zt-page-head .spacer{flex:1}
.zt-card{background:var(--bg-surface);background-image:var(--grad-surface);border:1px solid var(--border-subtle);border-radius:var(--zx-r-lg);padding:var(--zx-s-4)}
.zt-empty{text-align:center;color:var(--fg-muted);padding:var(--zx-s-7) var(--zx-s-4)}
.zt-empty .zt-icon{width:2.4rem;height:2.4rem;margin-bottom:var(--zx-s-3);color:var(--fg-disabled)}
.zt-muted{color:var(--fg-muted)}
.zt-badge-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--fg-muted);margin-inline-end:.35rem}
.p-1 .zt-badge-dot,.zt-p1{background:var(--success)}
.zt-p2{background:var(--warning)}
.zt-p3{background:var(--danger)}

/* ---------- mobile: bottom navigation ---------- */
@media (max-width: 899px){
  .zt-shell{grid-template-columns:1fr}
  .zt-side{display:none}
  .zt-main{padding:var(--zx-s-4);padding-bottom:calc(7.5rem + env(safe-area-inset-bottom))}
  .zt-hide-sm{display:none!important}
}

/* ---------- auth ---------- */
.zt-auth{min-height:100vh;min-height:100dvh;display:grid;place-items:center;padding:var(--zx-s-4);background:radial-gradient(60rem 30rem at 50% -10%,var(--accent-soft),transparent 70%)}
.zt-auth .zt-card{width:min(440px,100%);padding:var(--zx-s-6)}
.zt-auth h1{font-size:var(--zx-fs-h3);font-family:var(--zx-font-fa);font-weight:600;margin-bottom:var(--zx-s-4)}

/* ---------- boards grid ---------- */
.zt-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:var(--zx-s-4)}
.zt-board-card{display:block;color:inherit;transition:transform var(--zx-d-base) var(--zx-ease),border-color var(--zx-d-base)}
.zt-board-card:hover{transform:translateY(-3px);border-color:var(--border-strong);color:inherit}
.zt-board-card h3{font-size:var(--zx-fs-lg);font-family:var(--zx-font-fa);font-weight:600;margin:0 0 .35rem}

/* ---------- kanban ---------- */
.zt-kanban{display:flex;gap:var(--zx-s-4);align-items:flex-start;overflow-x:auto;padding-bottom:var(--zx-s-4);scroll-snap-type:x proximity;margin-inline:calc(var(--zx-s-5) * -1);padding-inline:var(--zx-s-5)}
@media (max-width:899px){.zt-kanban{margin-inline:calc(var(--zx-s-4) * -1);padding-inline:var(--zx-s-4)}}
.zt-col{flex:0 0 min(300px,84vw);scroll-snap-align:start;background:var(--bg-inset);border:1px solid var(--border-subtle);border-radius:var(--zx-r-lg);display:flex;flex-direction:column;max-height:calc(100dvh - 190px)}
.zt-col-head{display:flex;align-items:center;gap:.5rem;padding:.75rem .85rem .4rem}
.zt-col-head h2{font-size:var(--zx-fs-base);font-family:var(--zx-font-fa);font-weight:600;margin:0;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.zt-col-head .count{color:var(--fg-muted);font-size:var(--zx-fs-sm)}
.zt-col.done .zt-col-head h2{color:var(--success)}
.zt-cards{padding:.35rem .6rem;display:flex;flex-direction:column;gap:.55rem;overflow-y:auto;min-height:48px;flex:1}
.zt-card-task{background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--zx-r-md);padding:.65rem .75rem;cursor:grab;touch-action:manipulation;transition:border-color var(--zx-d-fast),box-shadow var(--zx-d-fast)}
.zt-card-task:hover{border-color:var(--border-strong);box-shadow:var(--shadow-sm)}
.zt-card-task .t{font-size:var(--zx-fs-base);line-height:1.5;word-break:break-word}
.zt-card-task.is-done .t{color:var(--fg-muted);text-decoration:line-through}
.zt-card-task .meta{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:.45rem;font-size:var(--zx-fs-xs);color:var(--fg-muted);align-items:center}
.zt-chip{display:inline-flex;align-items:center;gap:.25rem;padding:.1rem .5rem;border-radius:var(--zx-r-pill);background:var(--bg-inset);border:1px solid var(--border-subtle);font-size:var(--zx-fs-xs);color:var(--fg-secondary)}
.zt-chip.overdue{color:var(--danger);border-color:color-mix(in srgb,var(--danger) 35%,transparent);background:var(--danger-soft)}
.zt-chip.soon{color:var(--warning);background:var(--warning-soft);border-color:transparent}
.zt-add{padding:.4rem .6rem .7rem}
.zt-add input{background:transparent;border-style:dashed;font-size:var(--zx-fs-sm)}
.sortable-ghost{opacity:.35}
.sortable-chosen{cursor:grabbing}
.zt-filterbar{display:flex;flex-wrap:wrap;gap:var(--zx-s-2);margin-bottom:var(--zx-s-4)}
.zt-filterbar .form-control,.zt-filterbar .form-select{width:auto;min-width:130px;flex:0 1 auto}
.zt-filterbar .search{flex:1 1 180px}

/* ---------- calendar ---------- */
.zt-cal{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:1px;background:var(--border-subtle);border:1px solid var(--border-subtle);border-radius:var(--zx-r-lg);overflow:hidden}
.zt-cal .dow{background:var(--bg-surface);text-align:center;padding:.5rem 0;font-size:var(--zx-fs-xs);color:var(--fg-muted)}
.zt-cal .day{background:var(--bg-canvas);min-height:104px;padding:.3rem;display:flex;flex-direction:column;gap:.2rem;min-width:0}
.zt-cal .day.out{background:var(--bg-sunken);opacity:.55}
.zt-cal .day.today .n{background:var(--accent);color:var(--fg-on-brand)}
.zt-cal .day .n{width:1.6rem;height:1.6rem;display:grid;place-items:center;border-radius:50%;font-size:var(--zx-fs-sm);color:var(--fg-secondary)}
.zt-cal .ev{font-size:var(--zx-fs-xs);padding:.15rem .4rem;border-radius:var(--zx-r-xs);background:var(--accent-soft);color:var(--fg-primary);border-inline-start:3px solid var(--accent);cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.zt-cal .ev.p3{border-inline-start-color:var(--danger)}.zt-cal .ev.p1{border-inline-start-color:var(--success)}
.zt-cal .ev.done{opacity:.55;text-decoration:line-through}
.zt-cal .evs{display:flex;flex-direction:column;gap:2px;flex:1;min-height:20px}
@media (max-width:899px){.zt-cal .day{min-height:72px}.zt-cal .ev{padding:.1rem .25rem}}

/* ---------- stats ---------- */
.zt-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:var(--zx-s-3);margin-bottom:var(--zx-s-4)}
.zt-stat .v{font-size:2rem;font-family:var(--zx-font-display);font-weight:300;line-height:1.1}
.zt-stat .l{color:var(--fg-muted);font-size:var(--zx-fs-sm)}
.zt-stat.bad .v{color:var(--danger)}.zt-stat.good .v{color:var(--success)}
.zt-bar{height:8px;border-radius:99px;background:var(--bg-inset);overflow:hidden}
.zt-bar>i{display:block;height:100%;background:var(--grad-brand);border-radius:99px}
.zt-bar.warn>i{background:var(--warning)}.zt-bar.bad>i{background:var(--danger)}
.zt-trend{display:flex;align-items:flex-end;gap:var(--zx-s-2);height:120px}
.zt-trend .col{flex:1;display:flex;flex-direction:column;align-items:center;gap:4px;height:100%;justify-content:flex-end}
.zt-trend .bars{display:flex;align-items:flex-end;gap:3px;height:100%;width:100%;justify-content:center}
.zt-trend .bars i{display:block;width:34%;max-width:16px;border-radius:4px 4px 0 0;min-height:2px}
.zt-trend .bars i.c{background:var(--accent)}.zt-trend .bars i.d{background:var(--success)}
.zt-trend small{color:var(--fg-muted);font-size:var(--zx-fs-xs)}

/* ---------- misc ---------- */
.zt-row{display:flex;align-items:center;gap:var(--zx-s-3);padding:.65rem 0;border-bottom:1px solid var(--border-subtle)}
.zt-row:last-child{border-bottom:0}
.zt-row .grow{flex:1;min-width:0}
.zt-comment{padding:.5rem .7rem;background:var(--bg-inset);border-radius:var(--zx-r-sm);margin-bottom:.4rem}
.zt-comment small{color:var(--fg-muted)}
.zt-plan{display:flex;flex-direction:column;gap:.5rem}
.zt-plan .price{font-size:1.6rem;font-family:var(--zx-font-display);font-weight:300}
.modal-content{background:var(--bg-surface);border:1px solid var(--border-default)}
.form-label{font-size:var(--zx-fs-sm);color:var(--fg-secondary)}
dialog,.modal{--bs-modal-bg:var(--bg-surface)}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}

/* toasts must never cover the phone's bottom navigation */
#toasts{max-width:100vw}
@media (max-width: 899px){#toasts{bottom:calc(6.2rem + env(safe-area-inset-bottom))!important;inset-inline:0!important;padding:.5rem!important}#toasts .toast{width:100%}}
.zt-page-head .btn{white-space:nowrap}
.zt-filterbar .form-select{min-width:160px;text-overflow:ellipsis}


/* ---------- native-style tab bar (phones) ---------- */
html{-webkit-tap-highlight-color:transparent}
.zt-tabbar{display:none}
body.zt-lock{overflow:hidden;touch-action:none}
@media (max-width: 899px){
  body.zt-has-tabbar{overscroll-behavior-y:none}
  .zt-tabbar{--slot:0;position:fixed;z-index:50;inset-inline:12px;bottom:calc(10px + env(safe-area-inset-bottom));height:64px;display:grid;grid-template-columns:repeat(5,1fr);align-items:center;
    border-radius:26px;background:color-mix(in srgb,var(--bg-surface) 78%,transparent);-webkit-backdrop-filter:blur(22px) saturate(1.6);backdrop-filter:blur(22px) saturate(1.6);
    border:1px solid var(--border-default);box-shadow:0 12px 34px rgba(0,0,0,.28),0 1px 0 rgba(255,255,255,.06) inset;
    transition:transform .38s cubic-bezier(.2,.9,.25,1),opacity .25s;-webkit-user-select:none;user-select:none;touch-action:manipulation}
  .zt-tabbar[hidden]{display:none}
  .zt-tabbar.zt-tab-hide{transform:translateY(calc(100% + 28px + env(safe-area-inset-bottom)))}
  body.zt-kb .zt-tabbar{transform:translateY(calc(100% + 28px + env(safe-area-inset-bottom)));opacity:0;pointer-events:none}
  .zt-tab-ind{position:absolute;top:8px;bottom:8px;width:calc(20% - 8px);inset-inline-start:calc(var(--slot) * 20% + 4px);border-radius:19px;
    background:var(--accent-soft);box-shadow:0 0 0 1px color-mix(in srgb,var(--fg-brand) 28%,transparent) inset;transition:inset-inline-start .42s cubic-bezier(.34,1.5,.5,1)}
  .zt-tab{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;height:100%;border:0;background:none;color:var(--fg-muted);
    font:inherit;font-size:10.5px;line-height:1;cursor:pointer;text-decoration:none;overflow:hidden;border-radius:22px;transition:color .2s}
  .zt-tab .zt-icon{width:22px;height:22px;transition:transform .35s cubic-bezier(.34,1.8,.5,1),stroke-width .2s,fill .2s}
  .zt-tab.active{color:var(--fg-brand);font-weight:600}
  .zt-tab.active .zt-icon{transform:translateY(-1px) scale(1.14);stroke-width:2.3;fill:color-mix(in srgb,var(--fg-brand) 22%,transparent)}
  .zt-tab:active .zt-icon{transform:scale(.82)}
  .zt-tab::after{content:'';position:absolute;inset:0;border-radius:inherit;background:radial-gradient(circle at 50% 50%,color-mix(in srgb,var(--fg-brand) 30%,transparent),transparent 62%);opacity:0;transform:scale(.4);transition:opacity .35s,transform .45s}
  .zt-tab:active::after{opacity:1;transform:scale(1.15);transition:none}
  .zt-fab{position:relative;z-index:2;justify-self:center;display:grid;place-items:center;width:58px;height:58px;margin-top:-26px;border:0;border-radius:50%;color:var(--fg-on-brand);background:var(--grad-brand);
    box-shadow:0 10px 24px color-mix(in srgb,var(--fg-brand) 45%,transparent),0 0 0 5px color-mix(in srgb,var(--bg-canvas) 92%,transparent);transition:transform .3s cubic-bezier(.34,1.8,.5,1),box-shadow .3s;cursor:pointer}
  .zt-fab .zt-icon{width:26px;height:26px;stroke-width:2.6;transition:transform .35s cubic-bezier(.34,1.8,.5,1)}
  .zt-fab:active{transform:scale(.88)}
  .zt-fab:active .zt-icon{transform:rotate(90deg)}
  .zt-tab:focus-visible,.zt-fab:focus-visible{outline:2px solid var(--fg-brand);outline-offset:-3px}
}

/* ---------- bottom sheet ---------- */
.zt-sheet-back{position:fixed;inset:0;z-index:60;background:rgba(2,8,8,.5);opacity:0;transition:opacity .3s;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}
.zt-sheet-back.open{opacity:1}
.zt-sheet{position:fixed;z-index:61;inset-inline:0;bottom:0;margin-inline:auto;width:min(560px,100%);max-height:88dvh;display:flex;flex-direction:column;background:var(--bg-surface);
  border:1px solid var(--border-default);border-bottom:0;border-radius:26px 26px 0 0;box-shadow:0 -14px 40px rgba(0,0,0,.35);transform:translateY(105%);transition:transform .42s cubic-bezier(.2,.9,.25,1);
  padding-bottom:env(safe-area-inset-bottom);touch-action:pan-y}
.zt-sheet.open{transform:translateY(0)}
.zt-sheet-grab{padding:10px 0 4px;display:grid;place-items:center;cursor:grab;touch-action:none}
.zt-sheet-grab span{width:42px;height:5px;border-radius:3px;background:var(--border-strong)}
.zt-sheet-head{display:flex;align-items:center;justify-content:space-between;padding:4px 18px 10px;touch-action:none}
.zt-sheet-head h2{font-size:var(--zx-fs-lg);font-family:var(--zx-font-fa);font-weight:600;margin:0}
.zt-sheet-body{padding:4px 18px 18px;overflow-y:auto;overscroll-behavior:contain}
.zt-tiles{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.zt-tile{display:flex;flex-direction:column;align-items:center;gap:8px;padding:14px 6px;border:1px solid var(--border-subtle);border-radius:18px;background:var(--bg-inset,transparent);color:var(--fg-secondary);
  font:inherit;font-size:var(--zx-fs-sm);text-decoration:none;cursor:pointer;transition:transform .2s cubic-bezier(.34,1.8,.5,1),border-color .2s,background .2s}
.zt-tile:active{transform:scale(.92)}
.zt-tile.active{border-color:var(--fg-brand);color:var(--fg-brand);background:var(--accent-soft)}
.zt-tile-ic{display:grid;place-items:center;width:46px;height:46px;border-radius:14px;background:var(--accent-soft);color:var(--fg-brand)}
.zt-tile-ic .zt-icon{width:22px;height:22px}
.zt-tile.is-danger{color:var(--danger)}.zt-tile.is-danger .zt-tile-ic{background:color-mix(in srgb,var(--danger) 16%,transparent);color:var(--danger)}
.zt-qa-row{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}
.zt-seg{display:flex;gap:6px;padding:4px;border-radius:14px;background:var(--bg-inset,var(--bg-hover))}
.zt-seg button{flex:1;border:0;border-radius:11px;padding:9px 4px;background:transparent;color:var(--fg-secondary);font:inherit;font-size:var(--zx-fs-sm);transition:background .2s,color .2s,transform .2s cubic-bezier(.34,1.8,.5,1)}
.zt-seg button:active{transform:scale(.94)}
.zt-seg button.on{background:var(--bg-surface);color:var(--fg-brand);font-weight:600;box-shadow:0 1px 6px rgba(0,0,0,.18)}
@media (prefers-reduced-motion: reduce){
  .zt-tabbar,.zt-tab-ind,.zt-tab .zt-icon,.zt-fab,.zt-fab .zt-icon,.zt-sheet,.zt-sheet-back,.zt-tile,.zt-seg button{transition:none!important}
}


/* ---------- date + time field ---------- */
.zt-dt{position:relative}
.zt-dt-btn{display:flex;align-items:center;gap:.6rem;text-align:start;cursor:pointer;min-height:42px}
.zt-dt-btn .grow{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.zt-dt-btn .zt-icon{width:18px;height:18px;color:var(--fg-muted);flex:0 0 auto}
.zt-dt:not(.has-value) .zt-dt-btn .grow{color:var(--fg-muted)}
.zt-dt-x{display:none;place-items:center;width:26px;height:26px;border-radius:50%;color:var(--fg-muted)}
.zt-dt.has-value .zt-dt-x{display:grid}
.zt-dt-x:hover{background:var(--bg-hover);color:var(--danger)}
.zt-dt-panel{margin-top:8px;padding:12px;border:1px solid var(--border-default);border-radius:18px;background:var(--bg-surface);box-shadow:0 8px 24px rgba(0,0,0,.18);animation:ztDtIn .22s cubic-bezier(.2,.9,.25,1)}
.zt-dt-panel[hidden]{display:none}
@keyframes ztDtIn{from{opacity:0;transform:translateY(-6px) scale(.98)}to{opacity:1;transform:none}}
.zt-dt-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}
.zt-dt-title{font-weight:600}
.zt-dt-dow,.zt-dt-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;text-align:center}
.zt-dt-dow span{font-size:var(--zx-fs-xs);color:var(--fg-muted);padding:4px 0}
.zt-dt-cell{aspect-ratio:1;min-height:38px;border:0;border-radius:50%;background:transparent;color:var(--fg-primary);font:inherit;transition:background .15s,transform .2s cubic-bezier(.34,1.8,.5,1)}
.zt-dt-cell:hover{background:var(--bg-hover)}
.zt-dt-cell:active{transform:scale(.86)}
.zt-dt-cell.today{box-shadow:0 0 0 1.5px var(--fg-brand) inset;color:var(--fg-brand)}
.zt-dt-cell.sel{background:var(--grad-brand);color:var(--fg-on-brand);font-weight:600;box-shadow:0 4px 12px color-mix(in srgb,var(--fg-brand) 40%,transparent)}
.zt-dt-foot{display:flex;align-items:center;gap:8px;margin-top:10px;flex-wrap:wrap}
.zt-dt-time{width:auto;flex:1;min-width:110px}
@media (prefers-reduced-motion: reduce){.zt-dt-panel,.zt-dt-cell{animation:none!important;transition:none!important}}

/* ---------- groups of G ---------- */
.zt-nav-title{padding:.9rem .8rem .3rem;font-size:var(--zx-fs-xs);color:var(--fg-muted);font-weight:600}
.zt-side{overflow-y:auto}
.zt-sheet-sec{margin:14px 2px 8px;font-size:var(--zx-fs-xs);color:var(--fg-muted);font-weight:600}
.zt-md h3{font-size:1.15rem;margin:.6rem 0 .3rem}.zt-md h4{font-size:1rem;margin:.5rem 0 .25rem}.zt-md p{margin:.2rem 0}.zt-md ul{margin:.2rem 0;padding-inline-start:1.3rem}
.zt-mm-wrap{overflow:auto;border:1px solid var(--border-subtle);border-radius:14px;background:var(--bg-inset);max-height:62vh;padding:8px}
.zt-mm-wrap:focus-visible{outline:2px solid var(--fg-brand)}
.zt-mm{display:block}
.zt-mm .edge{fill:none;stroke:var(--border-strong);stroke-width:1.6}
.zt-mm .node rect{fill:var(--bg-surface);stroke:var(--border-strong);stroke-width:1.4;cursor:pointer;transition:fill .15s,stroke .15s}
.zt-mm .node text{fill:var(--fg-primary);font-size:13px;pointer-events:none}
.zt-mm .node.root rect{fill:var(--accent-soft);stroke:var(--fg-brand)}
.zt-mm .node.sel rect{stroke:var(--fg-brand);stroke-width:2.6}

/* ---- G+: journal, charts, dashboard */
.zt-moods{display:flex;gap:.5rem;flex-wrap:wrap}
.zt-mood{font-size:1.7rem;line-height:1;width:3.2rem;height:3.2rem;border-radius:var(--zx-r-lg);border:1px solid var(--border-subtle);background:var(--bg-inset);transition:transform .12s,background .12s}
.zt-mood.on{background:var(--grad-brand);border-color:transparent;transform:scale(1.08);box-shadow:var(--shadow-sm,0 2px 8px #0003)}
.zt-emos{display:grid;grid-template-columns:repeat(auto-fill,minmax(5.2rem,1fr));gap:.5rem}
.zt-emo{display:flex;flex-direction:column;align-items:center;gap:.15rem;padding:.55rem .25rem;border-radius:var(--zx-r-lg);border:1px solid var(--border-subtle);background:var(--bg-inset);color:inherit;transition:transform .12s,background .12s}
.zt-emo .e{font-size:1.65rem;line-height:1}.zt-emo .l{font-size:.78rem}
.zt-emo.on{background:var(--grad-brand);border-color:transparent;color:#fff;transform:translateY(-2px);box-shadow:0 4px 14px #0003}
.zt-emoline{letter-spacing:.1rem}
.zt-chart{width:100%}
.zt-line{width:100%;height:110px;display:block}
.zt-chart-ax{display:flex;justify-content:space-between;gap:.5rem;margin-top:.25rem}
.zt-bars{display:flex;align-items:flex-end;gap:3px;height:120px;padding-bottom:1.1rem;position:relative}
.zt-bars.dense{gap:1px;padding-bottom:0}
.zt-bcol{flex:1;height:100%;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;min-width:0;position:relative}
.zt-bfill{width:100%;max-width:26px;background:var(--grad-brand);border-radius:4px 4px 0 0;min-height:0}
.zt-blab{position:absolute;bottom:-1.1rem;font-size:.62rem;color:var(--fg-muted);white-space:nowrap}
.zt-kpi{position:relative;transition:transform .12s,border-color .12s;color:inherit}.zt-kpi:hover{transform:translateY(-2px);border-color:var(--brand)}
.zt-kpi .v{font-size:1.45rem}.zt-kpi-ic{position:absolute;top:.7rem;inset-inline-end:.7rem;color:var(--brand);opacity:.7}
.zt-wake{border-inline-start:4px solid var(--warning)}.zt-wake-ic{font-size:1.6rem;color:var(--warning)}
.zt-sets{display:grid;gap:.35rem}.zt-set{display:grid;grid-template-columns:2fr 1fr 1fr 1fr auto;gap:.35rem}
.zt-subrow{padding:.2rem 0 .6rem 0;border-bottom:1px solid var(--border-subtle)}
.zt-note-line{padding:.35rem .6rem;margin-top:.3rem;border-inline-start:3px solid var(--brand);background:var(--bg-inset);border-radius:6px;white-space:pre-wrap}
.zt-chip-x{border:0;background:none;color:inherit;opacity:.6;margin-inline-start:.3rem;padding:0 .2rem;cursor:pointer}

/* ---- H.6/H.7: labels, avatars, table/list/timeline views, search */
.zt-label{border-color:var(--lc,var(--brand));background:color-mix(in srgb,var(--lc,var(--brand)) 14%,transparent)}
.zt-label.on{background:var(--lc,var(--brand));color:#fff}
button.zt-label{cursor:pointer}
.zt-avatars{display:inline-flex}.zt-avatars i{width:1.4rem;height:1.4rem;border-radius:50%;background:var(--grad-brand);color:#fff;font-style:normal;font-size:.7rem;display:inline-flex;align-items:center;justify-content:center;margin-inline-start:-.35rem;border:2px solid var(--bg-surface)}
.zt-viewsbar{display:flex;gap:.4rem;flex-wrap:wrap;align-items:center;margin-bottom:.75rem}
.zt-tablewrap{overflow-x:auto}.zt-clickrow{cursor:pointer}.zt-clickrow:hover,.zt-clickrow:focus{background:var(--bg-inset)}
.zt-timeline{overflow-x:auto}
.zt-tl-axis{position:relative;height:1.6rem;margin-inline-start:10rem;border-bottom:1px solid var(--border-subtle);font-size:.7rem;color:var(--fg-muted)}
.zt-tl-axis span{position:absolute;transform:translateX(50%)}
.zt-tl-rows{position:relative;min-width:42rem}
.zt-tl-row{display:flex;align-items:center;height:2.1rem;border-bottom:1px dashed var(--border-subtle)}
.zt-tl-name{flex:0 0 10rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:.85rem;padding-inline-end:.5rem}
.zt-tl-track{position:relative;flex:1;height:100%}
.zt-tl-bar{position:absolute;top:.5rem;height:1.1rem;border:0;border-radius:99px;background:var(--grad-brand);opacity:.9}
.zt-tl-bar.zt-p3{background:var(--danger)}.zt-tl-bar.zt-p1{background:var(--fg-muted)}.zt-tl-bar.done{opacity:.4}.zt-tl-bar.late{outline:2px solid var(--danger)}
.zt-tl-now{position:absolute;top:0;bottom:0;width:2px;background:var(--warning);z-index:1;pointer-events:none}
.zt-result:hover{background:var(--bg-inset)}

/* ---- H.1: assistant chat */
.zt-chatlog{display:flex;flex-direction:column;gap:.6rem;min-height:18rem;max-height:60vh;overflow-y:auto;padding:.25rem}
.zt-bubble{max-width:85%;padding:.6rem .85rem;border-radius:var(--zx-r-lg);background:var(--bg-inset);align-self:flex-start;white-space:pre-wrap}
.zt-bubble.user{align-self:flex-end;background:var(--grad-brand);color:#fff}
.zt-action{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap;margin-top:.5rem;padding:.5rem .65rem;border-radius:var(--zx-r-md,10px);background:var(--bg-surface);border:1px solid var(--border-subtle);color:var(--fg)}
.zt-action.decided{opacity:.7}

/* ---------- tokens page ---------- */
.zt-credit-hero{display:grid;gap:var(--zx-s-5);grid-template-columns:1fr}
@media (min-width:900px){.zt-credit-hero{grid-template-columns:1fr 1fr 1.2fr;align-items:center}}
.zt-credit-bal b{font-family:var(--zx-font-display);font-size:2.6rem;font-weight:300;color:var(--fg-brand);line-height:1.1}
.zt-credit-worth{display:grid;gap:.2rem}
.zt-credit-free{display:grid;gap:.3rem}

/* ---------- assistant: status, voice ---------- */
.zt-aistatus{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:.6rem}
.zt-chip{display:inline-flex;align-items:center;gap:.3rem;padding:.2rem .7rem;border-radius:var(--zx-r-pill);background:var(--bg-inset);border:1px solid var(--border-subtle);color:var(--fg-secondary);font-size:.8rem}
.zt-chip.on{color:var(--fg-brand);border-color:var(--border-default)}
.zt-mic.rec{background:var(--danger);border-color:var(--danger);color:#fff;animation:ztpulse 1.2s infinite}
@keyframes ztpulse{50%{box-shadow:0 0 0 8px rgba(212,91,86,.18)}}
.zt-recbar{display:flex;align-items:center;gap:.6rem;padding:.5rem .8rem;margin-top:.5rem;border:1px solid var(--border-default);border-radius:var(--zx-r-md);background:var(--bg-inset)}
.zt-recbar.d-none{display:none!important}
.zt-recdot{width:10px;height:10px;border-radius:50%;background:var(--danger);animation:ztpulse 1.2s infinite}
.zt-speak{margin-top:.4rem}
@media (prefers-reduced-motion:reduce){.zt-mic.rec,.zt-recdot{animation:none}}
