/* SHAUX standalone app layout: auth screens, sidebar, top bar, views, bottom tabs, PWA bits. */
.ct-splash{position:fixed;inset:0;display:grid;place-content:center;justify-items:center;gap:14px;background:#fff;z-index:90;color:var(--muted);font-weight:600}
.ct-splash img{width:80px;height:auto;animation:ctpulse 1.4s ease-in-out infinite}
@keyframes ctpulse{50%{opacity:.45;transform:scale(.96)}}
/* icons */
.sh svg:where(:not(.et-bars,.et-donut)),.au svg,.bt svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;flex:none}
#i-up path{stroke-linejoin:round}
.et-btn svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;margin-right:2px;vertical-align:-3px}

/* ---------- announcement ---------- */
.ct-ann{position:sticky;top:0;z-index:70;display:flex;justify-content:center;align-items:center;gap:12px;padding:9px 48px 9px 16px;font-size:.88rem;font-weight:600;text-align:center;background:#eaf4fd;color:#123a62;border-bottom:1px solid #cfe3f6}
.ct-ann.lv-warn{background:#fff6e0;color:#5f4100;border-color:#f3dfaa}.ct-ann.lv-ok{background:#e3f6ec;color:#0f5132;border-color:#bfe6cf}
.ct-ann button{position:absolute;right:10px;top:50%;transform:translateY(-50%);border:0;background:none;font-size:1.3rem;line-height:1;cursor:pointer;color:inherit;padding:4px 8px;border-radius:8px}
.ct-ann button:hover{background:rgba(0,0,0,.06)}

/* ---------- auth ---------- */
.au{min-height:100vh;display:grid;grid-template-columns:minmax(320px,.95fr) 1.05fr}
.au-side{background:var(--grad);color:#fff;padding:44px 48px;display:flex;flex-direction:column;gap:18px;position:relative;overflow:hidden}
.au-side:after{content:"";position:absolute;right:-140px;bottom:-140px;width:420px;height:420px;border-radius:50%;background:radial-gradient(circle,rgba(127,209,255,.35),transparent 70%)}
.au-brand{display:inline-flex;align-items:center;gap:10px;font-family:"Plus Jakarta Sans",Inter,sans-serif;font-size:1.15rem;font-weight:700;color:inherit;text-decoration:none!important}
.au-side .au-brand img{background:#fff;border-radius:10px;padding:5px 6px;width:58px;height:auto}
.au-brand b{font-weight:800}
.au-h{font-family:"Plus Jakarta Sans",Inter,sans-serif;font-weight:800;line-height:1.15;letter-spacing:-.02em;font-size:clamp(1.8rem,3vw,2.5rem);margin-top:auto;max-width:15ch}
.au-p{opacity:.9;max-width:44ch;font-size:1.02rem}
.au-list{display:grid;gap:10px;margin-bottom:auto}.au-list li{display:flex;gap:10px;align-items:center;font-weight:600}
.au-list svg{background:rgba(255,255,255,.18);border-radius:50%;padding:3px;width:22px!important;height:22px!important}
.au-by{font-size:.85rem;opacity:.8}.au-by a{color:#fff;text-decoration:underline}
.au-main{display:flex;flex-direction:column;justify-content:center;align-items:center;padding:40px 20px;gap:16px}
.au-card{background:#fff;border-radius:22px;box-shadow:var(--shadow-md);border:1px solid var(--line);padding:28px;width:min(440px,100%)}
.au-brand-m{display:none;margin-bottom:14px;color:var(--ink)}.au-brand-m img{width:54px;height:auto}
.au-tabs{display:grid;grid-template-columns:1fr 1fr;background:#f1f4f9;border-radius:12px;padding:4px;margin-bottom:18px}
.au-tabs a{text-align:center;font-weight:700;padding:9px;border-radius:9px;color:var(--muted);text-decoration:none!important}
.au-tabs a[aria-selected=true]{background:#fff;color:var(--ink);box-shadow:0 2px 8px rgba(15,22,48,.08)}
.au-form{display:grid;gap:12px}.au-form h2{font-size:1.35rem}.au-sub{color:var(--muted);font-size:.92rem;margin-top:-8px}
.au-form .et-field>span{display:flex;justify-content:space-between;align-items:baseline;gap:8px}
.au-form input{width:100%;min-height:46px}
.au-link{font-weight:600;font-size:.85rem}
.au-btn{width:100%;justify-content:center;min-height:48px;font-size:1rem}
.au-err{min-height:1.2em;color:#b42318;font-size:.88rem;font-weight:600}.au-err:empty{min-height:0}.au-err.au-ok{color:#0f6b3e}
.au-alt,.au-fine{font-size:.85rem;color:var(--muted);text-align:center}
.au-invite{display:flex;gap:10px;align-items:flex-start;background:#eef6fd;color:#163c62;border-radius:12px;padding:10px 12px;margin-bottom:14px;font-size:.88rem;font-weight:600}
.au-demo{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:18px;padding:14px;border-radius:14px;background:#f6f4fe;border:1px dashed #b9aef0}
.au-demo b{display:block}.au-demo span{font-size:.86rem;color:var(--muted)}.au-demo code{background:#fff;padding:1px 6px;border-radius:6px;color:var(--ink)}
.au-foot{font-size:.85rem;color:var(--muted)}.au-foot a{color:var(--muted);text-decoration:underline}

/* ---------- app shell ---------- */
.sh{display:grid;grid-template-columns:var(--sd-w) minmax(0,1fr);min-height:100vh}
.sd-scrim{position:fixed;inset:0;background:rgba(8,12,30,.45);z-index:35}
.mn{min-width:0;display:flex;flex-direction:column}
/* top bar */
.tb{position:sticky;top:0;z-index:30;display:flex;align-items:center;gap:14px;min-height:var(--tb-h);padding:10px 26px;background:rgba(255,255,255,.92);backdrop-filter:saturate(1.4) blur(10px);border-bottom:1px solid var(--line)}
.ct-ann:not([hidden])~.sh .tb{top:0}
.tb-brand{display:none}.tb-brand img{width:40px;height:auto}
.tb-ws{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1 1 auto}
.tb-ws select{max-width:340px}
.tb-usage{width:170px;flex:none}
.tb-add{flex:none}
.tb-acct{display:flex;align-items:center;gap:8px;border:1.5px solid var(--line);background:#fff;border-radius:99px;padding:4px 12px 4px 4px;cursor:pointer;font-weight:700}
.tb-acct:hover{border-color:var(--blue)}
.ct-menu .ct-mi{display:flex;align-items:center;gap:8px;padding:9px 12px;border-radius:9px;color:var(--ink);font-weight:600;text-decoration:none!important}
.ct-menu .ct-mi:hover{background:#f3f6fb}
.ct-admin-mi{color:var(--navy)!important;border-top:1px solid var(--line);border-radius:0 0 9px 9px!important;margin-top:4px}
.ct-admin-mi svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:2}
/* main */
.ct-app{padding:22px 26px 60px;max-width:1320px;width:100%}
.ph{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;flex-wrap:wrap;margin-bottom:16px}
.ph h1{font-size:1.65rem}.ph-sub{color:var(--muted);font-size:.9rem}
.ph-tools{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.ph-tools .et-range-custom{display:flex;gap:8px}
.ct-banners{display:grid;gap:10px;margin-bottom:12px}.ct-banners:empty{display:none}
.et-banner.ct-off{background:#fff3e6;color:#6b3a00;border-color:#f4d3ad}
#ct-readonly.ct-imp{background:#0d1433;color:#fff;border-color:#0d1433;display:flex;justify-content:space-between;align-items:center;gap:12px}
body.ct-imp-mode .tb{box-shadow:inset 0 -3px 0 #f2a33a}
body.ct-imp-mode #v-settings form,body.ct-imp-mode #v-sharing form,body.ct-imp-mode #ct-members,body.ct-imp-mode #ct-code-btn,body.ct-imp-mode #et-clear,body.ct-imp-mode #et-currency{opacity:.55;pointer-events:none}
.vw{animation:vwin .18s ease-out}@keyframes vwin{from{opacity:0;transform:translateY(4px)}}
.vw>.et-panel+.et-panel,.vw>.et-panel+.dg,.vw>.dg+.et-panel{margin-top:18px}
.dg{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:18px;margin-top:18px}
.dg.dg2{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
#v-import .dg,#v-sharing .dg,#v-settings .dg{margin-top:0}
.sh-side{display:grid;gap:18px;align-content:start}
.et-ph{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;flex-wrap:wrap}
.tx-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
/* recent */
.rc{display:grid}.rc li{display:flex;align-items:center;gap:12px;padding:10px 2px;border-bottom:1px solid #eef1f6}.rc li:last-child{border-bottom:0}
.rc-ic{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;font-weight:800;flex:none}
.rc-ic.inc{background:#e3f6ec;color:#0f6b3e}.rc-ic.exp{background:#fdecea;color:#b42318}
.rc-n{display:grid;min-width:0;flex:1}.rc-n b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:.92rem}.rc-n small{color:var(--muted);font-size:.8rem}
.rc-a{font-weight:800;font-variant-numeric:tabular-nums;white-space:nowrap}.rc-a.inc{color:#0f6b3e}.rc-a.exp{color:#b42318}
/* months table */
table.mo{width:100%;border-collapse:collapse;font-size:.92rem}
table.mo th,table.mo td{padding:9px 10px;border-bottom:1px solid #eef1f6;text-align:left}
table.mo th{font-size:.74rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
table.mo .num{text-align:right;font-variant-numeric:tabular-nums}table.mo .neg{color:#b42318}table.mo .pos{color:#0f6b3e}
table.mo tfoot th,table.mo tfoot td{border-top:2px solid var(--line);border-bottom:0}
/* import */
.imp-drop{text-align:center;border:2px dashed #c9d6ea;background:#fbfcfe;display:grid;justify-items:center;gap:10px;transition:border-color .15s,background .15s}
.imp-drop.drag{border-color:var(--blue);background:#eef6fd}
.imp-ic{width:46px!important;height:46px!important;color:var(--blue);background:#eaf4fd;border-radius:14px;padding:10px}
.imp-or{font-size:.82rem}
.imp-list{display:grid;gap:8px;margin-top:10px}.imp-list li{padding-left:22px;position:relative;font-size:.92rem}
.imp-list li:before{content:"";position:absolute;left:4px;top:.55em;width:8px;height:8px;border-radius:50%;background:var(--blue)}
.soon{display:inline-block;font-size:.7rem;font-weight:800;text-transform:uppercase;letter-spacing:.06em;background:#fff3d6;color:#7a5200;padding:2px 8px;border-radius:99px;vertical-align:middle;margin-left:6px}
.rp-head{display:flex;justify-content:space-between;align-items:center;gap:14px;flex-wrap:wrap}
/* sharing */
.ct-rl{display:grid;gap:10px}.ct-rl li{font-size:.9rem;color:var(--muted)}.ct-rl .ct-role{margin-right:8px}
#ct-share-modal h3{font-size:.95rem;margin:18px 0 8px}
/* settings */
.st-dl{display:grid;grid-template-columns:110px 1fr;gap:6px 12px;margin-top:8px}.st-dl dt{color:var(--muted)}.st-dl dd{font-weight:600;overflow-wrap:anywhere}
.st-install{margin-top:18px;padding-top:16px;border-top:1px solid var(--line)}
.st-row{display:flex;justify-content:space-between;align-items:center;gap:12px;padding-bottom:16px;margin-bottom:16px;border-bottom:1px solid var(--line)}
.st-danger{border-color:#f0c2b9}.st-danger h2{color:#a12a1e}
#v-settings .dg>div{display:grid;gap:18px;align-content:start}
#ct-pw-modal,#ct-del-modal{margin:0}
.et-check{display:flex;align-items:center;gap:8px;font-size:.9rem;color:var(--muted);cursor:pointer}
/* upgrade */
.up-cur{margin-top:12px;font-weight:800;color:#0f6b3e;font-size:.88rem}
.up-p+.et-cta{margin-top:18px}
/* add dialog */
.ct-addm{width:min(560px,calc(100% - 24px))}
.ct-addm .et-form-wrap{position:static;box-shadow:none;border:0;padding:0;background:none}
body.ct-cant-add .bt-add{visibility:hidden}

/* ---------- bottom tab bar (mobile) ---------- */
.bt{display:none}
@media (max-width:1100px){
 .tb-usage{width:140px}.tb-uname{display:none}.tb-acct{padding:4px}
}
@media (max-width:860px){
 .sh{grid-template-columns:1fr}
 .sd{position:fixed;left:0;top:0;bottom:0;width:min(290px,84vw);transform:translateX(-102%);transition:transform .22s ease;box-shadow:var(--shadow-lg)}
 body.sd-open .sd{transform:none}
 .tb{padding:8px 14px;gap:10px;min-height:58px}
 .tb-brand{display:block;flex:none}
 .tb-ws .ct-meta{display:none}.tb-ws select{max-width:100%;width:100%;font-size:.88rem;padding:7px 8px}
 .tb-add{display:none!important}
 .tb-usage{width:96px}.ct-usage .ct-up{display:none}
 .ct-app{padding:16px 14px calc(var(--bt-h) + 30px + var(--safe-b))}
 .ph{margin-bottom:12px}.ph h1{font-size:1.35rem}
 .dg,.dg.dg2{grid-template-columns:minmax(0,1fr);gap:14px;margin-top:14px}
 .bt{display:grid;grid-template-columns:repeat(5,1fr);align-items:end;position:fixed;left:0;right:0;bottom:0;z-index:45;background:rgba(255,255,255,.96);backdrop-filter:blur(10px);border-top:1px solid var(--line);padding:6px 6px calc(6px + var(--safe-b));min-height:var(--bt-h)}
 .bt a,.bt>button{display:flex;flex-direction:column;align-items:center;gap:2px;font-size:.7rem;font-weight:700;color:var(--muted);background:none;border:0;padding:4px 0;text-decoration:none!important;cursor:pointer}
 .bt a svg,.bt>button svg{width:22px;height:22px}
 .bt a.on{color:var(--navy)}
 .bt .bt-add{justify-self:center;width:54px;height:54px;border-radius:50%;background:var(--grad);color:#fff;display:grid;place-items:center;transform:translateY(-14px);box-shadow:0 10px 24px rgba(27,125,193,.4);padding:0}
 .bt .bt-add svg{width:26px;height:26px;stroke-width:2.6}
 .et-toast{bottom:calc(var(--bt-h) + 18px + var(--safe-b))}
 #ct-readonly.ct-imp{flex-direction:column;align-items:flex-start}
}
@media (max-width:860px){.au{grid-template-columns:1fr}.au-side{display:none}.au-brand-m{display:inline-flex}.au-main{justify-content:flex-start;padding-top:28px}}
@media (max-width:420px){.au-card{padding:20px}.au-demo{flex-direction:column;align-items:stretch}.tb-usage{display:none}}
@media (display-mode:standalone){.sd-site{display:none}}

/* ---------- print: chrome hidden, show report content ---------- */
@media print{
 .sd,.sd-scrim,.tb,.bt,.ct-ann,.ph,.ct-banners,#ct-loading,.au,dialog{display:none!important}
 .sh{display:block}.ct-app{padding:0;max-width:none}body{background:#fff}
 body.printing .vw{display:block!important;animation:none}
 body.printing #v-import,body.printing #v-sharing,body.printing #v-settings,body.printing #v-upgrade,body.printing .rp-head,body.printing #ct-recent,body.printing .et-setaside{display:none!important}
 body.printing #v-dashboard .dg2{display:none}
}
/* social sign-in: compact row at the top of the login/signup card */
.au-sso{margin:2px 0 0}
.au-sso-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(0,1fr));gap:8px}
.au-sso-btn{display:flex;align-items:center;justify-content:center;gap:8px;height:42px;padding:0 10px;border-radius:9px;border:1px solid #d6dae4;background:#fff;color:#1b1f2a;font-weight:600;font-size:.9rem;text-decoration:none;white-space:nowrap;min-width:0;transition:background .15s,border-color .15s}
.au-sso-btn:hover{background:#f6f7fb;border-color:#c3c9d6}
.au-sso-btn:focus-visible{outline:3px solid #2f6fde;outline-offset:2px}
.au-sso-btn span{overflow:hidden;text-overflow:ellipsis}
.au-sso-btn svg,.st-sso svg{width:18px;height:18px;flex:none}
.au-or{display:flex;align-items:center;gap:10px;margin:14px 0 4px;color:var(--muted);font-size:.8rem}
.au-or::before,.au-or::after{content:"";flex:1;height:1px;background:var(--line,#e3e6ee)}
@media (max-width:359px){.au-sso-btn span{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.au-sso-btn{padding:0}}
.st-sso{list-style:none;margin:8px 0 0;padding:0;display:grid;gap:8px}
.st-sso li{display:flex;align-items:center;gap:12px;padding:10px 12px;border:1px solid var(--line,#e3e6ee);border-radius:12px}
.st-sso li span{flex:1;display:flex;flex-direction:column;min-width:0}.st-sso li small{color:var(--muted);overflow:hidden;text-overflow:ellipsis}
.au-by.ct-credit{font-size:12.5px}

.au-brand-m .au-wm{display:block;width:160px;height:auto;margin-bottom:2px}
html[data-theme=dark] .au-brand-m .au-wm{content:url(icons/wordmark-240-dark.png)}
html[data-theme=dark] .ct-splash img{content:url(icons/brand-logo-dark.png)}
