*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font-family:var(--font-sans);font-size:14px;-webkit-font-smoothing:antialiased;transition:background .25s ease,color .25s ease}a{color:inherit;text-decoration:none}::selection{background:var(--sel)}.mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.dim{color:var(--text-dim)}.faint{color:var(--text-faint)}.mute{color:var(--text-mute)}.spacer{flex:1}.up{color:var(--green)}.down{color:var(--red)}.warn{color:var(--amber)}.iris{color:var(--iris-strong)}.nowrap{white-space:nowrap}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.right{text-align:right}.row{display:flex;align-items:center;gap:10px}.col{display:flex;flex-direction:column}.marker{font-family:var(--font-mono);font-size:10px;letter-spacing:.02em;color:var(--text-mute)}.marker:before{content:"// "}.app{display:flex;align-items:stretch;min-height:100vh}.rail{width:232px;flex:0 0 232px;border-right:1px solid var(--border);background:var(--surface2);display:flex;flex-direction:column;padding:22px 14px;gap:26px;position:sticky;top:0;height:100vh;overflow-y:auto}.rail-brand{display:flex;align-items:center;gap:10px;padding:0 8px}.rail-mark{width:28px;height:28px;border-radius:9px;background:var(--iris);color:var(--on-iris);display:flex;align-items:center;justify-content:center;flex:0 0 28px}.rail-name{display:flex;flex-direction:column;line-height:1.15}.rail-name b{font-size:14px;font-weight:600;letter-spacing:-.01em}.rail-name span{font-family:var(--font-mono);font-size:10px;color:var(--text-mute)}.nav{display:flex;flex-direction:column;gap:2px}.nav>.marker{padding:0 8px 8px}.nav a{display:flex;align-items:center;gap:10px;padding:8px;border-radius:10px;color:var(--text-dim);font-size:14px;cursor:pointer}.nav a:hover{background:var(--hover);color:var(--text)}.nav a.on{background:var(--sel);color:var(--iris-strong)}.nav a .glyph{font-family:var(--font-mono);font-size:11px;width:14px;text-align:center;opacity:.75}.nav a .count{font-family:var(--font-mono);font-size:10px;color:var(--text-mute);margin-left:auto}.rail-foot{margin-top:auto;display:flex;flex-direction:column;gap:10px}.rail-burn{border:1px solid var(--border);border-radius:14px;padding:12px;display:flex;flex-direction:column;gap:8px;background:var(--surface)}.rail-burn .amount{font-family:var(--font-mono);font-size:17px;font-weight:500}.rail-user{display:flex;align-items:center;gap:10px;padding:8px;border-radius:12px;cursor:pointer;border:0;background:transparent;width:100%;text-align:left}.rail-user:hover{background:var(--hover)}.avatar{width:26px;height:26px;border-radius:var(--r-pill);flex:0 0 26px;background:var(--iris-bg);color:var(--iris-strong);display:flex;align-items:center;justify-content:center;font-family:var(--font-mono);font-size:11px;overflow:hidden}.avatar img{width:100%;height:100%;object-fit:cover;display:block}.avatar-pick{position:relative;padding:0;border:0;background:none;border-radius:var(--r-pill);cursor:pointer;line-height:0;flex:0 0 auto}.avatar-pick .avatar{border:1px solid var(--border)}.avatar-pick-veil{position:absolute;inset:0;border-radius:var(--r-pill);display:flex;align-items:center;justify-content:center;padding:0 6px;text-align:center;background:#0009;color:#fff;font-family:var(--font-mono);font-size:9px;line-height:1.2;opacity:0;transition:opacity .12s ease}.avatar-pick:hover .avatar-pick-veil,.avatar-pick:focus-visible .avatar-pick-veil{opacity:1}@media(prefers-reduced-motion:reduce){.avatar-pick-veil{transition:none}}.main{flex:1;min-width:0;display:flex;flex-direction:column}.topbar{display:flex;align-items:center;gap:12px;padding:18px 22px;border-bottom:1px solid var(--border);background:var(--header-bg);position:sticky;top:0;z-index:5;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.topbar h1{font-size:21px;font-weight:700;letter-spacing:-.02em;margin:0}.topbar .meta{font-family:var(--font-mono);font-size:12px;color:var(--text-mute)}.page{padding:22px;display:flex;flex-direction:column;gap:18px}.grid{display:grid;grid-template-columns:repeat(12,1fr);gap:18px;align-items:start}.cols-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;align-items:start}.split{display:grid;grid-template-columns:minmax(0,1fr) 372px;gap:0;flex:1;min-height:0}.split>.pane{padding:22px;display:flex;flex-direction:column;gap:16px;min-width:0}.split>.side{border-left:1px solid var(--border);padding:18px;display:flex;flex-direction:column;gap:14px;position:sticky;top:57px;align-self:start;max-height:calc(100vh - 57px);overflow-y:auto}.card{border:1px solid var(--border);border-radius:var(--r-card);background:var(--surface);box-shadow:var(--card-shadow);padding:16px;display:flex;flex-direction:column;gap:12px;min-width:0}.card>header{display:flex;align-items:center;gap:10px}.card>header .marker{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.grid>.widget{grid-column:span var(--span, 4);min-width:0}.span-3{grid-column:span 3}.span-4{grid-column:span 4}.span-5{grid-column:span 5}.span-6{grid-column:span 6}.span-7{grid-column:span 7}.span-8{grid-column:span 8}.span-12{grid-column:span 12}.scroller{overflow-y:auto;display:flex;flex-direction:column}.scroller.h-sm{max-height:232px}.scroller.h-md{max-height:296px}.scroller.h-lg{max-height:420px}.scroller::-webkit-scrollbar{width:8px}.scroller::-webkit-scrollbar-thumb{background:var(--sel);border-radius:var(--r-pill)}.scroller::-webkit-scrollbar-track{background:transparent}.more{font-family:var(--font-mono);font-size:10px;color:var(--text-mute);padding-top:8px;border-top:1px dashed var(--border);text-align:center;background:none;border-left:0;border-right:0;border-bottom:0;width:100%;cursor:pointer}.more:hover{color:var(--iris-strong)}.figure{font-family:var(--font-mono);font-weight:500;letter-spacing:-.01em;white-space:nowrap}.figure.xl{font-size:40px}.figure.lg{font-size:27px}.figure.md{font-size:19px}.figure.sm{font-size:14px}.figure .frac{color:var(--text-mute)}button,.btn{font-family:var(--font-sans);font-size:13px;color:var(--text-dim);background:var(--chip-bg);border:1px solid var(--border);border-radius:var(--r-btn);padding:7px 12px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:6px;white-space:nowrap}button:hover,.btn:hover{color:var(--text);border-color:var(--border2)}button:focus-visible,.btn:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--iris);outline-offset:2px}button:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:var(--iris);color:var(--on-iris);border-color:transparent;font-weight:600}.btn-primary:hover{background:var(--iris-strong);color:var(--on-iris)}.btn-ghost{background:transparent;border-color:transparent}.btn-ghost:hover{background:var(--hover)}.btn-danger{color:var(--red);border-color:var(--red-bg);background:var(--red-bg)}.btn-sm{font-size:12px;padding:5px 9px}.btn-mono{font-family:var(--font-mono);font-size:11px;letter-spacing:.04em}.tabs{display:flex;gap:8px;flex-wrap:wrap}.tabs button.on{background:var(--sel);color:var(--iris-strong);border-color:var(--iris)}input,select,textarea{font-family:var(--font-sans);font-size:14px;color:var(--text);background:var(--surface2);border:1px solid var(--border);border-radius:var(--r-input);padding:10px 12px;width:100%}input::placeholder,textarea::placeholder{color:var(--text-mute)}input.mono,.amount-input{font-family:var(--font-mono);font-variant-numeric:tabular-nums}textarea{resize:vertical;min-height:72px}select{cursor:pointer}.field{display:flex;flex-direction:column;gap:6px;min-width:0}.field>.marker{padding-left:2px}.fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.fields .wide{grid-column:span 2}.switch{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 0;border-bottom:1px solid var(--border);cursor:pointer;background:none;border-left:0;border-right:0;border-top:0;width:100%;text-align:left;color:inherit;font-size:14px;border-radius:0}.switch:hover{background:transparent;color:var(--text)}.switch:last-child{border-bottom:0}.switch .track{width:38px;height:22px;border-radius:var(--r-pill);flex:0 0 38px;background:var(--chip-bg);border:1px solid var(--border);position:relative;transition:background .15s ease}.switch .track:after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:var(--r-pill);background:var(--text-mute);transition:transform .15s ease,background .15s ease}.switch.on .track{background:var(--iris-bg);border-color:var(--iris)}.switch.on .track:after{transform:translate(16px);background:var(--iris-strong)}.badge{font-family:var(--font-mono);font-size:9.5px;letter-spacing:.08em;text-transform:uppercase;border-radius:var(--r-badge);padding:3px 6px;border:1px solid transparent;white-space:nowrap}.badge.ok{color:var(--green);background:var(--green-bg)}.badge.warnb{color:var(--amber);background:var(--amber-bg)}.badge.bad{color:var(--red);background:var(--red-bg)}.badge.neutral{color:var(--text-mute);background:var(--chip-bg)}.badge.irisb{color:var(--iris-strong);background:var(--iris-bg)}.chip{display:inline-flex;align-items:center;gap:7px;border:1px solid var(--border);border-radius:var(--r-pill);padding:7px 13px;background:var(--surface2);cursor:pointer;font-size:13px;color:var(--text)}.chip:hover{border-color:var(--border2);background:var(--hover)}.chip .dot{width:8px;height:8px;border-radius:var(--r-pill);flex:0 0 8px}.chip .sub{font-family:var(--font-mono);font-size:10px;color:var(--text-mute)}.chip.dashed{border-style:dashed;color:var(--text-mute);background:transparent}.sq{width:26px;height:26px;border-radius:8px;flex:0 0 26px;display:flex;align-items:center;justify-content:center;font-family:var(--font-mono);font-size:10px;letter-spacing:.02em}.list{display:flex;flex-direction:column}.list-row{display:flex;align-items:center;gap:12px;padding:11px 8px;border-bottom:1px solid var(--border);cursor:pointer;min-width:0;border-radius:0;background:transparent;border-left:0;border-right:0;border-top:0;width:100%;text-align:left;color:inherit;font-size:14px}.list-row:last-child{border-bottom:0}.list-row:hover{background:var(--hover)}.list-row.on{background:var(--sel)}.list-row .title{font-size:14px}.list-row .sub{font-family:var(--font-mono);font-size:11px;color:var(--text-mute)}.day-head{display:flex;align-items:baseline;gap:10px;padding:16px 8px 6px}.day-head .d{font-family:var(--font-mono);font-size:12px;color:var(--text-dim)}.day-head .w{font-family:var(--font-mono);font-size:11px;color:var(--text-mute)}.attn{display:flex;align-items:center;gap:14px;border:1px solid var(--border);border-left-width:3px;border-radius:10px;padding:11px 13px;min-width:0}.attn.bad{border-left-color:var(--red);background:var(--red-bg)}.attn.warnb{border-left-color:var(--amber);background:var(--amber-bg)}.attn.irisb{border-left-color:var(--iris);background:var(--iris-bg)}.attn.ok{border-left-color:var(--green);background:var(--green-bg)}.attn .tag{font-family:var(--font-mono);font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;width:62px;flex:0 0 62px}.col-amount{width:110px;display:flex;flex-direction:column;align-items:flex-end;gap:2px}.col-cadence{width:180px;padding-left:12px}.col-next{width:140px}.col-state{width:92px}.bar{height:4px;border-radius:var(--r-pill);background:var(--chip-bg);overflow:hidden}.bar>span{display:block;height:100%;border-radius:var(--r-pill);background:var(--iris)}.bar.thick{height:8px}.bar>span.green{background:var(--green)}.bar>span.amber{background:var(--amber)}.bar>span.red{background:var(--red)}.bars{display:flex;align-items:flex-end;gap:14px;height:150px;padding-top:8px}.bars .slot{flex:1;display:flex;flex-direction:column;align-items:center;gap:6px;min-width:0}.bars .pair{display:flex;align-items:flex-end;gap:4px;height:130px}.bars .pair i{width:12px;border-radius:3px 3px 0 0;display:block}.bars .pair i.inc{background:var(--green)}.bars .pair i.exp{background:var(--red)}.bars .tick{font-family:var(--font-mono);font-size:10px;color:var(--text-mute)}.legend{display:flex;gap:14px;align-items:center}.legend span{display:inline-flex;align-items:center;gap:6px;font-size:11px;color:var(--text-dim)}.legend i{width:8px;height:8px;border-radius:2px;display:block}.spark{display:block;width:100%;height:44px;overflow:visible}.tiles{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.tile{border:1px solid var(--border);border-radius:var(--r-card);padding:16px;display:flex;flex-direction:column;gap:10px;min-height:172px;cursor:pointer;position:relative;overflow:hidden}.tile:hover{border-color:var(--border2)}.tile.on{border-color:var(--iris);box-shadow:0 0 0 1px var(--iris) inset}.tile .top{display:flex;align-items:flex-start;gap:10px}.tile .foot{margin-top:auto;display:flex;align-items:center;gap:10px}.tile .pan{font-family:var(--font-mono);font-size:12px;color:var(--text-faint);letter-spacing:.12em}.cal{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px}.cal .head{font-family:var(--font-mono);font-size:11px;color:var(--text-mute);padding:0 2px 4px}.cal .cell{border:1px solid var(--border);border-radius:10px;padding:8px;min-height:108px;display:flex;flex-direction:column;gap:6px;cursor:pointer;background:transparent;text-align:left;color:inherit;font-size:14px;width:100%}.cal .cell:hover{background:var(--hover)}.cal .cell.out{opacity:.35}.cal .cell.on{border-color:var(--iris);background:var(--sel)}.cal .cell.short{border-color:var(--red);background:var(--red-bg)}.cal .cell .n{font-family:var(--font-mono);font-size:12px;color:var(--text-dim)}.cal .ev{border-radius:7px;padding:5px 7px;font-size:11px;background:var(--chip-bg);display:flex;flex-direction:column;gap:1px;min-width:0}.cal .ev b{font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cal .ev span{font-family:var(--font-mono);font-size:10px;color:var(--text-dim)}.cal .ev.planned{background:transparent;border:1px dashed var(--border2)}.cal .ev.income{background:var(--green-bg)}.cal .ev.income span{color:var(--green)}.scrim{position:fixed;inset:0;background:var(--overlay);display:flex;align-items:center;justify-content:center;padding:24px;z-index:50;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.modal{background:var(--surface);border:1px solid var(--border2);border-radius:var(--r-modal);width:min(560px,100%);max-height:calc(100vh - 48px);overflow-y:auto;padding:20px;display:flex;flex-direction:column;gap:16px}.modal h2{margin:0;font-size:18px;font-weight:600;letter-spacing:-.01em}.modal .actions{display:flex;gap:10px;justify-content:flex-end}.empty{padding:34px 16px;text-align:center;color:var(--text-mute);display:flex;flex-direction:column;gap:8px;align-items:center}.error{border:1px solid var(--red);background:var(--red-bg);color:var(--red);border-radius:var(--r-btn);padding:10px 12px;font-size:13px}.notice{border:1px solid var(--border);background:var(--iris-bg);color:var(--iris-strong);border-radius:var(--r-btn);padding:10px 12px;font-size:13px}.hr{height:1px;background:var(--border);border:0;margin:2px 0}.boot{max-width:720px;margin:0 auto;padding:48px 20px;display:flex;flex-direction:column;gap:22px}.brand{display:flex;align-items:center;gap:11px}.brand img{border-radius:10px;display:block}.wordmark{font-size:19px;font-weight:500;letter-spacing:-.015em}.wordmark .dim{color:var(--text-dim);font-weight:400}.signin{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px}.signin form{width:min(344px,100%);display:flex;flex-direction:column;gap:14px}.signin .foot{display:flex;align-items:center;justify-content:space-between;border-top:1px solid var(--border);padding-top:14px;margin-top:6px}@media(max-width:900px){.app{flex-direction:column}.rail{position:static;width:auto;flex:none;height:auto;flex-direction:row;align-items:center;gap:12px;overflow-x:auto;border-right:0;border-bottom:1px solid var(--border);padding:12px}.rail .nav{flex-direction:row;gap:6px}.rail .nav>.marker,.rail-foot{display:none}.nav a{padding:7px 10px;white-space:nowrap}.split{grid-template-columns:minmax(0,1fr)}.split>.side{border-left:0;border-top:1px solid var(--border);position:static;max-height:none}.grid{grid-template-columns:repeat(2,minmax(0,1fr))}.span-3,.span-4,.span-5,.span-6,.span-7,.span-8,.span-12{grid-column:span 2}.grid>.widget{grid-column:span 2}.attn{flex-wrap:wrap}.attn .tag{width:auto;flex:0 0 auto}.tiles,.fields{grid-template-columns:minmax(0,1fr)}.fields .wide{grid-column:span 1}.cal{grid-template-columns:repeat(2,minmax(0,1fr))}.cal .head{display:none}.page{padding:14px;gap:14px}.topbar{padding:14px}.figure.xl{font-size:30px}.figure.lg{font-size:22px}.wide-only{display:none!important}.cols-3{grid-template-columns:minmax(0,1fr);gap:12px}.tiles .tile{min-height:0}.topbar{flex-wrap:wrap}.topbar h1{font-size:19px}.list-row{flex-wrap:wrap}.modal{padding:16px}.legend{flex-wrap:wrap}.col-amount,.col-state{width:auto}.bars{gap:6px}}
