*,*:before,*:after{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}:root{--coral: #243b63;--coral-light: #4b648d;--coral-dark: #162742;--cream: #f3f5f8;--cream-dark: #d7dee8;--brown: #425066;--brown-light: #6a7890;--dark: #162033;--dark-mid: #2a3650;--gray: #5c677a;--gray-light: #b3becc;--white: #ffffff;--success: #587a72;--warning: #8f7649;--danger: #8a5660;--font-display: "Playfair Display", serif;--font-body: "Noto Sans TC", sans-serif;--bottom-nav-height: 72px;--top-bar-height: 56px;--safe-top: env(safe-area-inset-top, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px);--shadow-soft: 0 2px 12px rgba(22, 32, 51, .06);--shadow-card: 0 8px 24px rgba(22, 32, 51, .08)}html,body{height:100%;overflow:hidden;overscroll-behavior-y:contain;-webkit-text-size-adjust:100%}body{font-family:var(--font-body);background:linear-gradient(180deg,#eef2f7 0%,var(--cream) 100%);color:var(--dark);-webkit-font-smoothing:antialiased}#root{height:100%;display:flex;flex-direction:column}button{font-family:var(--font-body);cursor:pointer;border:none;background:none}input,textarea{font-family:var(--font-body)}select{-webkit-appearance:none;-moz-appearance:none;appearance:none;box-sizing:border-box;line-height:1.3;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%2397897e' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;background-size:10px 6px;padding-right:26px!important}select::-ms-expand{display:none}::-webkit-scrollbar{width:4px;height:4px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--gray-light);border-radius:2px}.hide-scrollbar::-webkit-scrollbar{display:none}.hide-scrollbar{-ms-overflow-style:none;scrollbar-width:none}@keyframes fadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes slideUp{0%{opacity:0;transform:translateY(100%)}to{opacity:1;transform:translateY(0)}}@keyframes spin{to{transform:rotate(360deg)}}.fade-in{animation:fadeIn .25s ease forwards}.slide-up{animation:slideUp .3s cubic-bezier(.32,.72,0,1) forwards}:root{--overlay-ease: cubic-bezier(.32, .72, 0, 1);--overlay-backdrop: rgba(22, 32, 51, .42);--sheet-bottom-space: max(16px, calc(var(--safe-bottom) + 8px));--sheet-top-gap: calc(max(var(--safe-top), 12px) + 28px) }@keyframes overlayFadeIn{0%{opacity:0}to{opacity:1}}@keyframes overlayFadeOut{0%{opacity:1}to{opacity:0}}@keyframes sheetIn{0%{transform:translateY(100%)}to{transform:none}}@keyframes sheetOut{0%{transform:translateY(var(--overlay-drag, 0px))}to{transform:translateY(100%)}}@keyframes dialogIn{0%{opacity:0;transform:translateY(8px) scale(.97)}to{opacity:1;transform:none}}@keyframes dialogOut{0%{opacity:1;transform:none}to{opacity:0;transform:scale(.97)}}@keyframes drawerIn{0%{transform:translate(100%)}to{transform:none}}@keyframes drawerOut{0%{transform:translate(var(--overlay-drag, 0px))}to{transform:translate(100%)}}.overlay-root{position:fixed;top:0;right:0;bottom:0;left:0;display:flex}.overlay-backdrop{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--overlay-backdrop);animation:overlayFadeIn .24s ease both}.overlay-leaving .overlay-backdrop{animation:overlayFadeOut .24s ease both}.modal-root--dialog{align-items:center;justify-content:center;padding:max(var(--safe-top),16px) 16px max(var(--safe-bottom),16px)}.modal-root--sheet{align-items:flex-end;justify-content:center}.modal-panel{position:relative;background:var(--cream);display:flex;flex-direction:column;overflow:hidden;box-shadow:var(--shadow-card)}.modal-panel--dialog{width:min(440px,100%);max-height:88%;border-radius:20px;animation:dialogIn .22s ease both}.overlay-leaving .modal-panel--dialog{animation:dialogOut .18s ease both}.modal-panel--sheet{width:100%;max-height:calc(100% - var(--sheet-top-gap));border-radius:20px 20px 0 0;box-shadow:0 -8px 32px #1620331f;animation:sheetIn .34s var(--overlay-ease) both}.modal-panel--full{height:calc(100% - var(--sheet-top-gap))}.overlay-leaving .modal-panel--sheet{animation:sheetOut .26s cubic-bezier(.4,0,1,1) both}.modal-drag-area{flex-shrink:0;touch-action:none;user-select:none;-webkit-user-select:none;border-bottom:1px solid var(--cream-dark)}.modal-grabber{width:40px;height:5px;border-radius:999px;background:var(--gray-light);margin:8px auto 0}.modal-header{padding:14px 20px 12px;display:flex;align-items:center;justify-content:space-between;gap:12px;flex-shrink:0}.modal-panel--dialog>.modal-header{border-bottom:1px solid var(--cream-dark);padding:16px 20px 12px}.modal-panel--sheet .modal-header{padding-top:6px}.modal-panel--sheet .modal-drag-area:not(:has(.modal-header)){padding-bottom:12px;border-bottom:none}.modal-body{flex:1;min-height:0;overflow:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}.modal-panel--sheet>.modal-body{padding-bottom:var(--sheet-bottom-space)}.modal-panel--dialog>.modal-body{padding-bottom:20px}.modal-body>:last-child{padding-bottom:0!important;margin-bottom:0!important}.modal-body .expense-card:last-child{margin-bottom:0!important}@media (min-width: 720px){.modal-root--sheet{align-items:center;padding:24px 16px}.modal-panel--sheet{width:min(680px,100%);max-height:88%;border-radius:24px;box-shadow:var(--shadow-card);animation:dialogIn .22s ease both}.modal-panel--full{height:auto}.overlay-leaving .modal-panel--sheet{animation:dialogOut .18s ease both}.modal-grabber{display:none}.modal-drag-area{touch-action:auto}.modal-panel--sheet .modal-header{padding-top:16px}.modal-panel--sheet>.modal-body{padding-bottom:20px}}.drawer-root{justify-content:flex-end}.drawer-panel{position:relative;width:min(320px,84vw);height:100%;background:var(--cream);display:flex;flex-direction:column;box-shadow:-8px 0 32px #16203324;border-radius:20px 0 0 20px;touch-action:pan-y;animation:drawerIn .3s var(--overlay-ease) both}.overlay-leaving .drawer-panel{animation:drawerOut .24s cubic-bezier(.4,0,1,1) both}.drawer-header{display:flex;align-items:center;gap:12px;padding:calc(var(--safe-top) + 18px) 20px 14px;border-bottom:1px solid var(--cream-dark);flex-shrink:0}.drawer-body{flex:1;min-height:0;overflow:auto;overscroll-behavior:contain;touch-action:pan-y;padding:12px 12px 16px}.drawer-footer{flex-shrink:0;padding:12px 20px var(--sheet-bottom-space);border-top:1px solid var(--cream-dark)}.drawer-item{width:100%;min-height:52px;display:flex;align-items:center;gap:12px;padding:12px;border-radius:12px;text-align:left;font-size:15px;font-weight:600;color:var(--dark)}.drawer-item:hover,.drawer-item:active{background:var(--white)}@media (prefers-reduced-motion: reduce){.overlay-backdrop,.modal-panel,.drawer-panel{animation-duration:.01ms!important}}input[type=date]{min-width:0}input[type=date]::-webkit-date-and-time-value{text-align:left;margin:0}
