.sidebar{position:fixed;top:0;left:0;width:var(--sidebar-width);height:100vh;background:var(--sidebar-bg);border-right:1px solid var(--border);display:flex;flex-direction:column;z-index:50;overflow-y:auto;-webkit-user-select:none;user-select:none}.sidebar-brand{padding:var(--spacing-lg) var(--spacing-md);border-bottom:1px solid var(--border)}.sidebar-logo{font-size:1.25rem;color:var(--accent);display:block;margin-bottom:6px}.sidebar-title{font-size:var(--font-size-base);font-weight:600;color:var(--text);display:block;letter-spacing:.04em}.sidebar-subtitle{font-size:var(--font-size-xs);color:var(--text-muted);letter-spacing:.08em;text-transform:uppercase}.sidebar-nav{flex:1;padding:var(--spacing-sm) 0;display:flex;flex-direction:column;gap:2px}.sidebar-link{display:flex;align-items:center;gap:var(--spacing-sm);padding:8px 16px;margin:0 8px;border-radius:var(--radius-sm);font-size:var(--font-size-sm);color:var(--sidebar-text);transition:all var(--transition-fast);text-decoration:none}.sidebar-link:hover{color:var(--text);background:var(--bg-card)}.sidebar-link--active{color:var(--sidebar-active);background:var(--sidebar-active-bg)}@media(max-width:768px){.sidebar{display:none}}.login-page-v2{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;overflow:hidden;background:#040a18;font-family:PingFang SC,Microsoft YaHei,"Noto Serif SC",SimSun,serif}.login-canvas{position:absolute;inset:0;z-index:0}.login-meteors{position:absolute;inset:0;z-index:3;pointer-events:none;overflow:hidden}.meteor{position:absolute;height:1.5px;border-radius:1px;background:linear-gradient(90deg,rgba(190,220,255,.7),rgba(225,240,255,.2),transparent)}.login-mist{position:absolute;bottom:12%;left:-10%;right:-10%;height:30%;z-index:1;pointer-events:none;background:radial-gradient(ellipse at 25% 60%,rgba(140,160,200,.08) 0%,transparent 60%),radial-gradient(ellipse at 55% 50%,rgba(120,150,190,.06) 0%,transparent 55%),radial-gradient(ellipse at 75% 65%,rgba(150,170,210,.07) 0%,transparent 50%),radial-gradient(ellipse at 40% 70%,rgba(130,155,195,.05) 0%,transparent 65%)}.login-mountains{position:absolute;bottom:0;left:0;right:0;z-index:1;pointer-events:none}.mountain-back{position:absolute;bottom:16%;left:-8%;right:-8%;height:24%;background:linear-gradient(178deg,#0a0f26bf,#0c122899,#0f162c80 70%,#12192e73);border-radius:42% 48% 0 0/55% 60% 0 0}.mountain-front{position:absolute;bottom:14%;left:-12%;right:-12%;height:20%;background:linear-gradient(176deg,#060a1cd1,#080e20b8,#0a1224a6 70%,#0e142699);border-radius:38% 52% 0 0/48% 55% 0 0}.login-horizon{position:absolute;bottom:0;left:0;right:0;height:28%;z-index:0;pointer-events:none;background:linear-gradient(180deg,transparent 0%,rgba(160,120,100,.06) 40%,rgba(180,140,115,.08) 60%,rgba(140,100,80,.05) 85%,transparent 100%)}.login-lake{position:absolute;bottom:0;left:0;right:0;height:18%;z-index:0;pointer-events:none}.lake-surface{position:absolute;inset:0;background:linear-gradient(180deg,#080c1c33,#0c122473,#0f162aa6,#121a30cc,#141c32eb)}.lake-reflection{position:absolute;inset:0;background:radial-gradient(1.3px 1.3px at 10% 22%,rgba(195,215,248,.3) 0%,transparent 70%),radial-gradient(1px 1px at 28% 38%,rgba(205,225,252,.24) 0%,transparent 70%),radial-gradient(1.6px 1.6px at 50% 28%,rgba(190,210,245,.32) 0%,transparent 70%),radial-gradient(1.2px 1.2px at 65% 42%,rgba(200,220,248,.26) 0%,transparent 70%),radial-gradient(1.4px 1.4px at 80% 30%,rgba(205,225,252,.28) 0%,transparent 70%);animation:lakeShimmer 5s ease-in-out infinite alternate}@keyframes lakeShimmer{0%{opacity:.5}to{opacity:.85}}.cherry-branch{position:absolute;top:-20px;left:-20px;width:clamp(220px,26vw,380px);height:auto;z-index:6;pointer-events:none;filter:drop-shadow(0 3px 10px rgba(140,80,100,.2));opacity:.92}.falling-petals{position:absolute;inset:0;z-index:4;pointer-events:none}.petal{position:absolute;top:-20px;width:10px;height:14px;background:radial-gradient(ellipse at 35% 35%,#f8d4dc 0%,#ecb8c0 40%,#d8a4ac 80%,transparent 100%);border-radius:50% 0;animation:petalFall linear infinite;opacity:0}@keyframes petalFall{0%{opacity:0;transform:translateY(0) rotate(0) translate(0)}8%{opacity:.7}70%{opacity:.4}to{opacity:0;transform:translateY(105vh) rotate(420deg) translate(50px)}}.login-card-v2{position:relative;z-index:10;width:100%;max-width:430px;margin:0 20px;padding:48px 40px 36px;background:#0a142a59;backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px);border-radius:20px;border:1px solid rgba(125,165,215,.2);box-shadow:0 0 50px #5f91cd0f,0 0 100px #4b7db90a,0 12px 40px #00000052,inset 0 1px #b9d7f014;transition:border-color .5s,box-shadow .5s,transform .5s,opacity .6s}.login-card--shake{animation:cardShake .5s ease;border-color:#e15f696b!important;box-shadow:0 0 32px #e15f6938,0 12px 40px #00000052!important}@keyframes cardShake{0%,to{transform:translate(0)}10%,50%,90%{transform:translate(-5px)}30%,70%{transform:translate(5px)}}.login-title-wrap{text-align:center;margin-bottom:30px}.login-motto{font-size:1.1rem;color:#dce8f4;letter-spacing:.15em;line-height:1.7;margin:0 0 18px;font-family:"Noto Serif SC",SimSun,STSong,serif;font-weight:300}.login-divider{display:flex;align-items:center;justify-content:center;gap:0}.login-divider-line{width:44px;height:1px;background:linear-gradient(90deg,transparent,rgba(180,200,235,.35),transparent)}.login-divider-star{color:#d2e1f88c;margin:0 10px}.login-pw-group{display:flex;align-items:center;background:#0f1c3661;backdrop-filter:blur(15px);-webkit-backdrop-filter:blur(15px);border:1px solid rgba(130,170,222,.3);border-radius:14px;padding:0 18px;margin-bottom:8px;transition:border-color .4s,box-shadow .4s;box-shadow:0 0 20px #6496d20f}.login-pw-group:focus-within{border-color:#96bee885;box-shadow:0 0 28px #6ea0de1f,0 0 52px #5f91d40d}.login-pw--error{border-color:#e45f6973!important;box-shadow:0 0 24px #e45f6933,0 0 48px #de555f0f!important;animation:errorGlow .7s ease-out}@keyframes errorGlow{0%{box-shadow:0 0 4px #e45f690d}40%{box-shadow:0 0 30px #e45f694d}to{box-shadow:0 0 #e45f6900}}.login-pw-icon{color:#a0bedeb3;flex-shrink:0}.login-pw-input{flex:1;background:transparent;border:none;outline:none;padding:15px 12px;font-size:.96rem;color:#e0eaf6;font-family:inherit;letter-spacing:.08em}.login-pw-input::placeholder{color:#8cafd47a}.login-pw-input:disabled{opacity:.5}.login-pw-toggle{color:#a0bede99;padding:5px;border-radius:5px;background:none;border:none;cursor:pointer;flex-shrink:0;transition:color .2s}.login-pw-toggle:hover{color:#c0d4eee6}.login-error-msg{display:flex;align-items:center;gap:7px;font-size:.8rem;color:#e89aa2;margin:8px 0 0 10px;animation:errorFadeIn .35s ease}@keyframes errorFadeIn{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}.login-btn-v2{display:flex;align-items:center;justify-content:center;width:100%;padding:15px;margin-top:10px;background:#14264685;border:1px solid rgba(120,162,218,.3);border-radius:14px;color:#cbddf2;font-size:.95rem;font-weight:500;font-family:inherit;letter-spacing:.08em;cursor:pointer;transition:all .28s;box-shadow:0 0 18px #6498d41a,0 0 36px #558ac60a}.login-btn-v2:hover:not(:disabled){background:#1a2e569e;border-color:#8cb6e87a;box-shadow:0 0 28px #78acde2e,0 0 44px #699ed40f;transform:translateY(-1px)}.login-btn-v2:active:not(:disabled){transform:scale(.98)}.login-btn-v2:disabled{opacity:.4;cursor:not-allowed}.login-footnote{text-align:center;font-size:.7rem;color:#8cafd473;margin:20px 0 0;letter-spacing:.06em;font-style:italic}.login-success-overlay{position:absolute;inset:0;z-index:18;display:flex;flex-direction:column;align-items:center;justify-content:center;pointer-events:none;animation:successFadeIn .8s ease}@keyframes successFadeIn{0%{opacity:0}to{opacity:1}}.success-meteor{position:absolute;top:15%;left:20%;width:180px;height:2px;background:linear-gradient(90deg,rgba(210,235,255,.9),rgba(210,235,255,.3),transparent);transform:rotate(22deg);animation:successMeteor 1.2s ease-out forwards;border-radius:1px;box-shadow:0 0 12px #c8e1ff80,0 0 24px #b4d2fa40}@keyframes successMeteor{0%{opacity:0;transform:rotate(22deg) translate(-100px)}30%{opacity:.9}to{opacity:0;transform:rotate(22deg) translate(300px)}}.success-trail{position:relative;width:240px;height:240px;display:flex;align-items:center;justify-content:center}.trail-ring{position:absolute;width:100%;height:100%;animation:trailRotate 5s linear infinite}@keyframes trailRotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.trail-dots{position:absolute;width:200px;height:200px}.trail-dot{position:absolute;width:5px;height:5px;background:#d2e6fcbf;border-radius:50%;animation:dotOrbit 3.5s linear infinite;box-shadow:0 0 10px #bedcfc8c}@keyframes dotOrbit{0%{transform:rotate(0) translate(100px) rotate(0);opacity:0}5%{opacity:.85}95%{opacity:.85}to{transform:rotate(360deg) translate(100px) rotate(-360deg);opacity:0}}.login-success-text{text-align:center;margin-top:14px}.login-success-title{font-size:1.55rem;color:#e2ecf8;letter-spacing:.15em;margin:0 0 8px;font-weight:300;font-family:"Noto Serif SC",serif}.login-success-sub{font-size:.82rem;color:#accdebb8;margin:0;letter-spacing:.08em}.login-transition{position:absolute;inset:0;z-index:4;pointer-events:none}.login-page-v2.transition{background:linear-gradient(180deg,#162440,#2a344e,#3a3c50,#4a3848 60%,#553440 85%,#5a303c);transition:background 3.8s ease}.login-page-v2.transition .login-canvas{opacity:.35;transition:opacity 3s ease}.login-page-v2.transition .login-mountains{opacity:.35;transition:opacity 3.2s ease}.login-page-v2.transition .login-mist{opacity:.6;background:radial-gradient(ellipse at 25% 55%,rgba(220,160,170,.1) 0%,transparent 60%),radial-gradient(ellipse at 55% 48%,rgba(210,150,160,.08) 0%,transparent 55%),radial-gradient(ellipse at 75% 60%,rgba(225,165,175,.09) 0%,transparent 50%);transition:background 3s ease}.login-page-v2.transition .lake-surface{background:linear-gradient(180deg,#1c1e304d,#30263480,#3e2c36a6,#483038cc,#4e343aeb);transition:background 3s ease}.login-page-v2.transition .lake-reflection{background:radial-gradient(1.3px 1.3px at 10% 28%,rgba(248,188,195,.25) 0%,transparent 70%),radial-gradient(1.1px 1.1px at 30% 40%,rgba(242,178,188,.22) 0%,transparent 70%),radial-gradient(1.5px 1.5px at 52% 32%,rgba(248,188,195,.28) 0%,transparent 70%);transition:background 3s ease}.login-cherry-tree-svg{position:absolute;bottom:0;left:50%;transform:translate(-50%);width:clamp(300px,50vw,500px);height:auto;z-index:2;pointer-events:none;opacity:0;transition:opacity 3s ease}.login-page-v2.transition .login-cherry-tree-svg{opacity:.6}.login-page-v2.success .login-cherry-tree-svg{opacity:.2}@media(max-width:480px){.login-card-v2{padding:36px 24px 28px;border-radius:16px;margin:0 16px}.login-motto{font-size:.95rem;letter-spacing:.1em}.cherry-branch{width:160px}.login-lake{height:14%}.success-trail{width:180px;height:180px}.trail-dots{width:150px;height:150px}.login-cherry-tree-svg{width:240px}}:root{--font-sans: "Segoe UI", "PingFang SC", "Microsoft YaHei", system-ui, -apple-system, sans-serif;--font-mono: "Cascadia Code", "Fira Code", "JetBrains Mono", "Consolas", monospace;--radius-sm: 4px;--radius-md: 8px;--radius-lg: 12px;--shadow-sm: 0 1px 2px rgba(0,0,0,.25);--shadow-md: 0 4px 12px rgba(0,0,0,.3);--shadow-lg: 0 8px 24px rgba(0,0,0,.35);--sidebar-width: 220px;--topbar-height: 0px;--transition-fast: .15s ease;--transition-normal: .25s ease;--transition-slow: .4s ease;--font-size-xs: .75rem;--font-size-sm: .8125rem;--font-size-base: .9375rem;--font-size-lg: 1.125rem;--font-size-xl: 1.375rem;--font-size-2xl: 1.75rem;--font-size-3xl: 2.25rem;--spacing-xs: 4px;--spacing-sm: 8px;--spacing-md: 16px;--spacing-lg: 24px;--spacing-xl: 32px;--spacing-2xl: 48px;--spacing-3xl: 64px}[data-theme=midnight]{--bg: #0a0a0f;--bg-secondary: #111118;--bg-card: #16161f;--bg-card-hover: #1c1c28;--text: #e8e8ed;--text-secondary: #9a9aab;--text-muted: #5a5a6e;--border: #1e1e2e;--border-light: #2a2a3a;--accent: #d4d4e0;--accent-hover: #f0f0f5;--accent-secondary: #6b6b8a;--accent-secondary-hover: #8a8aa8;--sidebar-bg: #06060a;--sidebar-text: #8888a0;--sidebar-active: #e0e0ec;--sidebar-active-bg: #141420;--input-bg: #111118;--input-border: #2a2a3a;--input-focus-border: #6b6b8a;--danger: #e0556a;--danger-hover: #f07080;--success: #4a9a6e;--star-color: rgba(220,220,240,.6);--star-color-bright: rgba(240,240,255,.85);--meteor-color: rgba(220,220,255,.7)}[data-theme=forest]{--bg: #f6f8f4;--bg-secondary: #eef2ea;--bg-card: #ffffff;--bg-card-hover: #f2f6ef;--text: #2c3428;--text-secondary: #6a7562;--text-muted: #9aa590;--border: #d8e0d0;--border-light: #e8efe2;--accent: #5c8a6e;--accent-hover: #4a7358;--accent-secondary: #c4827a;--accent-secondary-hover: #d8968e;--sidebar-bg: #ebf0e6;--sidebar-text: #7a846e;--sidebar-active: #3d5a44;--sidebar-active-bg: #dce5d4;--input-bg: #ffffff;--input-border: #c0ccb8;--input-focus-border: #5c8a6e;--danger: #c0545a;--danger-hover: #d4686e;--success: #4a8a5e;--star-color: rgba(140,180,140,.25);--star-color-bright: rgba(160,200,160,.4);--meteor-color: rgba(180,210,180,.5)}[data-theme=ocean]{--bg: #0a1622;--bg-secondary: #0f1d2e;--bg-card: #152636;--bg-card-hover: #1a2e42;--text: #dce8f2;--text-secondary: #7a9ab8;--text-muted: #4a6a88;--border: #1a3048;--border-light: #243e58;--accent: #6ab0e8;--accent-hover: #8cc4f0;--accent-secondary: #4a90c8;--accent-secondary-hover: #5ea8e0;--sidebar-bg: #060f1a;--sidebar-text: #5a80a8;--sidebar-active: #a0ccf0;--sidebar-active-bg: #0d1f32;--input-bg: #0f1d2e;--input-border: #1e3858;--input-focus-border: #4a90c8;--danger: #e0556a;--danger-hover: #f07080;--success: #4aa8a0;--star-color: rgba(150,200,240,.3);--star-color-bright: rgba(180,220,250,.55);--meteor-color: rgba(160,210,245,.45)}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html{font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:var(--font-sans);font-size:var(--font-size-base);line-height:1.65;color:var(--text);background:var(--bg);min-height:100vh;transition:background var(--transition-normal),color var(--transition-normal)}a{color:var(--accent);text-decoration:none}button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit;font-size:inherit}input,textarea,select{font-family:inherit;font-size:inherit;color:inherit}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}::selection{background:var(--accent-secondary);color:var(--bg)}.app-layout{display:flex;min-height:100vh}.app-main{flex:1;margin-left:var(--sidebar-width);min-height:100vh;display:flex;flex-direction:column}.page-container{flex:1;padding:var(--spacing-xl) var(--spacing-2xl);max-width:960px;width:100%}.page-header{margin-bottom:var(--spacing-xl)}.page-title{font-size:var(--font-size-2xl);font-weight:600;color:var(--text);letter-spacing:-.02em}.page-subtitle{font-size:var(--font-size-sm);color:var(--text-muted);margin-top:var(--spacing-xs)}.card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--spacing-lg);transition:background var(--transition-fast),border-color var(--transition-fast)}.card:hover{background:var(--bg-card-hover)}.btn{display:inline-flex;align-items:center;gap:var(--spacing-sm);padding:8px 16px;border-radius:var(--radius-sm);font-size:var(--font-size-sm);font-weight:500;transition:all var(--transition-fast);white-space:nowrap;line-height:1.4}.btn-primary{background:var(--accent);color:var(--bg)}.btn-primary:hover{background:var(--accent-hover)}.btn-secondary{background:transparent;color:var(--text-secondary);border:1px solid var(--border)}.btn-secondary:hover{color:var(--text);border-color:var(--text-muted)}.btn-ghost{color:var(--text-secondary)}.btn-ghost:hover{color:var(--text);background:var(--bg-card)}.btn-danger{background:var(--danger);color:#fff}.btn-danger:hover{background:var(--danger-hover)}.btn-icon{padding:6px;border-radius:var(--radius-sm);color:var(--text-secondary)}.btn-icon:hover{color:var(--text);background:var(--bg-card)}.input{width:100%;padding:10px 14px;background:var(--input-bg);border:1px solid var(--input-border);border-radius:var(--radius-sm);color:var(--text);font-size:var(--font-size-base);transition:border-color var(--transition-fast);outline:none}.input:focus{border-color:var(--input-focus-border)}.input::placeholder{color:var(--text-muted)}.badge{display:inline-flex;align-items:center;padding:2px 8px;border-radius:3px;font-size:var(--font-size-xs);font-weight:500;background:var(--bg-secondary);color:var(--text-secondary);border:1px solid var(--border)}.tag{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;border-radius:3px;font-size:var(--font-size-xs);background:var(--bg-secondary);color:var(--text-secondary);border:1px solid var(--border-light);cursor:pointer;transition:all var(--transition-fast)}.tag:hover{color:var(--text);border-color:var(--text-muted)}.tag-active{background:var(--accent);color:var(--bg);border-color:var(--accent)}.divider{height:1px;background:var(--border);margin:var(--spacing-md) 0}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--spacing-3xl) var(--spacing-xl);text-align:center;color:var(--text-muted)}.empty-state svg{margin-bottom:var(--spacing-md);opacity:.4}.empty-state-title{font-size:var(--font-size-lg);color:var(--text-secondary);margin-bottom:var(--spacing-xs)}.empty-state-desc{font-size:var(--font-size-sm)}.highlight{background:var(--accent-secondary);color:var(--bg);border-radius:2px;padding:0 2px}.confirm-overlay{position:fixed;inset:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:1000;animation:fadeIn .15s ease}.confirm-dialog{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--spacing-xl);max-width:380px;width:90%}.confirm-dialog h3{font-size:var(--font-size-lg);margin-bottom:var(--spacing-sm)}.confirm-dialog p{color:var(--text-secondary);font-size:var(--font-size-sm);margin-bottom:var(--spacing-lg)}.confirm-actions{display:flex;gap:var(--spacing-sm);justify-content:flex-end}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@media(max-width:768px){:root{--sidebar-width: 0px}.app-main{margin-left:0}.page-container{padding:var(--spacing-md) var(--spacing-md)}}
