*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--cream:oklch(97% .012 85);--cream-dark:oklch(93% .018 80);--cream-darker:oklch(88% .022 78);--sand:oklch(82% .028 75);--sand-dark:oklch(72% .032 72);--forest:oklch(18% .01 80);--forest-mid:oklch(28% .01 80);--forest-light:oklch(45% .01 80);--forest-focus:oklch(28% .01 80/.12);--forest-kbd:oklch(28% .01 80/.3);--forest-tint:oklch(90% .005 80);--ink:oklch(18% .02 80);--ink-mid:oklch(35% .02 80);--ink-light:oklch(55% .018 80);--ink-faint:oklch(72% .015 80);--amber:oklch(72% .14 65);--amber-light:oklch(82% .12 70);--rose:oklch(62% .14 20);--rose-light:oklch(82% .08 20);--sky:oklch(62% .1 230);--radius-sm:6px;--radius:10px;--radius-lg:16px;--radius-xl:24px;--shadow-sm:0 1px 3px oklch(18% .02 80/.08);--shadow:0 2px 8px oklch(18% .02 80/.1), 0 1px 2px oklch(18% .02 80/.06);--shadow-lg:0 8px 32px oklch(18% .02 80/.12), 0 2px 8px oklch(18% .02 80/.08);--shadow-xl:0 20px 60px oklch(18% .02 80/.18), 0 4px 16px oklch(18% .02 80/.1);--font-display:"Instrument Serif", Georgia, serif;--font-body:"DM Sans", system-ui, sans-serif;--nav-width:240px;--header-height:56px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:16px}body{font-family:var(--font-body);background:var(--cream);color:var(--ink);min-height:100dvh;line-height:1.5}#root{flex-direction:column;min-height:100dvh;display:flex}a{color:inherit;text-decoration:none}button{cursor:pointer;background:0 0;border:none;font-family:inherit}input,textarea,select{font-family:inherit;font-size:inherit}h1,h2,h3,h4,h5,h6{font-weight:500;line-height:1.2}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--sand);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--sand-dark)}:focus-visible{outline:2px solid var(--forest-mid);outline-offset:2px;border-radius:var(--radius-sm)}@keyframes fadeIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@keyframes slideDown{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}@keyframes scaleIn{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.animate-fade-in{animation:.3s cubic-bezier(.16,1,.3,1) both fadeIn}.animate-scale-in{animation:.2s cubic-bezier(.16,1,.3,1) both scaleIn}.skeleton{background:linear-gradient(90deg, var(--cream-dark) 25%, var(--cream-darker) 50%, var(--cream-dark) 75%);border-radius:var(--radius-sm);background-size:200% 100%;animation:1.5s infinite shimmer}.btn{font-family:var(--font-body);border-radius:var(--radius);white-space:nowrap;cursor:pointer;border:none;justify-content:center;align-items:center;gap:6px;font-weight:500;transition:all .15s;display:inline-flex;position:relative}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-sm{height:32px;padding:6px 12px;font-size:13px}.btn-md{height:38px;padding:8px 16px;font-size:14px}.btn-lg{height:44px;padding:10px 20px;font-size:15px}.btn-primary{background:var(--forest);color:var(--cream)}.btn-primary:hover:not(:disabled){background:var(--forest-mid)}.btn-secondary{background:var(--cream-dark);color:var(--ink);border:1px solid var(--sand)}.btn-secondary:hover:not(:disabled){background:var(--cream-darker)}.btn-ghost{color:var(--ink-mid);background:0 0}.btn-ghost:hover:not(:disabled){background:var(--cream-dark);color:var(--ink)}.btn-danger{background:var(--rose-light);color:var(--rose)}.btn-danger:hover:not(:disabled){background:var(--rose);color:#fff}.btn-spinner{border:2px solid;border-top-color:#0000;border-radius:50%;flex-shrink:0;width:14px;height:14px;animation:.6s linear infinite spin}.input-group{flex-direction:column;gap:6px;display:flex}.input-label{color:var(--ink-mid);font-size:13px;font-weight:500}.input{width:100%;font-size:14px;font-family:var(--font-body);border:1.5px solid var(--sand);border-radius:var(--radius);color:var(--ink);background:#fff;outline:none;padding:9px 12px;transition:border-color .15s,box-shadow .15s}.input:focus{border-color:var(--forest-mid);box-shadow:0 0 0 3px var(--forest-focus)}.input::placeholder{color:var(--ink-faint)}.input-error{border-color:var(--rose)}.input-hint{color:var(--ink-light);font-size:12px}.input-error-msg{color:var(--rose);font-size:12px}select.input{cursor:pointer;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23888' stroke-width='2'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-position:right 10px center;background-repeat:no-repeat;padding-right:32px}input[type=date].input,input[type=datetime-local].input{cursor:pointer;appearance:none;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%23888' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='4' width='18' height='18' rx='2' ry='2'/%3E%3Cline x1='16' y1='2' x2='16' y2='6'/%3E%3Cline x1='8' y1='2' x2='8' y2='6'/%3E%3Cline x1='3' y1='10' x2='21' y2='10'/%3E%3C/svg%3E");background-position:right 10px center;background-repeat:no-repeat;padding-right:36px}input[type=date].input::-webkit-calendar-picker-indicator{cursor:pointer;opacity:.01;width:20px;height:20px}input[type=datetime-local].input::-webkit-calendar-picker-indicator{cursor:pointer;opacity:.01;width:20px;height:20px}input[type=date].input::-webkit-inner-spin-button{display:none}input[type=datetime-local].input::-webkit-inner-spin-button{display:none}textarea.input{resize:vertical;min-height:80px}.card{border-radius:var(--radius-lg);border:1px solid var(--cream-darker);background:#fff;padding:20px}.card-sm{border-radius:var(--radius);padding:14px 16px}.badge{border-radius:100px;align-items:center;gap:4px;padding:2px 8px;font-size:12px;font-weight:500;display:inline-flex}.badge-default{background:var(--cream-dark);color:var(--ink-mid)}.badge-green{background:var(--forest-tint);color:var(--forest)}.badge-amber{color:oklch(52% .14 65);background:oklch(94% .06 70)}.badge-red{background:var(--rose-light);color:var(--rose)}.toast-container{z-index:9999;pointer-events:none;flex-direction:column;gap:8px;display:flex;position:fixed;bottom:24px;right:24px}.toast{background:var(--ink);color:var(--cream);border-radius:var(--radius);box-shadow:var(--shadow-lg);pointer-events:all;align-items:center;gap:10px;max-width:360px;padding:12px 16px;font-size:14px;animation:.25s cubic-bezier(.16,1,.3,1) both slideDown;display:flex}.toast-success{background:var(--forest)}.toast-error{background:var(--rose)}.modal-backdrop{z-index:1000;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:oklch(18% .02 80/.4);justify-content:center;align-items:center;padding:16px;animation:.15s both fadeIn;display:flex;position:fixed;inset:0}.modal{border-radius:var(--radius-xl);box-shadow:var(--shadow-xl);background:#fff;width:100%;max-width:480px;max-height:90dvh;animation:.2s cubic-bezier(.16,1,.3,1) both scaleIn;overflow-y:auto}.modal-header{justify-content:space-between;align-items:center;padding:20px 24px 0;display:flex}.modal-title{font-family:var(--font-display);color:var(--ink);font-size:20px}.modal-body{flex-direction:column;gap:16px;padding:16px 24px 24px;display:flex}.modal-footer{justify-content:flex-end;gap:8px;padding:0 24px 24px;display:flex}.empty-state{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:12px;padding:48px 24px;display:flex}.empty-state-icon{width:48px;height:48px;color:var(--sand-dark)}.empty-state-title{color:var(--ink-mid);font-size:16px;font-weight:500}.empty-state-desc{color:var(--ink-light);max-width:320px;font-size:14px}.progress-bar{background:var(--cream-darker);border-radius:100px;height:6px;overflow:hidden}.progress-fill{border-radius:100px;height:100%;transition:width .4s cubic-bezier(.16,1,.3,1)}.divider{background:var(--cream-darker);border:none;height:1px}.icon-btn{border-radius:var(--radius-sm);width:32px;height:32px;color:var(--ink-light);cursor:pointer;background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;transition:all .15s;display:inline-flex}.icon-btn:hover{background:var(--cream-dark);color:var(--ink)}.icon-btn-lg{border-radius:var(--radius);width:40px;height:40px}.tabs{background:var(--cream-dark);border-radius:var(--radius);gap:2px;padding:3px;display:flex}.tab{color:var(--ink-light);border-radius:calc(var(--radius) - 2px);cursor:pointer;text-align:center;background:0 0;border:none;flex:1;padding:6px 12px;font-size:13px;font-weight:500;transition:all .15s}.tab:hover{color:var(--ink)}.tab-active{color:var(--ink);box-shadow:var(--shadow-sm);background:#fff}.chip{background:var(--cream-dark);color:var(--ink-mid);border:1px solid var(--cream-darker);border-radius:100px;align-items:center;gap:4px;padding:3px 10px;font-size:12px;font-weight:500;display:inline-flex}.avatar{background:var(--forest);color:var(--cream);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:13px;font-weight:600;display:inline-flex}.avatar-sm{width:28px;height:28px;font-size:11px}.avatar-md{width:36px;height:36px;font-size:13px}.avatar-lg{width:48px;height:48px;font-size:16px}.layout{min-height:100dvh;display:flex}.sidebar{width:var(--nav-width);border-right:1px solid var(--cream-darker);z-index:100;background:#fff;flex-direction:column;flex-shrink:0;height:100dvh;display:flex;position:sticky;top:0;overflow-y:auto}.sidebar-header{padding:20px 16px 12px}.sidebar-logo{align-items:center;gap:8px;text-decoration:none;display:flex}.sidebar-logo-img{width:auto;height:22px;display:block}.wallet-selector{border-radius:var(--radius);border:1px solid var(--cream-darker);cursor:pointer;-webkit-user-select:none;user-select:none;margin:0 10px 8px;position:relative}.wallet-selector-inner{align-items:center;gap:8px;padding:8px 10px;display:flex}.wallet-dot{border-radius:50%;flex-shrink:0;width:8px;height:8px}.wallet-info{flex:1;min-width:0}.wallet-name{color:var(--ink);white-space:nowrap;text-overflow:ellipsis;font-size:13px;font-weight:500;display:block;overflow:hidden}.wallet-currency{color:var(--ink-faint);font-size:11px;display:block}.wallet-dropdown{border:1px solid var(--cream-darker);border-radius:var(--radius);box-shadow:var(--shadow-lg);z-index:200;background:#fff;animation:.15s cubic-bezier(.16,1,.3,1) both scaleIn;position:absolute;top:calc(100% + 4px);left:0;right:0;overflow:hidden}.wallet-option{width:100%;font-size:13px;font-family:var(--font-body);color:var(--ink-mid);cursor:pointer;text-align:left;background:0 0;border:none;align-items:center;gap:8px;padding:8px 10px;transition:background .1s;display:flex}.wallet-option:hover{background:var(--cream)}.wallet-option-active{color:var(--forest);font-weight:500}.quick-add-btn{background:var(--forest);color:var(--cream);border-radius:var(--radius);font-size:13px;font-family:var(--font-body);cursor:pointer;border:none;align-items:center;gap:8px;margin:0 10px 12px;padding:8px 12px;font-weight:500;transition:background .15s;display:flex}.quick-add-btn:hover{background:var(--forest-mid)}.kbd-hint{background:var(--forest-kbd);font-size:11px;font-family:var(--font-body);border-radius:4px;margin-left:auto;padding:1px 5px}.sidebar-nav{flex-direction:column;flex:1;gap:1px;padding:0 8px;display:flex}.nav-item{border-radius:var(--radius-sm);color:var(--ink-mid);align-items:center;gap:9px;padding:8px 10px;font-size:13.5px;font-weight:400;text-decoration:none;transition:all .12s;display:flex}.nav-item:hover{background:var(--cream);color:var(--ink)}.nav-item-active{background:var(--forest-tint);color:var(--forest);font-weight:500}.sidebar-bottom{border-top:1px solid var(--cream-darker);flex-direction:column;gap:1px;padding:8px;display:flex}.user-row{align-items:center;gap:8px;margin-top:4px;padding:8px 10px;display:flex}.user-info{flex:1;min-width:0}.user-name{color:var(--ink);white-space:nowrap;text-overflow:ellipsis;font-size:13px;font-weight:500;display:block;overflow:hidden}.user-role{color:var(--forest-light);font-size:11px;display:block}.main-content{flex-direction:column;flex:1;min-width:0;display:flex}.mobile-header{height:var(--header-height);border-bottom:1px solid var(--cream-darker);z-index:50;background:#fff;justify-content:space-between;align-items:center;padding:0 12px;display:none;position:sticky;top:0}.page-content{flex:1;width:100%;max-width:1200px;margin:0 auto;padding:clamp(20px,4vw,40px)}.fab{background:var(--forest);width:56px;height:56px;color:var(--cream);cursor:pointer;box-shadow:var(--shadow-lg);z-index:500;border:none;border-radius:50%;justify-content:center;align-items:center;transition:transform .15s,background .15s;display:none;position:fixed;bottom:24px;right:24px}.fab:hover{background:var(--forest-mid);transform:scale(1.05)}.fab:active{transform:scale(.97)}.mobile-overlay{z-index:99;background:oklch(18% .02 80/.4);display:none;position:fixed;inset:0}@media (width<=768px){.sidebar{z-index:200;transition:transform .25s cubic-bezier(.16,1,.3,1);position:fixed;top:0;bottom:0;left:0;transform:translate(-100%)}.sidebar-open{transform:translate(0)}.mobile-header{display:flex}.mobile-overlay{display:block}.fab{display:flex}.page-content{padding:16px}}.page-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:28px;display:flex}.page-title{font-family:var(--font-display);color:var(--ink);font-size:clamp(24px,4vw,32px);font-style:italic}.page-subtitle{color:var(--ink-light);margin-top:4px;font-size:14px}.page-actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.ss-root{width:100%;position:relative}.ss-trigger{width:100%;font-size:14px;font-family:var(--font-body);border:1.5px solid var(--sand);border-radius:var(--radius);color:var(--ink);cursor:pointer;text-align:left;background:#fff;outline:none;justify-content:space-between;align-items:center;gap:8px;padding:9px 12px;transition:border-color .15s,box-shadow .15s;display:flex}.ss-trigger:focus-visible{border-color:var(--forest-mid);box-shadow:0 0 0 3px var(--forest-focus);outline:none}.ss-open .ss-trigger{border-color:var(--forest-mid);box-shadow:0 0 0 3px var(--forest-focus)}.ss-disabled .ss-trigger{opacity:.5;cursor:not-allowed}.ss-placeholder{color:var(--ink-faint);text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.ss-value{text-overflow:ellipsis;white-space:nowrap;color:var(--ink);flex:1;overflow:hidden}.ss-chevron{color:var(--ink-faint);flex-shrink:0;transition:transform .15s}.ss-open .ss-chevron{transform:rotate(180deg)}.ss-dropdown{border:1.5px solid var(--sand);border-radius:var(--radius);box-shadow:var(--shadow-lg);background:#fff;flex-direction:column;animation:.12s cubic-bezier(.16,1,.3,1) both ssDropIn;display:flex;overflow:hidden}.ss-dropdown-up{animation:.12s cubic-bezier(.16,1,.3,1) both ssDropUp}@keyframes ssDropIn{0%{opacity:0;transform:translateY(-4px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes ssDropUp{0%{opacity:0;transform:translateY(4px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}.ss-search-wrap{border-bottom:1px solid var(--cream-dark);align-items:center;gap:8px;padding:8px 10px;display:flex}.ss-search-icon{color:var(--ink-faint);flex-shrink:0}.ss-search{font-size:13px;font-family:var(--font-body);color:var(--ink);background:0 0;border:none;outline:none;flex:1}.ss-search::placeholder{color:var(--ink-faint)}.ss-list{max-height:220px;padding:4px;list-style:none;overflow-y:auto}.ss-empty{color:var(--ink-faint);text-align:center;padding:10px;font-size:13px}.ss-option{border-radius:calc(var(--radius) - 4px);color:var(--ink);cursor:pointer;-webkit-user-select:none;user-select:none;justify-content:space-between;align-items:center;gap:8px;padding:8px 10px;font-size:14px;transition:background .1s;display:flex}.ss-option-focused{background:var(--cream-dark)}.ss-option-selected{color:var(--forest);font-weight:500}.ss-option-selected.ss-option-focused{background:var(--forest-tint)}.ss-option-label{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.ss-option-check{color:var(--forest);flex-shrink:0}.select-root{width:100%;position:relative}.select-trigger{width:100%;font-size:14px;font-family:var(--font-body);border:1.5px solid var(--sand);border-radius:var(--radius);color:var(--ink);cursor:pointer;text-align:left;background:#fff;outline:none;justify-content:space-between;align-items:center;gap:8px;padding:9px 12px;transition:border-color .15s,box-shadow .15s;display:flex}.select-trigger:focus-visible{border-color:var(--forest-mid);box-shadow:0 0 0 3px var(--forest-focus);outline:none}.select-open .select-trigger{border-color:var(--forest-mid);box-shadow:0 0 0 3px var(--forest-focus)}.select-disabled .select-trigger{opacity:.5;cursor:not-allowed}.select-placeholder{color:var(--ink-faint);text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.select-value{text-overflow:ellipsis;white-space:nowrap;color:var(--ink);flex:1;overflow:hidden}.select-chevron{color:var(--ink-faint);flex-shrink:0;transition:transform .15s}.select-open .select-chevron{transform:rotate(180deg)}.select-dropdown{border:1.5px solid var(--sand);border-radius:var(--radius);box-shadow:var(--shadow-lg);background:#fff;max-height:240px;padding:4px;list-style:none;animation:.12s cubic-bezier(.16,1,.3,1) both selectDropIn;overflow-y:auto}.select-dropdown-up{animation:.12s cubic-bezier(.16,1,.3,1) both selectDropUp}@keyframes selectDropIn{0%{opacity:0;transform:translateY(-4px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes selectDropUp{0%{opacity:0;transform:translateY(4px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}.select-option{border-radius:calc(var(--radius) - 4px);color:var(--ink);cursor:pointer;-webkit-user-select:none;user-select:none;justify-content:space-between;align-items:center;gap:8px;padding:8px 10px;font-size:14px;transition:background .1s;display:flex}.select-option-focused{background:var(--cream-dark)}.select-option-selected{color:var(--forest);font-weight:500}.select-option-selected.select-option-focused{background:var(--forest-tint)}.select-option-label{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.select-option-check{color:var(--forest);flex-shrink:0}.dp-root{width:100%;position:relative}.dp-trigger{width:100%;font-size:14px;font-family:var(--font-body);border:1.5px solid var(--sand);border-radius:var(--radius);color:var(--ink);cursor:pointer;text-align:left;background:#fff;outline:none;justify-content:space-between;align-items:center;gap:8px;padding:9px 12px;transition:border-color .15s,box-shadow .15s;display:flex}.dp-trigger:focus-visible{border-color:var(--forest-mid);box-shadow:0 0 0 3px var(--forest-focus);outline:none}.dp-open .dp-trigger{border-color:var(--forest-mid);box-shadow:0 0 0 3px var(--forest-focus)}.dp-disabled .dp-trigger{opacity:.5;cursor:not-allowed}.dp-placeholder{color:var(--ink-faint);flex:1}.dp-value{color:var(--ink);flex:1}.dp-icon{color:var(--ink-faint);flex-shrink:0}.dp-popup{border:1.5px solid var(--sand);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);background:#fff;width:272px;padding:12px;animation:.12s cubic-bezier(.16,1,.3,1) both selectDropIn}.dp-popup-up{animation:.12s cubic-bezier(.16,1,.3,1) both selectDropUp}.dp-header{justify-content:space-between;align-items:center;margin-bottom:10px;display:flex}.dp-month-label{color:var(--ink);font-size:14px;font-weight:500}.dp-nav-btn{border-radius:var(--radius-sm);width:28px;height:28px;color:var(--ink-light);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;transition:background .1s,color .1s;display:flex}.dp-nav-btn:hover{background:var(--cream-dark);color:var(--ink)}.dp-grid{grid-template-columns:repeat(7,1fr);gap:2px;display:grid}.dp-day-name{color:var(--ink-faint);text-align:center;letter-spacing:.02em;padding:4px 0 6px;font-size:11px;font-weight:500}.dp-cell-wrap{justify-content:center;align-items:center;display:flex}.dp-day{border-radius:var(--radius-sm);width:32px;height:32px;color:var(--ink);cursor:pointer;font-size:13px;font-family:var(--font-body);background:0 0;border:none;justify-content:center;align-items:center;transition:background .1s,color .1s;display:flex}.dp-day:hover{background:var(--cream-dark)}.dp-day-today{color:var(--forest);background:var(--forest-tint);font-weight:600}.dp-day-today:hover{background:var(--cream-darker)}.dp-day-selected{font-weight:500;background:var(--forest)!important;color:var(--cream)!important}.dp-day-selected:hover{background:var(--forest-mid)!important}.dp-footer{border-top:1px solid var(--cream-darker);justify-content:flex-end;margin-top:10px;padding-top:10px;display:flex}.dp-today-btn{color:var(--forest-light);cursor:pointer;border-radius:var(--radius-sm);font-size:12px;font-weight:500;font-family:var(--font-body);background:0 0;border:none;padding:4px 8px;transition:background .1s,color .1s}.dp-today-btn:hover{background:var(--forest-tint);color:var(--forest)}
