.app-shell{min-height:100%}.sidebar,.topbar-web{display:none}.topbar-mobile{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:8px;height:56px;padding:0 12px 0 16px;background:var(--primary);color:var(--on-primary);box-shadow:var(--shadow)}.topbar-mobile .brand{display:flex;align-items:center;gap:8px;font-weight:600;text-decoration:none}.event-btn{flex:1;display:flex;align-items:center;gap:10px;min-width:0;height:44px;padding:0 8px 0 0;border:0;border-radius:12px;background:transparent;color:inherit;font:inherit;text-align:left;cursor:pointer}.event-btn:active{background:#ffffff1f}.event-btn .mark{display:grid;place-items:center;flex:none;width:36px;height:36px;border-radius:10px;background:#ffffff29}.event-btn .text{display:grid;flex:1;min-width:0;line-height:1.2}.event-btn small{font-size:.72rem;opacity:.75}.event-btn strong{overflow:hidden;font-weight:600;text-overflow:ellipsis;white-space:nowrap}.event-btn .caret{flex:none;opacity:.85;transform:rotate(90deg)}.event-select{min-width:0;max-width:55vw;height:36px;padding:0 28px 0 12px;border:1px solid color-mix(in srgb,currentcolor 35%,transparent);border-radius:999px;background:transparent;color:inherit;font:500 .9rem var(--font);text-overflow:ellipsis}.event-select option{color:#1a1d29}.lang-select{height:36px;padding:0 8px;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--text);font:inherit}.offline-banner{display:flex;align-items:center;gap:8px;padding:8px 16px;background:var(--warn-bg);color:var(--warn-text);font-size:.85rem}.app-main{min-width:0;padding-bottom:76px}.tabbar{position:fixed;left:0;right:0;bottom:0;z-index:15;display:flex;padding-bottom:env(safe-area-inset-bottom);background:var(--surface);border-top:1px solid var(--line)}.tab-link{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;padding:8px 4px;border:0;background:none;color:var(--muted);font:500 .72rem var(--font);text-decoration:none;cursor:pointer}.tab-link.active{color:var(--primary)}.fab{bottom:calc(76px + env(safe-area-inset-bottom))}.page-head{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin:4px 0 12px}.page-head .titles{flex:1 1 200px;min-width:0}.page-head h1{font-size:1.4rem;font-weight:600;overflow-wrap:anywhere}.page-head .actions{display:flex;flex-wrap:wrap;gap:8px}.stat-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.stat{padding:14px;border-radius:var(--radius);background:var(--surface);border:1px solid var(--line)}.stat .stat-value{font-size:1.25rem;font-weight:600;overflow-wrap:anywhere}.stat.over .stat-value{color:var(--danger)}.stack{display:grid;gap:16px}.bar-row{margin-bottom:10px}.bar-row .label{display:flex;justify-content:space-between;gap:8px;font-size:.95rem}.chart{display:flex;align-items:flex-end;gap:10px;height:140px;padding-top:8px}.chart .col{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:100%;gap:4px;font-size:.75rem;color:var(--muted)}.chart .bar{width:100%;max-width:44px;min-height:2px;border-radius:6px 6px 0 0;background:var(--primary)}.table-wrap{overflow-x:auto;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius)}table.table{width:100%;border-collapse:collapse}table.table th,table.table td{padding:10px 14px;text-align:left;border-bottom:1px solid var(--line)}table.table th{font-size:.8rem;color:var(--muted);font-weight:600}table.table tr:last-child td{border-bottom:0}table.table .num{text-align:right;white-space:nowrap}.only-desktop{display:none}.avatar{display:inline-grid;place-items:center;flex:none;width:40px;height:40px;border-radius:50%;background:var(--primary-soft);color:var(--primary);font-weight:600}@media(min-width:900px){.app-shell{display:grid;grid-template-columns:250px minmax(0,1fr)}.app-shell.sidebar-collapsed{grid-template-columns:72px minmax(0,1fr)}.app-shell.sidebar-collapsed .sidebar{padding:18px 10px;overflow-x:hidden}.app-shell.sidebar-collapsed .sidebar .label{display:none}.app-shell.sidebar-collapsed .sidebar .brand{justify-content:center;padding:4px 0 14px}.app-shell.sidebar-collapsed .sidebar .side-group{height:1px;margin:10px 8px;padding:0;background:#ffffff1f}.app-shell.sidebar-collapsed .sidebar .side-link{justify-content:center;padding:12px 0}.app-shell.sidebar-collapsed .sidebar .side-foot{display:none}.side-tip{position:fixed;z-index:50;transform:translateY(-50%);padding:6px 12px;border-radius:8px;background:#111325;color:#fff;font-size:.85rem;white-space:nowrap;box-shadow:0 4px 14px #00000040;pointer-events:none}.hamburger{display:inline-grid;place-items:center;flex:none;width:40px;height:40px;border:0;border-radius:10px;background:transparent;color:var(--text);cursor:pointer}.hamburger:hover{background:var(--surface-2)}.topbar-mobile,.tabbar,.only-mobile{display:none}.only-desktop{display:block}.app-main{padding-bottom:0}.fab{bottom:24px;right:24px}.stat-grid.four{grid-template-columns:repeat(4,1fr)}.sidebar{position:sticky;top:0;display:flex;flex-direction:column;height:100vh;padding:18px 12px;background:#1b1d30;color:#c9ccdf;overflow-y:auto}.sidebar .brand{display:flex;align-items:center;gap:10px;padding:4px 10px 18px;color:#fff;font-size:1.15rem;font-weight:600}.sidebar .side-group{padding:14px 12px 6px;font-size:.7rem;letter-spacing:.08em;text-transform:uppercase;color:#868ba8}.sidebar .side-link{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:10px;color:inherit;text-decoration:none}.sidebar .side-link:hover{background:#ffffff12}.sidebar .side-link.active{background:#ffffff24;color:#fff}.sidebar .side-foot{margin-top:auto;padding:12px;font-size:.75rem;color:#868ba8}.web-main{min-width:0}.topbar-web{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:12px;height:60px;padding:0 24px;background:var(--surface);border-bottom:1px solid var(--line)}.topbar-web .event-select{color:var(--text);border-color:var(--line);background:var(--surface)}.user-menu{position:relative}.user-chip{display:flex;align-items:center;gap:10px;padding:4px 8px 4px 4px;border:0;border-radius:999px;background:transparent;color:inherit;text-align:left;cursor:pointer}.user-chip:hover{background:var(--surface-2)}.user-chip small{display:block;color:var(--muted)}.menu{position:absolute;right:0;top:48px;min-width:200px;padding:6px}.menu a,.menu button{display:flex;align-items:center;gap:10px;width:100%;padding:10px 12px;border:0;border-radius:8px;background:none;color:var(--text);font:inherit;text-decoration:none;cursor:pointer}.menu a:hover,.menu button:hover{background:var(--surface-2)}}@media print{.sidebar,.topbar-mobile,.topbar-web,.tabbar,.fab,.no-print,.offline-banner,.toast{display:none!important}.app-shell{display:block}body{background:#fff;color:#000}.page{max-width:none;padding:0}}:root{color-scheme:light dark;--bg: #f5f6fa;--surface: #ffffff;--surface-2: #eceef5;--text: #1a1d29;--muted: #5f6577;--line: #dcdfea;--primary: #4338ca;--on-primary: #ffffff;--primary-soft: #e6e4fb;--danger: #c62828;--warn-bg: #fdf0cf;--warn-text: #6b4a00;--radius: 12px;--shadow: 0 1px 2px rgb(16 24 40 / 8%), 0 4px 14px rgb(16 24 40 / 7%);--font: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif}@media(prefers-color-scheme:dark){:root{--bg: #12141c;--surface: #1b1e2a;--surface-2: #262a39;--text: #eceef6;--muted: #a3a9bd;--line: #333949;--primary: #9a9af7;--on-primary: #12141c;--primary-soft: #2c2e59;--danger: #ff8a80;--warn-bg: #3d3210;--warn-text: #f5d98a;--shadow: 0 1px 2px rgb(0 0 0 / 40%), 0 4px 14px rgb(0 0 0 / 30%)}}*,*:before,*:after{box-sizing:border-box}html,body{height:100%}body{margin:0;background:var(--bg);color:var(--text);font:400 16px/1.45 var(--font);-webkit-text-size-adjust:100%}h1,h2,h3,p{margin:0}a{color:inherit}:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.page{max-width:900px;margin:0 auto;padding:16px 16px 96px}.row{display:flex;align-items:center;gap:12px}.grow{flex:1 1 200px;min-width:0}.toolbar-row{display:flex;flex-wrap:wrap;gap:12px;align-items:center;margin:12px 0}.muted{color:var(--muted);font-size:.9rem}.error-text{color:var(--danger)}.page-title{font-size:1.4rem;font-weight:600}.section-title{font-size:1.05rem;font-weight:600;margin:24px 0 8px}.card>.section-title:first-child,.card>h2:first-child,.card>h3:first-child,.dlg-body>.section-title:first-child{margin-top:0}.btn-row{display:flex;flex-wrap:wrap;align-items:center;gap:12px}.form-row{display:flex;align-items:flex-end;gap:8px}.form-row>.field,.form-row>label{flex:1 1 0;min-width:0;margin-bottom:0}.form-row>.btn{flex:none;min-height:42px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:40px;padding:0 18px;border:1px solid transparent;border-radius:10px;font:500 .95rem var(--font);text-decoration:none;cursor:pointer;background:var(--primary);color:var(--on-primary);transition:filter .12s}.btn:hover:not(:disabled){filter:brightness(1.08)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn app-icon{font-size:1.15rem}.btn-outline{background:transparent;color:var(--text);border-color:var(--line)}.btn-outline:hover:not(:disabled){filter:none;background:var(--surface-2)}.btn-text{background:transparent;color:var(--primary);padding:0 10px}.btn-text:hover:not(:disabled){filter:none;background:color-mix(in srgb,currentcolor 10%,transparent)}.btn-block{width:100%}.btn-icon{display:inline-grid;place-items:center;flex:none;width:40px;height:40px;padding:0;border:0;border-radius:50%;background:transparent;color:var(--muted);font-size:1.3rem;text-decoration:none;cursor:pointer}.btn-icon:hover{background:color-mix(in srgb,currentcolor 12%,transparent)}.fab{position:fixed;right:16px;z-index:10;min-height:52px;padding:0 22px;border-radius:999px;box-shadow:0 6px 18px #00000040}.field{display:flex;flex-direction:column;gap:4px;margin-bottom:14px}.field>span{font-size:.85rem;font-weight:500;color:var(--muted)}.field small{color:var(--muted);font-size:.8rem}.input,.field input,.field select,.field textarea{width:100%;min-height:42px;padding:9px 12px;border:1px solid var(--line);border-radius:10px;background:var(--surface);color:var(--text);font:inherit}.input:focus,.field input:focus,.field select:focus,.field textarea:focus{outline:2px solid var(--primary);outline-offset:0;border-color:var(--primary)}.field textarea{resize:vertical}.field .invalid-msg,.field.ng-invalid.ng-touched small{color:var(--danger)}input[type=checkbox]{width:22px;height:22px;accent-color:var(--primary);flex:none}.card{display:block;padding:16px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.card.row{display:flex}.card-link{display:block;margin-bottom:12px;text-decoration:none}.card-link:hover .card{border-color:var(--primary)}.chip{display:inline-block;padding:2px 10px;border-radius:999px;background:var(--primary-soft);color:var(--primary);font-size:.75rem;font-weight:600;text-transform:capitalize;white-space:nowrap}.note{padding:12px;border-radius:10px;background:var(--warn-bg);color:var(--warn-text);margin-bottom:12px}.empty{display:grid;justify-items:center;gap:12px;padding:48px 16px;text-align:center;color:var(--muted);font-size:2rem}.empty p{font-size:1rem}.spinner{width:28px;height:28px;border:3px solid var(--line);border-top-color:var(--primary);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.item{display:flex;align-items:center;gap:4px;padding:10px 0;border-bottom:1px solid var(--line)}.item .main{flex:1;min-width:0;padding-right:8px}.item .title{font-weight:500;overflow-wrap:anywhere}.item .sub{color:var(--muted);font-size:.85rem;overflow-wrap:anywhere}.item .amount{font-weight:600;white-space:nowrap;margin-right:4px}.tabs{display:flex;flex-wrap:nowrap;gap:4px;border-bottom:1px solid var(--line);margin-top:8px;overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:none}.tabs::-webkit-scrollbar{display:none}.tab{flex:none;min-height:44px;padding:12px 16px;white-space:nowrap;border:0;border-bottom:3px solid transparent;background:none;color:var(--muted);font:500 .95rem var(--font);cursor:pointer}.tab[aria-selected=true]{color:var(--primary);border-bottom-color:var(--primary)}.segmented{display:flex;flex-wrap:nowrap;width:fit-content;max-width:100%;border:1px solid var(--line);border-radius:10px;overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:none}.segmented::-webkit-scrollbar{display:none}.segmented button{flex:none;min-height:40px;padding:8px 14px;white-space:nowrap;border:0;background:var(--surface);color:var(--text);font:500 .9rem var(--font);cursor:pointer}.segmented button+button{border-left:1px solid var(--line)}.segmented button[aria-pressed=true]{background:var(--primary-soft);color:var(--primary)}.progress,.bar-track{height:8px;border-radius:4px;background:var(--surface-2);overflow:hidden}.progress>div,.bar-track>div{height:100%;background:var(--primary)}.progress.over>div{background:var(--danger)}dialog.dlg{width:min(440px,94vw);max-height:90vh;padding:0;border:0;border-radius:16px;background:var(--surface);color:var(--text);box-shadow:0 12px 40px #00000059;overflow:hidden}dialog.dlg[open]{display:flex;flex-direction:column}dialog.dlg::backdrop{background:#0a0c148c}dialog.dlg>*{display:flex;flex-direction:column;min-height:0;max-height:90vh}dialog.dlg.dlg-wide{width:min(1000px,96vw)}dialog.dlg form{display:flex;flex-direction:column;min-height:0}.dlg-title{padding:20px 24px 8px;font-size:1.2rem;font-weight:600;overflow-wrap:anywhere}.dlg-body{padding:8px 24px;overflow-y:auto}.dlg-actions{display:flex;justify-content:flex-end;gap:8px;padding:12px 24px 16px}@media(max-width:600px){dialog.dlg{width:100%;max-width:100%;margin:auto 0 0;border-radius:20px 20px 0 0}dialog.dlg.dlg-wide{width:100%}.dlg-actions{padding-bottom:calc(16px + env(safe-area-inset-bottom))}.dlg-actions .btn{flex:1}}.toast{position:fixed;left:50%;bottom:88px;z-index:100;max-width:92vw;transform:translate(-50%);padding:12px 18px;border-radius:10px;background:#23263a;color:#fff;box-shadow:var(--shadow)}
