#app{min-height:100vh}:root{--forest-900:#1a3a24;--forest-700:#2d5a3d;--forest-500:#3d7a52;--forest-300:#6b9d7a;--forest-100:#e8f0ea;--sage-500:#7d9a6f;--sage-300:#a8c4a2;--sage-100:#e4ede5;--terra-500:#c17a4e;--terra-400:#d4916a;--terra-300:#e5b08a;--terra-100:#f5e8de;--cream-50:#fdfcfa;--cream-100:#faf7f2;--cream-200:#f2ede4;--cream-300:#e5ddd0;--brown-600:#6b5344;--brown-400:#8b7060;--success:var(--forest-500);--warning:var(--terra-400);--danger:#c25450;--info:var(--sage-500);--font-display:"HanziPen SC", "Hannotate SC", "Kaiti SC", "STKaiti", "KaiTi", "YouYuan", "DFKai-SB", "Songti SC", "Noto Serif CJK SC", "Source Han Serif SC", serif;--font-accent:"HanziPen SC", "Hannotate SC", "KaiTi", "Segoe Print", "Bradley Hand", "Comic Sans MS", cursive;--font-body:"PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans CJK SC", "Source Han Sans SC", -apple-system, BlinkMacSystemFont, sans-serif;--font-number:"Avenir Next Rounded", "SF Pro Rounded", "Arial Rounded MT Bold", "Trebuchet MS", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;--space-xs:4px;--space-sm:8px;--space-md:16px;--space-lg:24px;--space-xl:32px;--space-2xl:48px;--space-3xl:64px;--radius-sm:6px;--radius-md:12px;--radius-lg:20px;--radius-xl:28px;--radius-full:9999px;--shadow-sm:0 2px 8px #6b534414;--shadow-md:0 4px 16px #6b53441a;--shadow-lg:0 8px 32px #6b53441f;--shadow-xl:0 16px 48px #6b534426;--ease-out:cubic-bezier(.22, 1, .36, 1);--ease-spring:cubic-bezier(.34, 1.56, .64, 1);--duration-fast:.15s;--duration-normal:.3s;--duration-slow:.5s}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{font-family:var(--font-body);letter-spacing:.01em;font-kerning:normal;color:var(--brown-600);background-color:var(--cream-100);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;font-size:16px;line-height:1.68}h1,h2,h3,h4,h5,h6{font-family:var(--font-display);color:var(--forest-700);letter-spacing:.02em;text-wrap:balance;font-weight:600;line-height:1.22}h1{font-size:clamp(2.4rem,2vw + 1.8rem,3.15rem);font-weight:700}h2{font-size:clamp(1.9rem,1.4vw + 1.45rem,2.4rem)}h3{font-size:clamp(1.45rem,1vw + 1.15rem,1.85rem)}h4{font-size:clamp(1.18rem,.5vw + 1.02rem,1.45rem)}p{margin-bottom:var(--space-md)}button,input,select,textarea{font:inherit}a{color:var(--forest-500);transition:color var(--duration-fast) var(--ease-out);text-decoration:none}a:hover{color:var(--forest-700)}::selection{background-color:var(--sage-300);color:var(--forest-900)}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:var(--cream-200);border-radius:var(--radius-full)}::-webkit-scrollbar-thumb{background:var(--sage-300);border-radius:var(--radius-full);border:2px solid var(--cream-200)}::-webkit-scrollbar-thumb:hover{background:var(--sage-500)}.btn{justify-content:center;align-items:center;gap:var(--space-sm);font-family:var(--font-body);border-radius:var(--radius-md);cursor:pointer;transition:all var(--duration-normal) var(--ease-out);border:none;padding:12px 24px;font-size:14px;font-weight:600;line-height:1;display:inline-flex;position:relative;overflow:hidden}.btn:before{content:"";opacity:0;transition:opacity var(--duration-fast) var(--ease-out);background:linear-gradient(135deg,#fff3 0%,#0000 50%);position:absolute;inset:0}.btn:hover:before{opacity:1}.btn:active{transform:scale(.97)}.btn:after{content:"";opacity:0;transition:transform .5s var(--ease-out), opacity .3s var(--ease-out);background:radial-gradient(circle,#ffffff4d 0%,#0000 70%);position:absolute;inset:0;transform:scale(0)}.btn:active:after{opacity:1;transition:transform,opacity;transform:scale(2)}.btn-secondary:hover{background:var(--cream-300);border-color:var(--brown-400);transform:translateY(-1px)}.btn-ghost:hover{background:var(--forest-100);transform:translateY(-1px)}.btn-primary{background:linear-gradient(135deg, var(--forest-500) 0%, var(--forest-700) 100%);color:#fff;box-shadow:0 4px 12px #2d5a3d4d}.btn-primary:hover{transform:translateY(-2px);box-shadow:0 6px 20px #2d5a3d66}.btn-secondary{background:var(--cream-200);color:var(--forest-700);border:1.5px solid var(--cream-300)}.btn-secondary:hover{background:var(--cream-300);border-color:var(--brown-400)}.btn-accent{background:linear-gradient(135deg, var(--terra-400) 0%, var(--terra-500) 100%);color:#fff;box-shadow:0 4px 12px #c17a4e4d}.btn-accent:hover{transform:translateY(-2px);box-shadow:0 6px 20px #c17a4e66}.btn-ghost{color:var(--forest-700);background:0 0}.btn-ghost:hover{background:var(--forest-100)}.btn-danger{background:linear-gradient(135deg, var(--danger) 0%, #a04542 100%);color:#fff}.btn-sm{padding:8px 16px;font-size:13px}.btn-lg{padding:16px 32px;font-size:16px}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none!important}.input{width:100%;font-family:var(--font-body);color:var(--brown-600);border:1.5px solid var(--cream-300);border-radius:var(--radius-md);transition:all var(--duration-fast) var(--ease-out);background:#fff;padding:14px 18px;font-size:15px;position:relative}.input:hover{border-color:var(--sage-300);background:var(--cream-50)}.input:focus{border-color:var(--forest-500);background:#fff;outline:none;box-shadow:0 0 0 4px #3d7a521f,0 4px 12px #3d7a5214}.input::placeholder{color:var(--brown-400);opacity:.7}.input-wrapper{position:relative}.input-wrapper .input{padding-left:44px}.input-wrapper .input-icon{color:var(--brown-400);pointer-events:none;transition:color var(--duration-fast) var(--ease-out);position:absolute;top:50%;left:14px;transform:translateY(-50%)}.input-wrapper .input:focus~.input-icon{color:var(--forest-500)}.input-wrapper:has(.input:focus) .input-icon{color:var(--forest-500)}.input-label{margin-bottom:var(--space-sm);font-family:var(--font-accent);color:var(--forest-700);letter-spacing:.05em;font-size:13px;font-weight:600;display:block}.card{border-radius:var(--radius-lg);padding:var(--space-lg);box-shadow:var(--shadow-sm);border:1px solid var(--cream-200);transition:all var(--duration-normal) var(--ease-out);background:#fff;position:relative;overflow:hidden}.card:before{content:"";background:linear-gradient(90deg, var(--forest-500), var(--sage-500), var(--forest-500));opacity:0;height:3px;transition:opacity var(--duration-normal) var(--ease-out);background-size:200% 100%;position:absolute;top:0;left:0;right:0}.card:hover{box-shadow:var(--shadow-md);border-color:var(--cream-300);transform:translateY(-2px)}.card:hover:before{opacity:1;animation:2s linear infinite shimmer}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.card-header{margin-bottom:var(--space-lg);padding-bottom:var(--space-md);border-bottom:1px solid var(--cream-200);justify-content:space-between;align-items:center;display:flex}.card-title{font-family:var(--font-display);letter-spacing:.015em;color:var(--forest-700);font-size:1.25rem;font-weight:600}.badge{font-family:var(--font-accent);letter-spacing:.04em;border-radius:var(--radius-full);background:var(--forest-100);color:var(--forest-700);align-items:center;gap:4px;padding:4px 10px;font-size:12px;font-weight:600;display:inline-flex}.badge-success{background:var(--forest-100);color:var(--forest-700)}.badge-warning{background:var(--terra-100);color:var(--terra-500)}.badge-info{background:var(--sage-100);color:var(--sage-500)}.ui-eyebrow{font-family:var(--font-accent);letter-spacing:.06em;color:var(--forest-700);align-items:center;gap:6px;font-size:.82rem;font-weight:600;line-height:1.2;display:inline-flex}.ui-caption{color:var(--brown-400);margin:0;font-size:.92rem;line-height:1.58}.ui-number{font-family:var(--font-number);font-variant-numeric:tabular-nums;letter-spacing:.03em}.ui-soft-panel{border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);background:linear-gradient(#fffffff5,#faf7f2f5);border:1px solid #e5ddd0e6}.page-back-button{padding:var(--space-sm) var(--space-md);border-radius:var(--radius-md);background:var(--cream-100);color:var(--forest-700);cursor:pointer;font-family:var(--font-accent);letter-spacing:.04em;transition:all var(--duration-fast) var(--ease-out);border:none;align-items:center;gap:6px;font-size:.92rem;font-weight:600;display:inline-flex}.page-back-button:hover{background:var(--cream-200);color:var(--forest-500);transform:translate(-2px)}.ui-empty-state{text-align:center;color:var(--brown-400);padding:clamp(56px,5vw,84px) 24px;position:relative;overflow:hidden}.ui-empty-state:before{content:attr(data-empty-icon);margin-bottom:var(--space-md);opacity:.92;font-size:clamp(2.8rem,4vw,4rem);line-height:1;animation:3s ease-in-out infinite float;display:block}.ui-empty-state.is-loading:before{animation:1.8s ease-in-out infinite gentlePulse}.ui-empty-title{font-family:var(--font-display);color:var(--forest-700);letter-spacing:.02em;margin:0;font-size:clamp(1.2rem,.6vw + 1.05rem,1.55rem)}.ui-empty-copy{max-width:32ch;color:var(--brown-400);margin:8px auto 0;font-size:.95rem;line-height:1.62}.ui-data-table{border-collapse:collapse;width:100%}.ui-data-table th,.ui-data-table td{padding:var(--space-md) var(--space-lg);text-align:left;border-bottom:1px solid var(--cream-200)}.ui-data-table th{background:var(--cream-100);color:var(--brown-400);font-family:var(--font-accent);letter-spacing:.06em;text-transform:uppercase;font-size:.82rem;font-weight:600}.ui-data-table td{color:var(--brown-600)}.ui-data-table tbody tr{transition:background var(--duration-fast) var(--ease-out)}.ui-data-table tbody tr:hover{background:var(--cream-100)}.ui-note-card{box-shadow:var(--shadow-sm);background:#ffffffe0;border:1px solid #e5ddd0e6;border-radius:22px;padding:16px}.ui-note-card.accent{background:#e8f0eae0}.ui-note-title{color:var(--forest-700);font-family:var(--font-accent);letter-spacing:.05em;font-size:.88rem;font-weight:700;display:block}.ui-note-copy{color:var(--brown-400);margin:8px 0 0;font-size:.92rem;line-height:1.58}.ui-section-stack{gap:6px;display:grid}.ui-section-title{font-family:var(--font-display);color:var(--forest-700);letter-spacing:.02em;margin:0;font-size:clamp(1.3rem,.6vw + 1.15rem,1.75rem);font-weight:700;line-height:1.2}.ui-section-title.is-hero{font-size:clamp(1.8rem,1vw + 1.5rem,2.15rem)}.ui-section-copy{color:var(--brown-400);margin:0;font-size:.95rem;line-height:1.6}.ui-pill-meta{border-radius:var(--radius-full);background:var(--cream-200);width:fit-content;color:var(--brown-400);font-family:var(--font-accent);letter-spacing:.04em;align-items:center;gap:6px;padding:4px 12px;font-size:.82rem;font-weight:600;display:inline-flex}.ui-form-header{text-align:center;justify-items:center;gap:8px;display:grid}.ui-section-row{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.ui-feedback-message{border-radius:var(--radius-md);text-align:center;margin:0;padding:12px 14px;font-size:.92rem;line-height:1.55}.ui-feedback-message.is-error{color:var(--danger);background:#c254501a;border:1px solid #c254502e}.ui-inline-link{color:var(--forest-500);font-family:var(--font-accent);transition:color var(--duration-fast) var(--ease-out);font-weight:700;text-decoration:none}.ui-inline-link:hover{color:var(--forest-700);text-decoration:underline}.ui-auth-footer{text-align:center;border-top:1px solid var(--cream-200);margin-top:clamp(24px,3vw,32px);padding-top:24px}.ui-auth-footer p{color:var(--brown-400);margin:0}.ui-loading-spinner{border:2px solid color-mix(in srgb, currentColor 30%, transparent);border-top-color:currentColor;border-radius:50%;flex-shrink:0;width:20px;height:20px;animation:.8s linear infinite ui-spin;display:inline-block}@keyframes ui-spin{to{transform:rotate(360deg)}}.ui-loading-state{text-align:center;align-content:center;justify-items:center;gap:12px;padding:clamp(32px,5vw,56px) 24px;display:grid}.ui-loading-state .ui-loading-spinner{width:28px;height:28px;color:var(--forest-700)}.ui-loading-title{font-family:var(--font-display);color:var(--forest-700);letter-spacing:.02em;margin:0;font-size:clamp(1.2rem,.5vw + 1.05rem,1.45rem)}.ui-loading-copy{max-width:32ch;color:var(--brown-400);margin:0;font-size:.95rem;line-height:1.6}@media (width<=640px){.ui-section-row{align-items:stretch}}.divider{background:linear-gradient(90deg, transparent, var(--cream-300), transparent);height:1px;margin:var(--space-lg) 0}.ornament{align-items:center;gap:var(--space-md);color:var(--sage-300);font-size:18px;display:flex}.ornament:before,.ornament:after{content:"";background:linear-gradient(90deg, var(--cream-300), transparent);flex:1;height:1px}.ornament:after{background:linear-gradient(90deg, transparent, var(--cream-300))}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInScale{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}@keyframes gentlePulse{0%,to{opacity:1}50%{opacity:.7}}@keyframes leafSway{0%,to{transform:rotate(-3deg)}50%{transform:rotate(3deg)}}.animate-fadeIn{animation:fadeIn var(--duration-normal) var(--ease-out)}.animate-fadeInUp{animation:fadeInUp var(--duration-slow) var(--ease-out)}.animate-fadeInScale{animation:fadeInScale var(--duration-normal) var(--ease-out)}.animate-float{animation:3s ease-in-out infinite float}.animate-pulse{animation:2s ease-in-out infinite gentlePulse}.stagger-children>:first-child{animation-delay:0s}.stagger-children>:nth-child(2){animation-delay:.1s}.stagger-children>:nth-child(3){animation-delay:.2s}.stagger-children>:nth-child(4){animation-delay:.3s}.stagger-children>:nth-child(5){animation-delay:.4s}.stagger-children>:nth-child(6){animation-delay:.5s}.stagger-children>:nth-child(7){animation-delay:.6s}.stagger-children>:nth-child(8){animation-delay:.7s}.hover-lift{transition:transform var(--duration-normal) var(--ease-out), box-shadow var(--duration-normal) var(--ease-out)}.hover-lift:hover{box-shadow:var(--shadow-lg);transform:translateY(-4px)}.hover-scale{transition:transform var(--duration-fast) var(--ease-out)}.hover-scale:hover{transform:scale(1.05)}.hover-glow{transition:box-shadow var(--duration-normal) var(--ease-out)}.hover-glow:hover{box-shadow:0 0 20px #3d7a524d}.press-effect:active{transition:transform .1s var(--ease-out);transform:scale(.96)}.shine-effect{position:relative;overflow:hidden}.shine-effect:after{content:"";width:200%;height:200%;transition:transform .6s var(--ease-out);background:linear-gradient(45deg,#0000 30%,#ffffff1a 50%,#0000 70%);position:absolute;top:-50%;left:-50%;transform:translate(-100%)}.shine-effect:hover:after{transform:translate(100%)}.skeleton{background:linear-gradient(90deg, var(--cream-200) 25%, var(--cream-100) 50%, var(--cream-200) 75%);border-radius:var(--radius-sm);background-size:200% 100%;animation:1.5s infinite skeleton-loading}@keyframes skeleton-loading{0%{background-position:200% 0}to{background-position:-200% 0}}.text-center{text-align:center}.text-right{text-align:right}.text-muted{color:var(--brown-400)}.text-success{color:var(--success)}.text-danger{color:var(--danger)}.flex{display:flex}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-sm{gap:var(--space-sm)}.gap-md{gap:var(--space-md)}.gap-lg{gap:var(--space-lg)}.w-full{width:100%}.h-full{height:100%}.relative{position:relative}.absolute{position:absolute}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@media (width<=768px){:root{--space-lg:20px;--space-xl:28px;--space-2xl:40px}h1{font-size:2rem}h2{font-size:1.75rem}h3{font-size:1.25rem}.btn{padding:14px 24px}}.page-container{background:var(--cream-100);min-height:100vh}.page-header{border-bottom:1px solid var(--cream-200);padding:var(--space-lg) var(--space-xl);z-index:100;background:#fff;position:sticky;top:0}.page-content{padding:var(--space-xl);max-width:1400px;margin:0 auto}.page-title{font-family:var(--font-display);letter-spacing:.02em;color:var(--forest-700);font-size:clamp(1.75rem,.9vw + 1.45rem,2.15rem);font-weight:700}.bg-pattern{pointer-events:none;opacity:.4;background-image:radial-gradient(circle at 20% 80%, var(--sage-100) 0%, transparent 50%), radial-gradient(circle at 80% 20%, var(--terra-100) 0%, transparent 50%), radial-gradient(circle at 40% 40%, var(--forest-100) 0%, transparent 30%);z-index:-1;position:fixed;inset:0}
