:root{--bg:#f7f5f0;--bg-elev:#fdfbf7;--fg:#2a2520;--fg-mute:#6b6258;--card:#fff;--card-border:#ece5d8;--accent:#a8392c;--accent-deep:#7c2820;--accent-soft:#a8392c14;--gold:#c9a661;--gold-soft:#c9a6612e;--green:#3d7a5b;--green-soft:#3d7a5b1f;--red:#c0392b;--warn:#d39c2f;--border:#e8e2d4;--shadow-sm:0 1px 3px #0000000a, 0 1px 2px #00000008;--shadow-md:0 4px 12px #0000000f, 0 2px 4px #0000000a;--shadow-lg:0 12px 32px #00000014, 0 4px 8px #0000000a;--radius:14px;--radius-sm:8px}@media (prefers-color-scheme:dark){:root{--bg:#15120e;--bg-elev:#1c1814;--fg:#f0ebe2;--fg-mute:#a89e90;--card:#221d18;--card-border:#2f2823;--border:#2f2823;--accent-soft:#dc645a1f;--gold-soft:#c9a66129;--shadow-sm:0 1px 3px #0006;--shadow-md:0 4px 12px #00000080;--shadow-lg:0 12px 32px #0009}}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--bg);color:var(--fg);font-feature-settings:"tnum" 1, "lnum" 1;-webkit-font-smoothing:antialiased;min-height:100vh;font-family:Noto Sans TC,-apple-system,BlinkMacSystemFont,system-ui,sans-serif;line-height:1.65}h1,h2,h3,h4{letter-spacing:-.01em;font-weight:600}h2{margin:0 0 1rem;font-size:1.55rem}h3{color:var(--fg);border-left:4px solid var(--accent);align-items:center;gap:.5rem;margin:2rem 0 1rem;padding-left:.85rem;font-size:1.1rem;font-weight:600;display:flex}.app-header{color:#fff;box-shadow:var(--shadow-md);background:radial-gradient(circle at 85% 30%,#c9a6612e 0%,#0000 45%),radial-gradient(circle at 15% 80%,#ffffff0f 0%,#0000 50%),linear-gradient(135deg,#6b2218 0%,#8e2c20 35%,#a8392c 70%,#b8513e 100%);justify-content:space-between;align-items:center;padding:1.5rem 2.5rem;display:flex;position:relative;overflow:hidden}.app-header:before{content:"";background:linear-gradient(90deg, transparent 0%, var(--gold) 35%, var(--gold) 65%, transparent 100%);opacity:.6;height:3px;position:absolute;bottom:-1px;left:-2px;right:-2px}.brand{align-items:center;gap:1rem;display:flex}.brand-mark{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#ffffff26;border:1px solid #fff3;border-radius:12px;justify-content:center;align-items:center;width:48px;height:48px;font-size:1.5rem;display:flex}.app-header h1{letter-spacing:.02em;margin:0;font-size:1.45rem;font-weight:700;line-height:1.2}.brand-sub{opacity:.78;letter-spacing:.06em;margin-top:.2rem;font-size:.8rem}.header-meta{text-align:right;font-variant-numeric:tabular-nums}.meta-label{opacity:.7;text-transform:uppercase;letter-spacing:.1em;font-size:.7rem}.meta-val{margin-top:.2rem;font-size:1rem;font-weight:500}.app-footer{text-align:center;color:var(--fg-mute);border-top:1px solid var(--border);background:var(--bg-elev);margin-top:2rem;padding:1.5rem 2.5rem;font-size:.8rem}.dot-sep{opacity:.5;margin:0 .5rem}.tabs{background:var(--bg-elev);border-bottom:1px solid var(--border);gap:.25rem;padding:0 2.5rem;display:flex;overflow-x:auto}.tabs button{cursor:pointer;color:var(--fg-mute);white-space:nowrap;background:0 0;border:none;border-bottom:2px solid #0000;padding:.9rem 1.2rem;font-family:inherit;font-size:.95rem;font-weight:500;transition:all .15s}.tabs button:hover{color:var(--fg);background:var(--accent-soft)}.tabs button.active{color:var(--accent);border-bottom-color:var(--accent);background:0 0}.layout{grid-template-columns:320px 1fr;gap:1.8rem;max-width:1500px;margin:0 auto;padding:2rem 2.5rem;display:grid}main{min-width:0}@media (width<=900px){.layout{grid-template-columns:1fr;gap:1rem;padding:1rem}.app-header,.tabs{padding-left:1rem;padding-right:1rem}}.card{background:var(--card);border:1px solid var(--card-border);border-radius:var(--radius);box-shadow:var(--shadow-sm);margin-bottom:1.2rem;padding:1.5rem 1.8rem;transition:box-shadow .2s,transform .2s,border-color .2s;animation:.4s cubic-bezier(.2,.8,.2,1) both card-in}.card:hover{box-shadow:var(--shadow-md);border-color:var(--gold-soft)}main>.card:first-of-type{animation-delay:50ms}main>.card:nth-of-type(2){animation-delay:.1s}main>.card:nth-of-type(3){animation-delay:.15s}main>.card:nth-of-type(4){animation-delay:.2s}main>.card:nth-of-type(5){animation-delay:.25s}main>.card:nth-of-type(6){animation-delay:.3s}main>.card:nth-of-type(n+7){animation-delay:.35s}@keyframes card-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.skel{background:linear-gradient(90deg, var(--border) 0%, var(--bg) 50%, var(--border) 100%);background-size:200% 100%;border-radius:6px;animation:1.4s ease-in-out infinite skel-shimmer}.skel-title{width:240px;height:32px;margin-bottom:.5rem}.skel-pill{border-radius:999px;width:160px;height:36px}.skel-row{height:18px;margin:.8rem 0}.skel-row:nth-child(2){width:65%}.skel-chart{height:200px}@keyframes skel-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.sidebar{background:var(--card);border:1px solid var(--card-border);border-radius:var(--radius);box-shadow:var(--shadow-sm);max-height:calc(100vh - 2rem);padding:1.4rem;position:sticky;top:1rem;overflow-y:auto}.sidebar h3{color:var(--fg-mute);text-transform:uppercase;letter-spacing:.08em;margin:0 0 1rem;font-size:.95rem;font-weight:600}.sidebar h4{color:var(--fg-mute);text-transform:uppercase;letter-spacing:.08em;margin:0 0 .5rem;font-size:.75rem;font-weight:500}.tabs-mini{background:var(--bg);border-radius:var(--radius-sm);gap:.3rem;margin-bottom:1rem;padding:.25rem;display:flex}.tabs-mini button{color:var(--fg-mute);cursor:pointer;background:0 0;border:none;border-radius:6px;flex:1;padding:.5rem;font-family:inherit;font-size:.85rem;font-weight:500;transition:all .15s}.tabs-mini button.active{background:var(--card);color:var(--accent);box-shadow:var(--shadow-sm)}.mini-form{flex-direction:column;gap:.65rem;display:flex}.mini-form label{color:var(--fg-mute);flex-direction:column;gap:.3rem;font-size:.78rem;font-weight:500;display:flex}.mini-form input,.inline-form input,.inline-form select,.month-picker{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-elev);color:var(--fg);padding:.55rem .7rem;font-family:inherit;font-size:.9rem;transition:all .15s}.mini-form input:focus,.inline-form input:focus,.inline-form select:focus,.month-picker:focus{border-color:var(--accent);background:var(--card);box-shadow:0 0 0 3px var(--accent-soft);outline:none}.mini-form button[type=submit],.inline-form button{background:linear-gradient(135deg, var(--accent) 0%, var(--accent-deep) 100%);color:#fff;border-radius:var(--radius-sm);cursor:pointer;letter-spacing:.02em;border:none;margin-top:.4rem;padding:.65rem 1rem;font-family:inherit;font-size:.9rem;font-weight:500;transition:transform .1s,box-shadow .15s;box-shadow:0 2px 6px #a8392c40}.mini-form button[type=submit]:hover,.inline-form button:hover{transform:translateY(-1px);box-shadow:0 4px 12px #a8392c59}.mini-form button[type=submit]:active,.inline-form button:active{transform:translateY(0)}.inline-form{flex-wrap:wrap;align-items:center;gap:.6rem;display:flex}.dash-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1rem;display:flex}.dash-head h2{margin:0}.month-picker{cursor:pointer;min-width:130px;padding:.6rem 1rem;font-weight:500}.metric-row{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:1.5rem;display:grid}.metric-row>div{flex-direction:column;gap:.2rem;display:flex}.m-label{color:var(--fg-mute);letter-spacing:.02em;font-size:.78rem;font-weight:500}.m-val{color:var(--fg);letter-spacing:-.02em;font-variant-numeric:tabular-nums;font-size:1.65rem;font-weight:700;line-height:1.2}.m-sub{color:var(--fg-mute);margin-top:.15rem;font-size:.78rem}.status-green,.status-yellow,.status-red{position:relative;overflow:hidden}.status-green:before,.status-yellow:before,.status-red:before{content:"";width:5px;position:absolute;top:0;bottom:0;left:0}.status-green:before{background:linear-gradient(#4caf7e 0%,#2d8260 100%)}.status-yellow:before{background:linear-gradient(#e8b54a 0%,#c69833 100%)}.status-red:before{background:linear-gradient(#d8584a 0%,#a8392c 100%)}.status-green{background:linear-gradient(135deg, var(--card) 0%, var(--green-soft) 200%)}.status-yellow{background:linear-gradient(135deg, var(--card) 0%, #e8b54a14 200%)}.status-red{background:linear-gradient(135deg, var(--card) 0%, var(--accent-soft) 200%)}.chart-legend{color:var(--fg-mute);border-bottom:1px dashed var(--border);flex-wrap:wrap;gap:1.5rem;margin-bottom:1rem;padding-bottom:1rem;font-size:.82rem;display:flex}.chart-legend .dot{vertical-align:middle;border-radius:50%;width:10px;height:10px;margin-right:.4rem;display:inline-block}.chart-legend .dash{border-top:2px dashed var(--red);vertical-align:middle;width:18px;margin-right:.4rem;display:inline-block}.metric-picker,.range-picker,.wd-controls{flex-wrap:wrap;gap:.4rem;margin-bottom:1.2rem;display:flex}.wd-controls{align-items:center;gap:1.5rem}.m-btn,.r-btn{border:1px solid var(--border);background:var(--bg-elev);color:var(--fg-mute);cursor:pointer;border-radius:999px;padding:.45rem .95rem;font-family:inherit;font-size:.82rem;font-weight:500;transition:all .15s}.m-btn:hover,.r-btn:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}.m-btn.active,.r-btn.active{background:var(--accent);color:#fff;border-color:var(--accent);box-shadow:0 2px 6px #a8392c40}.exclude-toggle{color:var(--fg-mute);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:.5rem;font-size:.88rem;display:flex}.exclude-toggle input[type=checkbox]{accent-color:var(--accent);cursor:pointer;width:16px;height:16px}.exclude-toggle:hover{color:var(--fg)}.exclude-toggle .m-sub{color:var(--accent);margin-top:0;font-weight:500}.data-table{border-collapse:separate;border-spacing:0;width:100%;font-size:.9rem}.data-table thead{background:linear-gradient(180deg, var(--bg-elev) 0%, var(--bg) 100%)}.data-table th{color:var(--fg-mute);text-transform:uppercase;letter-spacing:.06em;text-align:right;border-bottom:1px solid var(--border);padding:.75rem .9rem;font-size:.78rem;font-weight:600}.data-table th:first-child{text-align:left}.data-table td{border-bottom:1px solid var(--border);text-align:right;font-variant-numeric:tabular-nums;padding:.7rem .9rem}.data-table td:first-child{text-align:left;font-weight:500}.data-table tbody tr{transition:background .1s}.data-table tbody tr:hover{background:var(--accent-soft)}.data-table tbody tr:last-child td{border-bottom:none}.data-table .pos{color:var(--red);font-weight:500}.data-table .neg{color:var(--green);font-weight:500}.data-table .hl-max{background:linear-gradient(135deg, var(--gold-soft) 0%, transparent 100%);color:var(--fg);font-weight:700}.recent-list{border-top:1px solid var(--border);margin-top:1.5rem;padding-top:1.2rem}.recent-row{border-radius:var(--radius-sm);justify-content:space-between;align-items:center;margin:0 -.5rem;padding:.55rem .5rem;transition:background .1s;display:flex}.recent-row:hover{background:var(--accent-soft)}.r-date{color:var(--fg);font-size:.88rem;font-weight:500}.r-meta{color:var(--fg-mute);margin-top:.1rem;font-size:.75rem}.r-actions{gap:.15rem;display:flex}.r-actions button{cursor:pointer;background:0 0;border:none;border-radius:6px;padding:.3rem .45rem;font-size:.95rem;transition:background .1s}.r-actions button:hover{background:var(--card-border)}.muted{color:var(--fg-mute);text-align:center;opacity:.7;padding:.8rem 0;font-size:.85rem}.sidebar::-webkit-scrollbar{width:6px}.sidebar::-webkit-scrollbar-track{background:0 0}.sidebar::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}.sidebar::-webkit-scrollbar-thumb:hover{background:var(--fg-mute)}.month-nav{align-items:center;gap:.4rem;display:flex}.nav-btn{border:1px solid var(--border);background:var(--bg-elev);width:36px;height:36px;color:var(--fg);cursor:pointer;border-radius:8px;justify-content:center;align-items:center;padding:0;font-family:inherit;font-size:1.3rem;font-weight:500;transition:all .15s;display:flex}.nav-btn:hover:not(:disabled){border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}.nav-btn:disabled{opacity:.35;cursor:not-allowed}.date-weekday{color:var(--accent);margin-left:.3rem;font-size:.8rem;font-weight:500}.achievement-card{background:linear-gradient(135deg, var(--card) 0%, var(--gold-soft) 220%);border-color:var(--gold)}.achievement-card .m-val{background:linear-gradient(135deg, var(--accent) 0%, var(--gold) 100%);color:#0000;-webkit-background-clip:text;background-clip:text}.year-chart-block{margin-bottom:1.5rem}.year-chart-block:last-child{margin-bottom:0}.year-chart-block .cal-year-label{margin-bottom:.5rem}.sortable-col{-webkit-user-select:none;user-select:none;position:relative}.sortable-col:hover{color:var(--accent)}.sortable-col:after{content:"⇅";opacity:.3;margin-left:.3rem;font-size:.75rem}.sortable-col.sort-asc:after{content:"↑";opacity:1;color:var(--accent)}.sortable-col.sort-desc:after{content:"↓";opacity:1;color:var(--accent)}.status-tag{letter-spacing:.02em;border-radius:999px;margin-bottom:1.2rem;padding:.35rem .9rem;font-size:.85rem;font-weight:600;display:inline-block}.status-green .status-tag{color:#fff;background:linear-gradient(135deg,#4caf7e 0%,#2d8260 100%)}.status-yellow .status-tag{color:#fff;background:linear-gradient(135deg,#e8b54a 0%,#c69833 100%)}.status-red .status-tag{color:#fff;background:linear-gradient(135deg,#d8584a 0%,#a8392c 100%)}.yoy-card{background:linear-gradient(135deg, var(--card) 0%, #c9a6610f 200%)}.yoy-card .pos{color:var(--red);font-weight:600}.yoy-card .neg{color:var(--green);font-weight:600}.cal-year{margin-bottom:1.5rem}.cal-year:last-child{margin-bottom:0}.cal-year-label{color:var(--fg);letter-spacing:.02em;margin-bottom:.5rem;font-size:1rem;font-weight:600}.cal-grid{grid-template-columns:repeat(12,1fr);gap:.4rem;display:grid}@media (width<=900px){.cal-grid{grid-template-columns:repeat(6,1fr)}}.cal-cell{text-align:center;background:var(--bg);border:1px solid var(--border);cursor:help;border-radius:8px;padding:.6rem .4rem;font-size:.78rem;transition:transform .1s}.cal-cell:hover{transform:translateY(-2px)}.cal-cell.no-data{opacity:.4}.cal-cell.status-green{color:#fff;background:linear-gradient(135deg,#4caf7e 0%,#2d8260 100%);border-color:#0000}.cal-cell.status-green:before{display:none}.cal-cell.status-yellow{color:#fff;background:linear-gradient(135deg,#e8b54a 0%,#c69833 100%);border-color:#0000}.cal-cell.status-yellow:before{display:none}.cal-cell.status-red{color:#fff;background:linear-gradient(135deg,#d8584a 0%,#a8392c 100%);border-color:#0000}.cal-cell.status-red:before{display:none}.cal-m{font-weight:500}.cal-pct{opacity:.85;margin-top:.15rem;font-size:.7rem}.cal-cell-mini{vertical-align:middle;background:var(--bg);border:1px solid var(--border);border-radius:4px;width:14px;height:14px;margin-right:.3rem;display:inline-block}.cal-cell-mini.status-green{background:linear-gradient(135deg,#4caf7e 0%,#2d8260 100%);border-color:#0000}.cal-cell-mini.status-yellow{background:linear-gradient(135deg,#e8b54a 0%,#c69833 100%);border-color:#0000}.cal-cell-mini.status-red{background:linear-gradient(135deg,#d8584a 0%,#a8392c 100%);border-color:#0000}.cal-cell-mini.status-ongoing{background:linear-gradient(135deg,#9ba6b5 0%,#6b7888 100%);border-color:#0000}.cal-cell.status-ongoing{color:#fff;background:linear-gradient(135deg,#9ba6b5 0%,#6b7888 100%);border-color:#0000}.cal-cell.status-ongoing:before{display:none}.cal-cell-mini:before{display:none!important}.backup-btns{flex-wrap:wrap;gap:.6rem;margin-top:1rem;display:flex}.backup-btn{border:1px solid var(--border);background:var(--bg-elev);color:var(--fg);border-radius:var(--radius-sm);cursor:pointer;padding:.6rem 1.1rem;font-family:inherit;font-size:.9rem;font-weight:500;transition:all .15s}.backup-btn:hover{border-color:var(--accent);background:var(--accent-soft)}.backup-btn.primary{background:linear-gradient(135deg, var(--accent) 0%, var(--accent-deep) 100%);color:#fff;border-color:#0000;box-shadow:0 2px 6px #a8392c40}.backup-btn.primary:hover{background:linear-gradient(135deg, var(--accent) 0%, var(--accent-deep) 100%);transform:translateY(-1px);box-shadow:0 4px 12px #a8392c59}.r-note{cursor:help;margin-left:.3rem;font-size:.75rem}.rx-stats{border-top:1px dashed var(--border);margin-top:1rem;padding-top:1rem}@media (width<=900px){.sidebar{max-height:none;position:relative}.app-header{flex-direction:column;align-items:flex-start;gap:1rem;padding:1rem}.app-header h1{font-size:1.2rem}.header-meta{text-align:left}.tabs{padding:0 .5rem}.tabs button{padding:.7rem .8rem;font-size:.85rem}.card{padding:1rem 1.1rem}.m-val{font-size:1.35rem}.app-footer{flex-direction:column;padding:1rem}.dot-sep{display:none}}
