@font-face{font-family:Onest;font-style:normal;font-display:swap;font-weight:100 900;src:url(/fonts/onest-latin-ext-wght-normal.woff2) format("woff2-variations");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Onest;font-style:normal;font-display:swap;font-weight:100 900;src:url(/fonts/onest-latin-wght-normal.woff2) format("woff2-variations");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:100 800;src:url(/fonts/jetbrains-mono-latin-wght-normal.woff2) format("woff2-variations")}:root{--primary:#0923f3;--primary-deep:#0d23c6;--ink:#0d1759;--sky:#9ad8ff;--cyan:#22ffff;--yellow:#eed404;--lime:#c8d608;--ink-2:#3f4a7e;--ink-3:#566092;--on-primary:#ffffff;--bg:#ffffff;--panel:#f5f6fb;--panel-2:#eceefa;--line:#e1e4f2;--line-strong:#c3c8e0;--control-line:#7f87b0;--primary-tint:#eef0ff;--sky-tint:#e6f5ff;--ok:#17663a;--ok-tint:#e9f5ee;--warn:#7a5600;--warn-tint:#fdf6c9;--danger:#b4231f;--danger-tint:#fdecea;--font:"Onest",system-ui,-apple-system,"Segoe UI",sans-serif;--mono:"JetBrains Mono",ui-monospace,"SF Mono",Menlo,monospace;--t-xs:0.75rem;--t-sm:0.8125rem;--t-base:0.875rem;--t-md:1rem;--t-lg:1.125rem;--t-xl:1.375rem;--t-2xl:1.75rem;--s-1:0.25rem;--s-2:0.5rem;--s-3:0.75rem;--s-4:1rem;--s-5:1.25rem;--s-6:1.5rem;--s-8:2rem;--s-10:2.5rem;--s-12:3rem;--radius:6px;--radius-lg:10px;--control-h:2.25rem;--row-h:2.75rem;--rail-w:13.5rem;--shadow-pop:0 1px 2px rgb(13 23 89/0.08),0 8px 24px rgb(13 23 89/0.12);--ease:cubic-bezier(0.22,1,0.36,1);--fast:140ms;--z-sticky:10;--z-nav:20;--z-backdrop:40;--z-dialog:50;--z-toast:60}*,:after,:before{box-sizing:border-box}html{text-size-adjust:100%}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--font);font-size:var(--t-base);line-height:1.5;font-feature-settings:"tnum" 0;-webkit-font-smoothing:antialiased}*,:after,:before{font-feature-settings:"tnum" 0!important}dd,dl,figure,h1,h2,h3,h4,ol,p,ul{margin:0}ol,ul{padding:0;list-style:none}a{color:var(--primary);text-decoration:none}a:hover{text-decoration:underline;text-underline-offset:2px}button,input,select,textarea{font:inherit;color:inherit}img,svg{display:block;max-width:100%}:focus-visible{outline:2px solid var(--primary);outline-offset:2px;border-radius:3px}::selection{background:var(--sky);color:var(--ink)}.mono{font-family:var(--mono);font-size:.93em;letter-spacing:-.01em}.num{text-align:right;white-space:nowrap}.num,.tnum{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.muted{color:var(--ink-3)}.soft{color:var(--ink-2)}.strong{font-weight:600}.nowrap,.truncate{white-space:nowrap}.truncate{overflow:hidden;text-overflow:ellipsis;min-width:0}.stack{gap:var(--s-4)}.stack,.stack-sm{display:flex;flex-direction:column}.stack-sm{gap:var(--s-2)}.stack-lg{display:flex;flex-direction:column;gap:var(--s-8)}.cluster{flex-wrap:wrap;gap:var(--s-2)}.between,.cluster{display:flex;align-items:center}.between{justify-content:space-between;gap:var(--s-3)}.grow{flex:1 1 auto;min-width:0}.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}@media (max-width:767px){.hide-mobile{display:none!important}}@media (min-width:768px){.only-mobile{display:none!important}}.app{min-height:100dvh}.rail{display:none}.main{min-width:0;padding-bottom:calc(4rem + env(safe-area-inset-bottom))}.topbar{position:-webkit-sticky;position:sticky;top:0;z-index:var(--z-nav);display:flex;align-items:center;gap:var(--s-3);height:3.25rem;padding:0 var(--s-4);background:var(--bg);border-bottom:1px solid var(--line)}.topbar .brand-name{font-weight:700;font-size:var(--t-md)}.tabbar{position:fixed;inset:auto 0 0 0;z-index:var(--z-nav);display:grid;grid-auto-flow:column;grid-auto-columns:1fr;background:var(--bg);border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom)}.tabbar a{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-height:3.5rem;color:var(--ink-3);font-size:.6875rem;font-weight:500;text-decoration:none}.tabbar a[aria-current=page]{color:var(--primary);font-weight:600}.tabbar svg{width:1.25rem;height:1.25rem}@media (min-width:768px){.app{display:grid;grid-template-columns:var(--rail-w) minmax(0,1fr)}.tabbar,.topbar{display:none}.main{padding-bottom:0}.rail{position:-webkit-sticky;position:sticky;top:0;display:flex;flex-direction:column;height:100dvh;padding:var(--s-5) var(--s-3) var(--s-4);background:var(--panel);border-right:1px solid var(--line)}}.rail-brand{display:flex;align-items:center;gap:var(--s-3);padding:0 var(--s-2) var(--s-6);color:var(--ink)}.rail-brand,.rail-brand:hover{text-decoration:none}.rail-brand img{width:1.625rem;height:1.625rem}.rail-brand span{font-size:1.0625rem;font-weight:700;letter-spacing:-.01em}.rail-nav{display:flex;flex-direction:column;gap:2px}.rail-foot a,.rail-foot button,.rail-nav a{display:flex;align-items:center;gap:var(--s-3);width:100%;min-height:2.25rem;padding:0 var(--s-2);border:0;border-radius:var(--radius);background:none;color:var(--ink-2);font-weight:500;text-align:left;text-decoration:none;cursor:pointer;transition:background-color var(--fast) var(--ease),color var(--fast) var(--ease)}.rail-foot a:hover,.rail-foot button:hover,.rail-nav a:hover{background:var(--panel-2);color:var(--ink)}.rail-foot a[aria-current=page],.rail-nav a[aria-current=page]{background:var(--bg);color:var(--primary);font-weight:600;box-shadow:inset 0 0 0 1px var(--line)}.rail-foot svg,.rail-nav svg{flex:none;width:1.0625rem;height:1.0625rem}.rail-count{margin-left:auto;min-width:1.25rem;padding:0 .3rem;border-radius:999px;background:var(--primary);color:var(--on-primary);font-size:.6875rem;font-weight:600;line-height:1.25rem;text-align:center;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.rail-foot{margin-top:auto;display:flex;flex-direction:column;gap:2px;padding-top:var(--s-3);border-top:1px solid var(--line)}.rail-user{padding:var(--s-2) var(--s-2) 0;color:var(--ink-3);font-size:var(--t-xs)}.page{width:100%;max-width:76rem;margin:0 auto;padding:var(--s-5) var(--s-4) var(--s-10)}.page-narrow{max-width:46rem}@media (min-width:768px){.page{padding:var(--s-8) var(--s-8) var(--s-12)}}.page-head{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:var(--s-3) var(--s-4);margin-bottom:var(--s-6)}.page-title{font-size:var(--t-xl);font-weight:800;line-height:1.2;letter-spacing:-.02em;text-wrap:balance}.page-sub{margin-top:var(--s-1);color:var(--ink-2);max-width:68ch}.crumb{display:inline-flex;align-items:center;gap:var(--s-1);margin-bottom:var(--s-2);color:var(--ink-3);font-size:var(--t-sm);font-weight:500}.crumb svg{width:.875rem;height:.875rem}.section+.section{margin-top:var(--s-10)}.section-head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:var(--s-2) var(--s-4);margin-bottom:var(--s-3)}.section-title{font-size:var(--t-lg);font-weight:700;line-height:1.3;letter-spacing:-.01em}.sub-title{font-size:var(--t-base);font-weight:600}.split{display:grid;grid-gap:var(--s-10);gap:var(--s-10)}@media (min-width:1100px){.split{grid-template-columns:minmax(0,1fr) 21rem;gap:var(--s-12);align-items:start}.split>.aside-sticky{position:-webkit-sticky;position:sticky;top:var(--s-8)}}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--s-2);min-height:var(--control-h);padding:0 var(--s-3);border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--bg);color:var(--ink);font-size:var(--t-base);font-weight:600;line-height:1;white-space:nowrap;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:background-color var(--fast) var(--ease),border-color var(--fast) var(--ease),color var(--fast) var(--ease),transform var(--fast) var(--ease)}.btn,.btn:hover{text-decoration:none}.btn:hover{background:var(--panel);border-color:var(--ink-3)}.btn:active{transform:translateY(1px)}.btn svg{flex:none;width:1rem;height:1rem}.btn-primary{border-color:var(--primary);background:var(--primary);color:var(--on-primary)}.btn-primary:hover{border-color:var(--primary-deep);background:var(--primary-deep)}.btn-quiet{border-color:transparent;background:transparent;color:var(--primary)}.btn-quiet:hover{border-color:transparent;background:var(--primary-tint)}.btn-danger{border-color:var(--line-strong);color:var(--danger)}.btn-danger:hover{border-color:var(--danger);background:var(--danger-tint)}.btn-sm{min-height:1.875rem;padding:0 var(--s-2);font-size:var(--t-sm)}.btn-lg{min-height:2.75rem;padding:0 var(--s-5);font-size:var(--t-md)}.btn-block{width:100%}.btn-icon{width:var(--control-h);padding:0}.btn-icon.btn-sm{width:1.875rem}.btn:disabled,.btn[aria-disabled=true]{border-color:var(--line);background:var(--panel);color:var(--ink-3);cursor:not-allowed;transform:none}.btn[aria-busy=true]{position:relative;color:transparent;pointer-events:none}.btn[aria-busy=true]:after{content:"";position:absolute;width:.875rem;height:.875rem;border:2px solid var(--ink-3);border-top:2px solid transparent;border-radius:50%;animation:spin .7s linear infinite}.btn-primary[aria-busy=true]:after{border-color:var(--on-primary);border-top-color:transparent}@keyframes spin{to{transform:rotate(1turn)}}@media (max-width:767px){.btn{min-height:2.75rem;padding:0 var(--s-4)}.btn-sm{min-height:2.25rem;padding:0 var(--s-3)}.btn-icon{width:2.75rem;padding:0}.dialog-head .btn-icon.btn-sm{width:2.75rem;min-height:2.75rem}}.field{display:flex;flex-direction:column;gap:var(--s-1);min-width:0}.label{color:var(--ink-2);font-size:var(--t-sm);font-weight:600}.label .optional{color:var(--ink-3);font-weight:400}.hint{color:var(--ink-3)}.error-text,.hint{font-size:var(--t-sm)}.error-text{color:var(--danger);font-weight:500}.input,.select,.textarea{width:100%;min-height:var(--control-h);padding:0 var(--s-3);border:1px solid var(--control-line);border-radius:var(--radius);background:var(--bg);color:var(--ink);font-size:var(--t-base);line-height:1.4;transition:border-color var(--fast) var(--ease),box-shadow var(--fast) var(--ease)}.textarea{padding:var(--s-2) var(--s-3);min-height:5rem;resize:vertical}.select{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding-right:2rem;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none' stroke='%233f4a7e' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m4 6 4 4 4-4'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .6rem center}.input::placeholder,.textarea::placeholder{color:var(--ink-3)}.input:hover,.select:hover,.textarea:hover{border-color:var(--ink-3)}.input:focus-visible,.select:focus-visible,.textarea:focus-visible{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-tint)}.input:disabled,.select:disabled,.textarea:disabled{background:var(--panel);color:var(--ink-3);cursor:not-allowed}.input[aria-invalid=true],.select[aria-invalid=true],.textarea[aria-invalid=true]{border-color:var(--danger)}.input-mono{font-family:var(--mono);letter-spacing:-.01em}.input-num{text-align:right;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.input-sm{min-height:1.875rem;padding:0 var(--s-2);font-size:var(--t-sm)}@media (max-width:767px){.input,.select,.textarea{min-height:2.75rem;font-size:var(--t-md)}.input-sm{min-height:2.5rem}}.form-grid{display:grid;grid-gap:var(--s-4);gap:var(--s-4);grid-template-columns:repeat(auto-fit,minmax(min(100%,13rem),1fr))}.form-grid .span-all{grid-column:1/-1}.form-actions{display:flex;flex-wrap:wrap}.check,.form-actions{gap:var(--s-2);align-items:center}.check{display:inline-flex;min-height:1.75rem;cursor:pointer}.check input{width:1.0625rem;height:1.0625rem;margin:0;accent-color:var(--primary);cursor:pointer}.segmented{display:inline-flex;padding:2px;border:1px solid var(--control-line);border-radius:var(--radius);background:var(--panel)}.segmented a,.segmented button,.segmented label{position:relative;display:inline-flex;align-items:center;justify-content:center;min-height:calc(var(--control-h) - 6px);padding:0 var(--s-3);border:0;border-radius:4px;background:none;color:var(--ink-2);font-size:var(--t-sm);font-weight:600;white-space:nowrap;text-decoration:none;cursor:pointer}.segmented input{position:absolute;opacity:0;pointer-events:none}.segmented a[aria-current=true],.segmented button[aria-pressed=true],.segmented label:has(input:checked){background:var(--bg);color:var(--ink);box-shadow:0 0 0 1px var(--line-strong)}.segmented label:has(input:focus-visible){outline:2px solid var(--primary);outline-offset:1px}@media (max-width:767px){.segmented a,.segmented button,.segmented label{min-height:2.75rem}}.table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}.table{width:100%;border-collapse:collapse;font-size:var(--t-base)}.table th{border-bottom:1px solid var(--line-strong);color:var(--ink-3);font-size:var(--t-sm);font-weight:600;text-align:left;white-space:nowrap;vertical-align:bottom}.table td,.table th{padding:var(--s-2) var(--s-3)}.table td{height:var(--row-h);border-bottom:1px solid var(--line);vertical-align:middle}.table td:first-child,.table th:first-child{padding-left:0}.table td:last-child,.table th:last-child{padding-right:0}.table td.num,.table th.num{text-align:right}.table tbody tr:last-child td{border-bottom-color:transparent}.table tfoot td{height:auto;padding-top:var(--s-3);border-top:1px solid var(--line-strong);border-bottom:0;font-weight:600}.table a.row-link{color:var(--ink);font-weight:600}.table tr[data-muted=true] td{color:var(--ink-3)}.table tr[data-struck=true] td .strike{text-decoration:line-through}.table-tight td{height:2.25rem}.cell-main{font-weight:600}.cell-sub{color:var(--ink-3);font-size:var(--t-sm)}.rows{border-top:1px solid var(--line)}.rows-row{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-2) var(--s-4);min-height:3.25rem;padding:var(--s-3) 0;border-bottom:1px solid var(--line)}.rows-row .grow{flex-basis:14rem}.status{display:inline-flex;align-items:center;gap:.4rem;font-size:var(--t-sm);font-weight:600;white-space:nowrap}.status svg{flex:none;width:.6875rem;height:.6875rem}.status[data-status=planned]{color:var(--ink-2)}.status[data-status=shipped]{color:var(--primary)}.status[data-status=delivered]{color:var(--ok)}.status[data-status=cancelled]{color:var(--ink-3);text-decoration:line-through}.tag{display:inline-flex;align-items:center;gap:var(--s-1);min-height:1.375rem;padding:0 .4rem;border-radius:4px;background:var(--panel-2);color:var(--ink-2);font-size:var(--t-xs);font-weight:600;white-space:nowrap}.tag-primary{background:var(--primary-tint);color:var(--primary-deep)}.tag-ok{background:var(--ok-tint);color:var(--ok)}.tag-warn{background:var(--warn-tint);color:var(--warn)}.tag-danger{background:var(--danger-tint);color:var(--danger)}.notice{display:flex;gap:var(--s-3);padding:var(--s-3) var(--s-4);border:1px solid var(--line-strong);border-radius:var(--radius-lg);background:var(--panel);color:var(--ink)}.notice svg{flex:none;width:1.125rem;height:1.125rem;margin-top:.125rem}.notice-title{font-weight:600}.notice-warn{border-color:#e6d36a;background:var(--warn-tint)}.notice-warn svg{color:var(--warn)}.notice-danger{border-color:#efb4af;background:var(--danger-tint)}.notice-danger svg{color:var(--danger)}.notice-ok{border-color:#b5dcc4;background:var(--ok-tint)}.notice-ok svg{color:var(--ok)}.panel{padding:var(--s-5);border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--bg)}.panel-tinted{border-color:transparent;background:var(--panel)}.kv{display:grid;grid-template-columns:minmax(7rem,max-content) minmax(0,1fr);grid-gap:var(--s-2) var(--s-5);gap:var(--s-2) var(--s-5)}.kv dt{color:var(--ink-3)}.kv dd{min-width:0;overflow-wrap:anywhere}.totals{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-gap:var(--s-2) var(--s-5);gap:var(--s-2) var(--s-5)}.totals dt{color:var(--ink-2)}.totals dd{font-feature-settings:"tnum";font-variant-numeric:tabular-nums;text-align:right}.totals .total{position:relative;padding-top:var(--s-3);color:var(--ink);font-size:var(--t-md);font-weight:700}.totals .total,.totals dt.total:after{border-top:1px solid var(--line-strong)}.totals dt.total:after{content:"";position:absolute;top:-1px;left:100%;width:var(--s-5)}.figure{font-size:var(--t-2xl);font-weight:700;line-height:1.1;letter-spacing:-.02em;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.tabs{display:flex;gap:var(--s-5);margin-bottom:var(--s-6);border-bottom:1px solid var(--line);overflow-x:auto;scrollbar-width:none}.tabs a{position:relative;padding:var(--s-2) 0 var(--s-3);color:var(--ink-3);font-weight:600;white-space:nowrap;text-decoration:none}.tabs a:hover,.tabs a[aria-current=page]{color:var(--ink)}.tabs a[aria-current=page]:after{content:"";position:absolute;inset:auto 0 -1px 0;height:2px;background:var(--primary)}.dialog{width:min(34rem,calc(100vw - 2rem));max-height:calc(100dvh - 2rem);padding:0;border:0;border-radius:var(--radius-lg);background:var(--bg);color:var(--ink);box-shadow:var(--shadow-pop);overflow:auto}.dialog-wide{width:min(46rem,calc(100vw - 2rem))}.dialog::-webkit-backdrop{background:rgb(13 23 89/.32)}.dialog::backdrop{background:rgb(13 23 89/.32)}.dialog[open]{animation:dialog-in .18s var(--ease)}@keyframes dialog-in{0%{opacity:0;transform:translateY(6px)}}.dialog-head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--s-4);padding:var(--s-5) var(--s-5) 0}.dialog-title{font-size:var(--t-lg);font-weight:700;letter-spacing:-.01em}.dialog-body{padding:var(--s-4) var(--s-5) var(--s-5)}.dialog-foot{position:-webkit-sticky;position:sticky;bottom:0;display:flex;flex-wrap:wrap;justify-content:flex-end;gap:var(--s-2);padding:var(--s-3) var(--s-5);border-top:1px solid var(--line);background:var(--bg)}@media (max-width:767px){.dialog{width:100vw;max-width:none;max-height:92dvh;margin:auto 0 0;border-radius:var(--radius-lg) var(--radius-lg) 0 0}.dialog-foot .btn{flex:1 1 auto}}.toast-region{position:fixed;z-index:var(--z-toast);right:var(--s-4);bottom:calc(4.5rem + env(safe-area-inset-bottom));left:var(--s-4);display:flex;flex-direction:column;align-items:center;gap:var(--s-2);pointer-events:none}@media (min-width:768px){.toast-region{bottom:var(--s-6);left:auto;align-items:flex-end}}.toast{display:flex;align-items:center;gap:var(--s-3);max-width:28rem;padding:var(--s-3) var(--s-4);border-radius:var(--radius);background:var(--ink);color:#fff;font-weight:500;box-shadow:var(--shadow-pop);pointer-events:auto;animation:toast-in .2s var(--ease)}.toast[data-kind=error]{background:var(--danger)}.toast button{border:0;background:none;color:var(--sky);font-weight:600;cursor:pointer}.toast .toast-close{margin-left:auto;color:#fff;text-decoration:underline;text-underline-offset:.15em}@keyframes toast-in{0%{opacity:0;transform:translateY(8px)}}.empty{padding:var(--s-8) var(--s-5);border:1px dashed var(--line-strong);border-radius:var(--radius-lg);color:var(--ink-2);text-align:center}.empty-title{margin-bottom:var(--s-1);color:var(--ink);font-weight:600}.empty p{max-width:46ch;margin-inline:auto}.empty .btn{margin-top:var(--s-4)}.skeleton{border-radius:4px;background:linear-gradient(90deg,var(--panel) 25%,var(--panel-2) 37%,var(--panel) 63%);background-size:400% 100%;animation:shimmer 1.4s ease infinite}@keyframes shimmer{0%{background-position:100% 50%}to{background-position:0 50%}}@media print{.no-print,.rail,.tabbar,.topbar{display:none!important}.app{display:block}.page{max-width:none;padding:0}}@media (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:1ms!important;animation-iteration-count:1!important;transition-duration:1ms!important}}