*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }.pointer-events-none{pointer-events:none}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{top:0;right:0;bottom:0;left:0}.bottom-10{bottom:2.5rem}.left-10{left:2.5rem}.right-10{right:2.5rem}.top-10{top:2.5rem}.z-10{z-index:10}.mx-2{margin-left:.5rem;margin-right:.5rem}.mb-2{margin-bottom:.5rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.mt-6{margin-top:1.5rem}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.grid{display:grid}.hidden{display:none}.h-2{height:.5rem}.h-32{height:8rem}.h-full{height:100%}.min-h-screen{min-height:100vh}.w-2{width:.5rem}.w-32{width:8rem}.w-full{width:100%}.max-w-sm{max-width:24rem}.flex-1{flex:1 1 0%}.flex-shrink{flex-shrink:1}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}.resize{resize:both}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-center{justify-content:center}.gap-2{gap:.5rem}.space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem * var(--tw-space-y-reverse))}.overflow-hidden{overflow:hidden}.rounded-2xl{border-radius:20px}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.border{border-width:1px}.border-b-2{border-bottom-width:2px}.border-l-2{border-left-width:2px}.border-r-2{border-right-width:2px}.border-t-2{border-top-width:2px}.border-cyan-400{--tw-border-opacity: 1;border-color:rgb(34 211 238 / var(--tw-border-opacity, 1))}.border-gray-700\/50{border-color:#37415180}.bg-gray-900\/50{background-color:#11182780}.bg-gray-900\/70{background-color:#111827b3}.bg-green-500{--tw-bg-opacity: 1;background-color:rgb(34 197 94 / var(--tw-bg-opacity, 1))}.p-1{padding:.25rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.px-4{padding-left:1rem;padding-right:1rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-3\.5{padding-top:.875rem;padding-bottom:.875rem}.text-center{text-align:center}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.uppercase{text-transform:uppercase}.tracking-wider{letter-spacing:.05em}.text-cyan-300{--tw-text-opacity: 1;color:rgb(103 232 249 / var(--tw-text-opacity, 1))}.text-gray-400{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.text-red-300{--tw-text-opacity: 1;color:rgb(252 165 165 / var(--tw-text-opacity, 1))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.placeholder-gray-500::-moz-placeholder{--tw-placeholder-opacity: 1;color:rgb(107 114 128 / var(--tw-placeholder-opacity, 1))}.placeholder-gray-500::placeholder{--tw-placeholder-opacity: 1;color:rgb(107 114 128 / var(--tw-placeholder-opacity, 1))}.opacity-20{opacity:.2}.opacity-30{opacity:.3}.outline{outline-style:solid}.blur{--tw-blur: blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.drop-shadow{--tw-drop-shadow: drop-shadow(0 1px 2px rgb(0 0 0 / .1)) drop-shadow(0 1px 1px rgb(0 0 0 / .06));filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-300{transition-duration:.3s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}:root{--income: #22c55e;--expense: #ef4444;--bg: #070d20;--card: rgba(13, 21, 53, .85);--border: rgba(0, 212, 255, .15);--text: #e0f7ff;--text-muted: rgba(100, 210, 255, .55);--primary: #00d4ff;--primary-dark: #7c3aed;--radius: 16px;--shadow: 0 4px 24px rgba(0,0,0,.5);--header-h: 130px;--nav-h: 64px;--cyan: #00d4ff;--magenta: #ff00aa}*{box-sizing:border-box;margin:0;padding:0}body{font-family:-apple-system,PingFang HK,Microsoft JhengHei,sans-serif;background:var(--bg);color:var(--text);overflow-x:hidden}.app-container{max-width:480px;margin:0 auto;display:flex;flex-direction:column;position:relative;background:linear-gradient(180deg,#070d20,#0a0f2e,#070d20);min-height:100vh}.income-color{color:var(--income)!important}.expense-color{color:var(--expense)!important}.income-color.summary-value{color:#86efac!important}.expense-color.summary-value{color:#fca5a5!important}.app-main{flex:1;overflow-y:auto;padding:16px;padding-bottom:calc(var(--nav-h) + 16px)}.bottom-nav{position:fixed;bottom:0;left:50%;transform:translate(-50%);width:100%;max-width:480px;height:var(--nav-h);background:#050a1af2;border-top:1px solid rgba(0,212,255,.15);display:flex;z-index:100;box-shadow:0 -4px 24px #0009,0 1px #00d4ff1a inset;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}.nav-item{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;background:none;border:none;cursor:pointer;color:#64d2ff66;transition:all .25s ease;padding:8px 0;position:relative;font-family:Courier New,monospace}.nav-item:before{content:"";position:absolute;top:0;left:50%;transform:translate(-50%);width:0;height:2px;background:linear-gradient(90deg,transparent,var(--cyan),transparent);transition:width .3s ease;border-radius:0 0 2px 2px}.nav-item.active{color:var(--cyan);text-shadow:0 0 12px rgba(0,212,255,.8)}.nav-item.active:before{width:40px}.nav-item:hover{color:#00d4ffb3}.nav-icon{font-size:20px}.nav-label{font-size:10px;font-weight:700;letter-spacing:.5px;text-transform:uppercase}.numpad-crystal{background:#ffffff8c;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid rgba(255,255,255,.7);border-radius:24px;padding:18px;box-shadow:0 8px 32px #6366f11f,0 1px #fffc inset,0 -1px #fff6 inset;position:relative;overflow:hidden}.numpad-crystal:before{content:"";position:absolute;top:0;left:10%;right:10%;height:1px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.9),transparent)}.type-toggle{display:flex;background:#fff6;border:1px solid rgba(255,255,255,.6);border-radius:14px;padding:4px;margin-bottom:16px;gap:4px;box-shadow:0 2px 8px #0000000f inset}.toggle-btn{flex:1;padding:9px;border:none;background:none;border-radius:10px;font-size:15px;font-weight:700;cursor:pointer;color:#1e293b8c;transition:all .25s ease;letter-spacing:.5px}.toggle-btn.active.expense{background:linear-gradient(135deg,#ef4444,#dc2626);color:#fff;box-shadow:0 4px 14px #ef444473}.toggle-btn.active.income{background:linear-gradient(135deg,#22c55e,#16a34a);color:#fff;box-shadow:0 4px 14px #22c55e73}.crystal-display{text-align:center;padding:14px 16px;border-radius:16px;background:#fff9;border:1.5px solid rgba(255,255,255,.9);margin-bottom:14px;box-shadow:0 4px 16px #0000000f,0 1px #fff inset;position:relative;overflow:hidden}.crystal-display:after{content:"";position:absolute;top:0;left:0;right:0;height:50%;background:linear-gradient(180deg,rgba(255,255,255,.5),transparent);border-radius:16px 16px 0 0;pointer-events:none}.crystal-display.income-color{border-color:#22c55e66;box-shadow:0 4px 16px #22c55e26,0 1px #fff inset}.crystal-display.expense-color{border-color:#ef444466;box-shadow:0 4px 16px #ef444426,0 1px #fff inset}.crystal-currency{font-size:22px;margin-right:2px;opacity:.7}.crystal-amount{font-size:36px;font-weight:800;letter-spacing:-1px}.date-row{display:flex;align-items:center;gap:10px;margin-bottom:12px;font-size:13px;font-weight:600;color:#1e293b99}.crystal-date-input{flex:1;padding:7px 12px;border:1px solid rgba(200,210,230,.7);border-radius:10px;font-size:14px;color:#1a1a2e;background:#ffffffb3;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);outline:none;transition:border-color .2s}.crystal-date-input:focus{border-color:var(--primary)}.category-grid{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}.category-btn{padding:6px 13px;border-radius:20px;border:1.5px solid rgba(200,210,230,.6);background:#fff9;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);font-size:13px;font-weight:500;cursor:pointer;transition:all .18s;color:#1a1a2e}.category-btn:hover{border-color:var(--primary);background:#ffffffe6}.category-btn.selected.expense{background:linear-gradient(135deg,#ef4444,#dc2626);color:#fff;border-color:transparent;box-shadow:0 3px 10px #ef444459}.category-btn.selected.income{background:linear-gradient(135deg,#22c55e,#16a34a);color:#fff;border-color:transparent;box-shadow:0 3px 10px #22c55e59}.note-input{width:100%;padding:9px 14px;border:1px solid rgba(200,210,230,.7);border-radius:12px;font-size:14px;color:#1a1a2e;margin-bottom:16px;outline:none;background:#ffffffa6;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);transition:border-color .2s,box-shadow .2s}.note-input:focus{border-color:var(--primary);box-shadow:0 0 0 3px #6366f11f}.crystal-keypad{display:flex;gap:10px;margin-bottom:12px;align-items:flex-start}.digit-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;flex:1}.digit-btn{aspect-ratio:1;border:none;border-radius:14px;font-size:22px;font-weight:700;cursor:pointer;text-align:center;position:relative;overflow:hidden;color:#1e293b;background:#ffffffb8;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid rgba(255,255,255,.9);box-shadow:0 4px 16px #6366f114,0 2px 6px #0000000d,0 1px #fff inset,0 -1px #ffffff80 inset;transition:all .15s cubic-bezier(.34,1.56,.64,1);display:flex;align-items:center;justify-content:center;letter-spacing:-.5px}.digit-btn:before{content:"";position:absolute;top:0;left:10%;right:10%;height:50%;background:linear-gradient(180deg,rgba(255,255,255,.7),transparent);border-radius:14px 14px 0 0;pointer-events:none}.digit-btn:hover{background:#ffffffeb;box-shadow:0 6px 24px #6366f126,0 2px 6px #0000000f,0 1px #fff inset,0 -1px #ffffff80 inset;transform:translateY(-1px)}.digit-btn:active{transform:translateY(1px) scale(.95);box-shadow:0 1px 4px #0000001a,0 1px #fffc inset,0 -1px #ffffff4d inset}.side-col{display:flex;flex-direction:column;gap:8px;width:calc((100% - 16px)/4)}.side-btn{border:none;border-radius:14px;cursor:pointer;display:flex;align-items:center;justify-content:center;font-weight:600;position:relative;overflow:hidden;transition:all .15s cubic-bezier(.34,1.56,.64,1);width:100%;aspect-ratio:1}.clear-crystal{background:#ffffffb8;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid rgba(255,255,255,.9);color:#64748be6;box-shadow:0 4px 16px #64748b1a,0 1px #fff inset,0 -1px #ffffff80 inset}.clear-crystal:before{content:"";position:absolute;top:0;left:10%;right:10%;height:50%;background:linear-gradient(180deg,rgba(255,255,255,.7),transparent);border-radius:14px 14px 0 0;pointer-events:none}.clear-crystal:hover{background:#f8fafcf2;box-shadow:0 4px 14px #64748b26;transform:translateY(-1px)}.clear-crystal:active{transform:translateY(1px) scale(.95);box-shadow:0 1px 4px #00000014}.zero-btn{font-size:22px;font-weight:700;aspect-ratio:1;width:100%}.backspace-crystal{background:#fef2f2cc;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid rgba(239,68,68,.2);color:#ef4444d9;box-shadow:0 4px 16px #ef444414,0 1px #fff inset,0 -1px #ffffff80 inset}.backspace-crystal:before{content:"";position:absolute;top:0;left:10%;right:10%;height:50%;background:linear-gradient(180deg,rgba(255,255,255,.6),transparent);border-radius:14px 14px 0 0;pointer-events:none}.backspace-crystal:hover{background:#fee2e2f2;box-shadow:0 4px 14px #ef444433;transform:translateY(-1px)}.backspace-crystal:active{transform:translateY(1px) scale(.95)}.decimal-hint{text-align:center;font-size:11px;color:#64748b99;margin-bottom:4px;letter-spacing:.3px}.confirm-crystal{width:100%;padding:15px;border:none;border-radius:16px;font-size:17px;font-weight:800;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:8px;letter-spacing:.5px;position:relative;overflow:hidden;transition:all .2s cubic-bezier(.34,1.56,.64,1);color:#fff}.confirm-crystal:before{content:"";position:absolute;top:0;left:0;right:0;height:50%;background:linear-gradient(180deg,rgba(255,255,255,.25),transparent);pointer-events:none}.confirm-crystal:after{content:"";position:absolute;top:0;left:-100%;right:0;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.2),transparent);transition:left .5s ease;pointer-events:none}.confirm-crystal:hover:after{left:100%}.confirm-crystal.expense{background:linear-gradient(135deg,#ef4444,#dc2626,#b91c1c);box-shadow:0 6px 24px #ef444473,0 2px 8px #0000001a}.confirm-crystal.income{background:linear-gradient(135deg,#22c55e,#16a34a,#15803d);box-shadow:0 6px 24px #22c55e73,0 2px 8px #0000001a}.confirm-crystal:hover{transform:translateY(-2px);box-shadow:0 10px 32px #0003}.confirm-crystal:active{transform:translateY(1px) scale(.98)}.confirm-crystal:disabled{opacity:.7;cursor:not-allowed;transform:none}.loading-dots span{animation:blink 1.4s infinite both}.loading-dots span:nth-child(2){animation-delay:.2s}.loading-dots span:nth-child(3){animation-delay:.4s}@keyframes blink{0%,80%,to{opacity:0}40%{opacity:1}}.error-msg{color:var(--expense);font-size:13px;margin-top:8px;text-align:center;font-weight:600;text-shadow:0 1px 2px rgba(239,68,68,.1)}.today-list{margin-top:16px}.today-list-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;font-size:13px;font-weight:700;color:#00d4ffb3;font-family:Courier New,monospace;letter-spacing:1px;text-transform:uppercase}.loading-sm{font-size:11px;color:#00d4ff66;letter-spacing:1px}.transaction-list{display:flex;flex-direction:column;gap:8px}.transaction-item{display:flex;align-items:center;gap:10px;background:#0d1535e0;border-radius:14px;padding:10px 12px;border:1px solid rgba(255,255,255,.07);box-shadow:0 4px 16px #0000004d;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);position:relative;overflow:hidden;transition:all .2s ease}.transaction-item:before{content:"";position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.08),transparent)}.transaction-item:hover{transform:translate(2px);border-color:#00d4ff26}.category-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0;box-shadow:0 0 6px currentColor}.transaction-info{flex:1;min-width:0}.transaction-top{display:flex;align-items:center;gap:8px}.transaction-category{font-size:14px;font-weight:700;color:var(--text)}.transaction-note{font-size:12px;color:#64d2ff73;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.transaction-date{font-size:10px;color:#64d2ff59;margin-top:2px;font-family:Courier New,monospace;letter-spacing:.5px}.transaction-right{display:flex;align-items:center;gap:6px}.transaction-amount{font-size:15px;font-weight:800}.transaction-amount.income{color:#22c55e;text-shadow:0 0 10px rgba(34,197,94,.5)}.transaction-amount.expense{color:#ef4444;text-shadow:0 0 10px rgba(239,68,68,.5)}.delete-btn-sm{background:#ef44441a;border:1px solid rgba(239,68,68,.2);color:#ef444499;cursor:pointer;font-size:12px;padding:3px 7px;border-radius:6px;transition:all .2s}.delete-btn-sm:hover{background:#ef444433;color:#ef4444;border-color:#ef444480;box-shadow:0 0 8px #ef44444d}.stats-view{display:flex;flex-direction:column;gap:16px;padding:16px 16px 8px}.period-tabs{display:flex;background:#0d1535e6;border:1px solid rgba(0,212,255,.15);border-radius:12px;padding:4px;gap:4px;box-shadow:0 4px 20px #0006;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.period-tab{flex:1;padding:9px;border:none;background:none;border-radius:8px;font-size:13px;font-weight:700;cursor:pointer;color:#00d4ff80;transition:all .25s ease;letter-spacing:.5px;font-family:Courier New,monospace;text-transform:uppercase}.period-tab.active{background:linear-gradient(135deg,#00d4ff40,#7c3aed40);border:1px solid rgba(0,212,255,.4);color:var(--cyan);box-shadow:0 0 16px #00d4ff33,inset 0 1px #ffffff1a;text-shadow:0 0 10px rgba(0,212,255,.8)}.stats-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.stat-card{border-radius:16px;padding:14px 10px;text-align:center;position:relative;overflow:hidden;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid rgba(255,255,255,.1);box-shadow:0 4px 20px #0006;transition:transform .2s ease,box-shadow .2s ease}.stat-card:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:16px;opacity:.8;pointer-events:none}.stat-card:after{content:"";position:absolute;top:0;left:0;right:0;height:50%;background:linear-gradient(180deg,rgba(255,255,255,.08),transparent);border-radius:16px 16px 0 0;pointer-events:none}.income-card{background:#0d1535e6;border-color:#22c55e4d;box-shadow:0 4px 20px #0006,0 0 20px #22c55e14}.income-card:before{background:linear-gradient(145deg,rgba(34,197,94,.08),transparent)}.expense-card{background:#0d1535e6;border-color:#ef44444d;box-shadow:0 4px 20px #0006,0 0 20px #ef444414}.expense-card:before{background:linear-gradient(145deg,rgba(239,68,68,.08),transparent)}.balance-card{background:#0d1535e6;border-color:#00d4ff4d;box-shadow:0 4px 20px #0006,0 0 20px #00d4ff14}.balance-card:before{background:linear-gradient(145deg,rgba(0,212,255,.08),transparent)}.stat-card:hover{transform:translateY(-3px);box-shadow:0 8px 30px #00000080}.stat-label{display:block;font-size:10px;letter-spacing:1.5px;color:#64d2ff8c;margin-bottom:8px;font-family:Courier New,monospace;text-transform:uppercase}.stat-value{font-size:16px;font-weight:800}.chart-section{background:#0d1535e0;border-radius:20px;padding:16px;border:1px solid rgba(0,212,255,.12);box-shadow:0 8px 32px #0006,0 0 1px #00d4ff4d inset;position:relative;overflow:hidden}.chart-section:before{content:"";position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,rgba(0,212,255,.4),transparent)}.chart-section:after{content:"";position:absolute;top:0;left:0;right:0;height:40%;background:linear-gradient(180deg,rgba(255,255,255,.04),transparent);border-radius:20px 20px 0 0;pointer-events:none}.chart-section.half{flex:1}.charts-row{display:flex;gap:12px}.chart-title{font-size:13px;font-weight:700;letter-spacing:1px;color:var(--cyan);margin-bottom:12px;font-family:Courier New,monospace;text-transform:uppercase;text-shadow:0 0 10px rgba(0,212,255,.5);display:flex;align-items:center;gap:8px}.chart-title:before{content:"";display:inline-block;width:8px;height:8px;background:var(--cyan);border-radius:2px;box-shadow:0 0 8px var(--cyan);transform:rotate(45deg)}.chart-wrapper{height:220px;position:relative;z-index:1}.doughnut-wrapper{height:200px;position:relative;z-index:1}.chart-wrapper canvas,.doughnut-wrapper canvas{filter:drop-shadow(0 0 8px rgba(0,212,255,.2))}.loading{text-align:center;padding:32px;color:#00d4ff80;font-family:Courier New,monospace;letter-spacing:2px}.empty-state{text-align:center;padding:32px;color:#64d2ff66;font-family:Courier New,monospace;letter-spacing:1px;font-size:13px}.filter-view{display:flex;flex-direction:column;gap:14px}.section-title{font-size:17px;font-weight:700}.filter-form{background:var(--card);border-radius:var(--radius);padding:14px;box-shadow:var(--shadow)}.date-range-row{display:flex;align-items:flex-end;gap:8px;margin-bottom:12px}.date-field{flex:1;display:flex;flex-direction:column;gap:4px}.date-field label{font-size:12px;color:var(--text-muted)}.date-sep{color:var(--text-muted);padding-bottom:6px;font-size:14px}.search-btn{width:100%;padding:12px;background:var(--primary);color:#fff;border:none;border-radius:8px;font-size:15px;font-weight:600;cursor:pointer;transition:background .2s}.search-btn:hover{background:var(--primary-dark)}.search-btn:disabled{opacity:.7;cursor:not-allowed}.filter-stats{background:var(--card);border-radius:var(--radius);padding:12px 14px;box-shadow:var(--shadow);display:flex;justify-content:space-between;flex-wrap:wrap;gap:6px}.filter-stat-item{font-size:13px;font-weight:600}.calendar-view{display:flex;flex-direction:column;gap:0}.calendar-cell.has-event{background:#00d4ff0f}.day-dot{width:5px;height:5px;border-radius:50%;background:#22d3ee;position:absolute;bottom:4px;box-shadow:0 0 4px #22d3ee}.day-detail-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.add-btn-sm{padding:4px 12px;border-radius:6px;background:#00d4ff1a;border:1px solid rgba(0,212,255,.3);color:#00d4ffcc;font-size:.8rem;cursor:pointer;transition:all .2s}.add-btn-sm:hover{background:#00d4ff33}.day-events{margin-bottom:10px}.event-chip{display:flex;align-items:center;gap:8px;padding:8px 10px;border-radius:8px;background:#00d4ff0d;border-left:3px solid #22d3ee;margin-bottom:6px;font-size:.82rem}.event-title{flex:1;font-weight:600;color:#fff}.event-time{color:#ffffff80;font-size:.75rem}.event-cost{background:#fbbf2426;color:#fbbf24;padding:2px 6px;border-radius:4px;font-size:.7rem}.stats-toolbar{display:flex;align-items:center;gap:8px}.filter-toggle-btn{padding:8px 14px;border-radius:8px;background:#ffffff0a;border:1px solid rgba(255,255,255,.1);color:#fff9;font-size:.82rem;cursor:pointer;transition:all .2s;white-space:nowrap}.filter-toggle-btn.active{background:#00d4ff26;border-color:#00d4ff66;color:#00d4ffe6}.filter-toggle-btn:hover{background:#00d4ff1a}.filter-panel{background:#0d1535e6;border:1px solid rgba(0,212,255,.15);border-radius:12px;padding:14px;display:flex;flex-direction:column;gap:10px}.filter-row{display:flex;align-items:flex-end;gap:8px}.date-input{padding:8px 10px;background:#ffffff0d;border:1px solid rgba(255,255,255,.1);border-radius:8px;color:#fff;font-size:.85rem;outline:none;width:100%;box-sizing:border-box}.date-input:focus{border-color:#00d4ff80}.search-results{background:#0d1535cc;border-radius:12px;padding:12px}.search-stats-row{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;font-size:.82rem;color:#ffffff80}.clear-search{background:none;border:none;color:#f87171b3;cursor:pointer;font-size:.8rem}.activity-section{background:#0d1535e6;border:1px solid rgba(167,139,250,.2);border-radius:14px;overflow:hidden}.activity-header{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;cursor:pointer;transition:background .2s}.activity-header:hover{background:#a78bfa0d}.activity-title{display:flex;align-items:center;gap:8px;font-size:.9rem;font-weight:600}.activity-badge{background:#a78bfa26;color:#a78bfae6;padding:2px 8px;border-radius:10px;font-size:.7rem}.activity-summary{display:flex;align-items:center;gap:10px;font-size:.8rem}.activity-total{color:#ffffffb3}.activity-split{color:#fbbf24e6}.arrow-icon{color:#fff6}.activity-detail{padding:0 16px 12px}.activity-item{display:flex;align-items:center;justify-content:space-between;padding:10px 0;border-bottom:1px solid rgba(255,255,255,.04)}.activity-item:last-child{border-bottom:none}.activity-item-left{display:flex;flex-direction:column;gap:2px}.activity-item-title{font-size:.85rem;font-weight:600;color:#fff;padding-left:8px;border-left:2px solid}.activity-item-date{font-size:.72rem;color:#fff6}.activity-item-right{display:flex;flex-direction:column;align-items:flex-end;gap:2px}.activity-cost{font-size:.85rem;font-weight:600;color:#fbbf24}.split-badge{font-size:.65rem;padding:1px 6px;border-radius:4px}.split-badge.owner{background:#f8717126;color:#f87171e6}.split-badge.split{background:#fbbf2426;color:#fbbf24e6}.split-badge.custom{background:#60a5fa26;color:#60a5fae6}.calendar-cell{color:#fff}.calendar-cell:hover:not(.empty){background:#00d4ff14!important}.calendar-cell.today .day-num{background:var(--primary)!important;color:#fff!important}.calendar-cell.selected{background:#00d4ff26!important}.calendar-cell.has-data{background:#00d4ff0f}.calendar-cell.has-event{background:#a78bfa14}.day-income,.day-expense{text-shadow:none!important}.calendar-header{display:flex;align-items:center;justify-content:center;gap:20px;padding:10px 0 12px}.nav-btn{background:var(--card);border:1px solid var(--border);border-radius:8px;width:36px;height:36px;font-size:20px;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow);transition:background .2s}.nav-btn:hover{background:#f1f5f9}.month-title{font-size:17px;font-weight:700;min-width:140px;text-align:center}.weekday-header{display:grid;grid-template-columns:repeat(7,1fr);margin-bottom:4px}.weekday-cell{text-align:center;font-size:12px;font-weight:600;color:var(--text-muted);padding:4px 0}.weekday-cell.weekend{color:var(--expense)}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:3px}.calendar-cell{aspect-ratio:1;display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:pointer;border-radius:8px;padding:2px;transition:all .15s;position:relative;min-height:48px}.calendar-cell:hover:not(.empty){background:#f1f5f9}.calendar-cell.empty{cursor:default}.calendar-cell.today .day-num{background:var(--primary);color:#fff;border-radius:50%;width:24px;height:24px;display:flex;align-items:center;justify-content:center}.calendar-cell.selected{background:#ede9fe}.calendar-cell.has-data{background:#f8faff}.day-num{font-size:13px;font-weight:500;line-height:24px}.day-income{font-size:9px;color:var(--income);font-weight:600;line-height:1.2}.day-expense{font-size:9px;color:var(--expense);font-weight:600;line-height:1.2}.day-detail{margin-top:14px;background:var(--card);border-radius:var(--radius);padding:14px;box-shadow:var(--shadow)}.day-detail-title{font-size:15px;font-weight:700;margin-bottom:10px}.day-summary{display:flex;gap:16px;font-size:13px;font-weight:600;margin-bottom:10px;padding-bottom:10px;border-bottom:1px solid var(--border)}.settings-page{background:#060d1f;min-height:100vh}.settings-section{margin-bottom:24px}.settings-section-title{font-size:14px;font-weight:700;color:#94a3b8;margin-bottom:12px;text-transform:uppercase;letter-spacing:1px}.profile-card{display:flex;align-items:center;gap:12px;padding:14px;background:#0d1535e0;border-radius:12px;margin-bottom:14px;border:1px solid rgba(0,212,255,.12)}.avatar-circle{width:44px;height:44px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:18px;font-weight:700;color:#fff;flex-shrink:0}.profile-info{flex:1}.profile-name{font-size:15px;font-weight:700;color:#e2e8f0}.profile-sub{display:flex;align-items:center;gap:8px;margin-top:4px}.plan-badge{font-size:11px;font-weight:700;padding:2px 8px;border-radius:20px;border:1px solid}.upgrade-btn-inline{font-size:11px;padding:2px 8px;border-radius:20px;background:#00d4ff1a;border:1px solid rgba(0,212,255,.3);color:#00d4ff;cursor:pointer}.user-color-section{padding:12px 14px;background:#0d1535e0;border-radius:12px;margin-bottom:14px;border:1px solid rgba(0,212,255,.12)}.user-color-label{font-size:13px;font-weight:600;color:#94a3b8;margin-bottom:10px}.user-color-picker{display:flex;gap:10px}.user-color-swatch{width:28px;height:28px;border-radius:50%;border:2px solid transparent;cursor:pointer;transition:transform .15s}.user-color-swatch.active{border-color:#fff;transform:scale(1.15)}.color-saving{font-size:11px;color:#94a3b8;margin-top:6px}.subscription-panel{background:#0d1535e0;border-radius:12px;padding:14px;margin-bottom:14px;border:1px solid rgba(0,212,255,.12)}.sub-panel-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;font-weight:700;color:#e2e8f0}.close-btn{background:none;border:none;color:#94a3b8;cursor:pointer;font-size:16px}.upgrade-msg{font-size:12px;color:#f87171;margin-bottom:8px}.sub-plans{display:flex;gap:10px;flex-wrap:wrap}.sub-plan-card{flex:1;min-width:130px;background:#00d4ff0d;border-radius:10px;padding:12px;border:1px solid rgba(0,212,255,.15)}.sub-plan-card.current{border-color:#00d4ff66}.sub-plan-name{font-size:13px;font-weight:700;color:#00d4ff}.sub-plan-price{font-size:18px;font-weight:800;color:#e2e8f0;margin:4px 0}.sub-plan-price span{font-size:11px;font-weight:400;color:#94a3b8}.sub-plan-desc{font-size:11px;color:#94a3b8;margin-bottom:8px}.feature-tag{display:inline-block;font-size:10px;color:#22d3ee;margin:2px}.sub-plan-btn{width:100%;padding:8px;border-radius:8px;background:#00d4ff26;border:1px solid rgba(0,212,255,.3);color:#00d4ff;font-weight:600;cursor:pointer;margin-top:8px;font-size:12px}.sub-plan-btn:disabled{opacity:.5;cursor:not-allowed}.sub-note{font-size:11px;color:#64748b;margin-top:10px;text-align:center;line-height:1.6}.calendar-list{display:flex;flex-direction:column;gap:8px;margin-bottom:12px}.cal-item{display:flex;align-items:center;gap:10px;padding:10px 12px;background:#0d1535e0;border-radius:10px;border:1px solid rgba(0,212,255,.12)}.cal-color{width:10px;height:36px;border-radius:5px;flex-shrink:0}.cal-info{flex:1;display:flex;flex-direction:column;gap:2px}.cal-name{font-size:14px;font-weight:600;color:#e2e8f0}.cal-meta{font-size:11px;color:#94a3b8}.invite-btn{font-size:12px;padding:5px 10px;border-radius:16px;background:#00d4ff1a;border:1px solid rgba(0,212,255,.25);color:#00d4ff;cursor:pointer;white-space:nowrap}.remove-cal-btn{font-size:14px;padding:4px 8px;background:none;border:1px solid rgba(248,113,113,.3);border-radius:6px;cursor:pointer;opacity:.6;transition:opacity .15s;flex-shrink:0}.remove-cal-btn:hover{opacity:1;background:#f871711a}.delete-confirm{display:flex;align-items:center;gap:4px;flex-shrink:0}.confirm-del-btn{font-size:13px;padding:3px 7px;background:#f8717133;border:1px solid rgba(248,113,113,.5);border-radius:6px;color:#f87171;cursor:pointer}.cancel-del-btn{font-size:13px;padding:3px 7px;background:#64748b33;border:1px solid rgba(100,116,139,.4);border-radius:6px;color:#94a3b8;cursor:pointer}.empty-state{font-size:13px;color:#64748b;text-align:center;padding:20px}.action-btn{width:100%;padding:10px;border-radius:10px;background:#00d4ff1a;border:1px solid rgba(0,212,255,.25);color:#00d4ff;font-weight:600;cursor:pointer;font-size:13px}.new-cal-form{background:#0d1535e0;border-radius:10px;padding:12px;border:1px solid rgba(0,212,255,.12);margin-bottom:12px}.color-picker{display:flex;gap:8px;margin:10px 0}.color-swatch{width:24px;height:24px;border-radius:50%;border:2px solid transparent;cursor:pointer}.color-swatch.active{border-color:#fff}.form-input{width:100%;padding:9px 12px;border-radius:8px;background:#ffffff0f;border:1px solid rgba(255,255,255,.12);color:#e2e8f0;font-size:13px;box-sizing:border-box;outline:none}.form-input:focus{border-color:#00d4ff80}.form-actions{display:flex;gap:8px;margin-top:8px}.cancel-btn{flex:1;padding:8px;border-radius:8px;background:#64748b33;border:1px solid rgba(100,116,139,.3);color:#94a3b8;cursor:pointer;font-size:13px}.confirm-cal-btn{flex:1;padding:8px;border-radius:8px;background:#00d4ff26;border:1px solid rgba(0,212,255,.3);color:#00d4ff;font-weight:600;cursor:pointer;font-size:13px}.invite-panel{background:#0d1535e0;border-radius:10px;padding:12px;border:1px solid rgba(0,212,255,.12);margin-bottom:12px}.invite-panel-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px;font-weight:600;color:#e2e8f0;font-size:13px}.msg-box{font-size:12px;color:#22d3ee;padding:8px;border-radius:8px;background:#22d3ee14;margin-top:8px}.hover\:bg-gray-800\/50:hover{background-color:#1f293780}.hover\:text-white:hover{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}

/* ========== FAB 浮動按鈕 CSS ========== */
.fab-menu-container{position:fixed;z-index:9999;display:flex;flex-direction:column;align-items:flex-end;user-select:none;touch-action:none}
.fab-expand-area{display:flex;flex-direction:column-reverse;align-items:flex-end;gap:8px;overflow:hidden;max-height:0;opacity:0;transition:max-height 0.3s ease,opacity 0.25s ease;pointer-events:none}
.fab-expand-area.fab-open{max-height:200px;opacity:1;pointer-events:auto}
.fab{display:flex;align-items:center;justify-content:center;border:none;border-radius:50%;cursor:pointer;box-shadow:0 4px 12px rgba(0,0,0,0.3);transition:transform 0.2s,background 0.2s}
.fab.fab-main{width:52px;height:52px;background:var(--primary,#00c896);color:#fff;font-size:24px;font-weight:300;margin-top:8px;flex-shrink:0}
.fab.fab-main.fab-rotate{transform:rotate(45deg)}
.fab.fab-expand-item{width:44px;height:44px;background:var(--card,#1e2a32);color:var(--primary,#00c896);font-size:18px}
.fab.fab-close-item{width:44px;height:44px;background:var(--card,#1e2a32);color:#ff6b6b;font-size:18px}
.fab-item-icon{font-size:20px}
.fab-item-label{display:none}

/* ========== 複製行程 Modal CSS ========== */
.copy-evt-overlay{position:fixed;inset:0;background:rgba(0,0,0,0.6);z-index:10000;display:flex;align-items:center;justify-content:center;padding:16px}
.copy-evt-dialog{background:var(--card,#1a2535);border-radius:16px;padding:20px;width:100%;max-width:340px;max-height:90vh;overflow-y:auto;box-shadow:0 8px 32px rgba(0,0,0,0.5);display:flex;flex-direction:column;gap:12px}
.copy-evt-header{display:flex;justify-content:space-between;align-items:center;font-weight:700;font-size:15px;color:var(--text,#e0e0e0)}
.copy-evt-close{background:none;border:none;color:var(--text-muted,#888);font-size:18px;cursor:pointer;padding:2px 6px;border-radius:6px;transition:background 0.15s}
.copy-evt-close:hover{background:rgba(255,255,255,0.1)}
.copy-evt-name{font-size:14px;color:var(--primary,#00c896);font-weight:600;padding:4px 0;border-bottom:1px solid var(--border,rgba(255,255,255,0.1))}
.copy-evt-cal-row{display:flex;align-items:center;gap:8px;font-size:13px}
.copy-evt-label{color:var(--text-muted,#888);white-space:nowrap}
.copy-evt-cal-select{flex:1;background:var(--bg2,#111e2b);border:1px solid var(--border,rgba(255,255,255,0.15));border-radius:8px;color:var(--text,#e0e0e0);padding:4px 8px;font-size:13px;outline:none}
.copy-evt-nav{display:flex;align-items:center;justify-content:space-between;gap:8px}
.copy-evt-nav button{background:none;border:1px solid var(--border,rgba(255,255,255,0.15));color:var(--text,#e0e0e0);border-radius:8px;width:30px;height:30px;cursor:pointer;font-size:16px;display:flex;align-items:center;justify-content:center}
.copy-evt-nav span{font-size:13px;color:var(--text,#e0e0e0);font-weight:600}
.copy-evt-weekdays{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;margin-top:4px}
.copy-evt-weekdays div{text-align:center;font-size:11px;color:var(--text-muted,#888);padding:4px 0;font-weight:500}
.copy-evt-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:3px}
.copy-evt-cell{height:34px;display:flex;align-items:center;justify-content:center;border-radius:8px;font-size:13px;color:#e0e0e0;cursor:pointer;transition:background 0.15s;background:transparent}
.copy-evt-cell:hover{background:rgba(0,200,150,0.15)}
.copy-evt-cell.empty{cursor:default;pointer-events:none}
.copy-evt-cell.copy-evt-selected{background:var(--primary,#00c896);color:#fff;font-weight:700}
.copy-evt-cell.copy-evt-orig{background:rgba(255,165,0,0.25);color:#ffa500;font-weight:600;cursor:not-allowed}
.copy-evt-error{color:#ff6b6b;font-size:12px;background:rgba(255,100,100,0.1);border-radius:8px;padding:6px 10px}
.copy-evt-selected-count{font-size:12px;color:var(--text-muted,#888);text-align:center}
.copy-evt-actions{display:flex;gap:8px;margin-top:4px}
.copy-evt-cancel{flex:1;background:transparent;border:1px solid var(--border,rgba(255,255,255,0.2));color:var(--text-muted,#888);border-radius:10px;padding:10px;font-size:13px;cursor:pointer;transition:background 0.15s}
.copy-evt-cancel:hover{background:rgba(255,255,255,0.07)}
.copy-evt-confirm{flex:2;background:var(--primary,#00c896);border:none;color:#fff;border-radius:10px;padding:10px;font-size:13px;font-weight:700;cursor:pointer;transition:opacity 0.15s}
.copy-evt-confirm:disabled{opacity:0.4;cursor:not-allowed}
