:root,[data-theme=light]{--color-bg: #faf8f5;--color-surface: #fffcf8;--color-primary: #6b7c5e;--color-primary-hover: #586a4c;--color-primary-light: #eef2ea;--color-accent: #8b7355;--color-accent-light: #f5efe8;--color-danger: #c44d4d;--color-danger-hover: #a83d3d;--color-text: #2c2a26;--color-text-secondary: #6b6560;--color-border: #ddd6cc;--color-border-light: #ebe5dc;--color-success: #5a9a6e;--color-warning: #c9923a;--shadow-sm: 0 1px 3px rgba(44, 42, 38, .06), 0 1px 2px rgba(44, 42, 38, .04);--shadow-md: 0 4px 16px rgba(44, 42, 38, .08);--shadow-lg: 0 8px 32px rgba(44, 42, 38, .12);--radius: 14px;--radius-sm: 8px;--radius-lg: 20px;--font-ui: "DM Sans", -apple-system, BlinkMacSystemFont, sans-serif;--font-serif: "Source Serif 4", Georgia, serif;--nav-height: 56px;--bottom-nav-height: 64px;--fab-size: 56px}[data-theme=dark]{--color-bg: #1a1917;--color-surface: #242220;--color-primary: #8fa882;--color-primary-hover: #a3b899;--color-primary-light: #2a3228;--color-accent: #b8956f;--color-accent-light: #2e2820;--color-danger: #e07070;--color-danger-hover: #f08888;--color-text: #f0ebe3;--color-text-secondary: #a8a098;--color-border: #3a3632;--color-border-light: #2e2b28;--color-success: #6db888;--color-warning: #d4a44a;--shadow-sm: 0 1px 3px rgba(0, 0, 0, .2);--shadow-md: 0 4px 16px rgba(0, 0, 0, .3);--shadow-lg: 0 8px 32px rgba(0, 0, 0, .4);color-scheme:dark}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body{min-height:100%}body{font-family:var(--font-ui);background:var(--color-bg);color:var(--color-text);line-height:1.55;-webkit-font-smoothing:antialiased}body.focus-mode app-header,body.focus-mode app-footer,body.focus-mode app-bottom-nav,body.focus-mode app-fab{display:none!important}body.focus-mode .app-main{padding-top:16px;padding-bottom:16px}.app-layout{display:flex;flex-direction:column;min-height:100vh;min-height:100dvh}.app-main{flex:1;padding-top:36px;padding-bottom:calc(48px + env(safe-area-inset-bottom,0px));width:100%}.app-main.has-bottom-nav{padding-bottom:calc(var(--bottom-nav-height) + var(--fab-size) / 2 + 24px + env(safe-area-inset-bottom,0px))}.app-main--full-width{padding-top:0;padding-bottom:0;max-width:none}a{color:var(--color-primary);text-decoration:none}a:hover{text-decoration:underline}input,select,textarea,button{font-family:inherit;font-size:inherit}.container{max-width:720px;margin:0 auto;padding:0 20px}.card{background:var(--color-surface);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:24px;border:1px solid var(--color-border-light)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:12px 22px;border:none;border-radius:var(--radius-sm);font-weight:600;font-size:14px;cursor:pointer;transition:background .15s,box-shadow .15s,transform .1s;min-height:44px;text-decoration:none}.btn:active:not(:disabled){transform:scale(.98)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--color-primary);color:#fff}.btn-primary:hover:not(:disabled){background:var(--color-primary-hover);text-decoration:none}.btn-danger{background:var(--color-danger);color:#fff}.btn-danger:hover:not(:disabled){background:var(--color-danger-hover)}.btn-outline{background:transparent;color:var(--color-text-secondary);border:1px solid var(--color-border)}.btn-outline:hover:not(:disabled){background:var(--color-bg);text-decoration:none}.btn-ghost{background:transparent;color:var(--color-text-secondary);border:none;padding:8px 12px;min-height:44px}.btn-ghost:hover:not(:disabled){background:var(--color-bg);color:var(--color-text)}.btn-sm{padding:8px 14px;font-size:13px;min-height:36px}.btn-lg{padding:16px 28px;font-size:16px;border-radius:var(--radius)}.btn-block{width:100%}.btn-icon{width:44px;height:44px;padding:0;border-radius:999px}.form-group{margin-bottom:20px}.form-group label{display:block;font-size:14px;font-weight:600;color:var(--color-text);margin-bottom:8px}.form-control{width:100%;padding:12px 14px;border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:15px;background:var(--color-surface);color:var(--color-text);transition:border-color .15s,box-shadow .15s}.form-control:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-light)}.form-control.error{border-color:var(--color-danger)}textarea.form-control{resize:vertical;min-height:120px}textarea.form-control.journal-text{font-family:var(--font-serif);font-size:17px;line-height:1.7;min-height:200px;padding:16px;border:2px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);box-shadow:var(--shadow-sm)}textarea.form-control.journal-text:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-light)}textarea.form-control.journal-text::placeholder{color:var(--color-text-secondary);opacity:.75}.range-control{width:100%;accent-color:var(--color-primary);height:6px}.error-text{color:var(--color-danger);font-size:13px;margin-top:6px}.alert{padding:14px 16px;border-radius:var(--radius-sm);font-size:14px;margin-bottom:16px;line-height:1.5}.alert-error{background:#fdf0f0;color:var(--color-danger);border:1px solid #f5d0d0}[data-theme=dark] .alert-error{background:#2e2020;border-color:#4a3030}.alert-success{background:#f0f7f2;color:#2d6a42;border:1px solid #c8e6d0}[data-theme=dark] .alert-success{background:#1e2a22;color:#8fd4a8;border-color:#2d4a38}.alert-info{background:var(--color-primary-light);color:var(--color-text);border:1px solid var(--color-border)}.badge{display:inline-block;padding:3px 10px;border-radius:999px;font-size:12px;font-weight:500}.badge-emotion{background:var(--color-accent-light);color:var(--color-accent)}.badge-topic{background:var(--color-primary-light);color:var(--color-primary)}.mood-score{display:inline-flex;align-items:center;justify-content:center;min-width:36px;height:36px;border-radius:999px;font-weight:700;font-size:14px;color:#fff;flex-shrink:0}.mood-low{background:var(--color-danger)}.mood-medium{background:var(--color-warning)}.mood-high{background:var(--color-success)}.grid{display:grid;gap:16px}.grid-2{grid-template-columns:1fr 1fr}.grid-3{grid-template-columns:1fr 1fr 1fr}.page-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:28px;gap:16px}.page-header h1{font-size:26px;font-weight:700;letter-spacing:-.02em}.empty-state{text-align:center;padding:48px 24px;color:var(--color-text-secondary)}.empty-state h3{font-size:18px;margin-bottom:8px;color:var(--color-text);font-weight:600}.spinner{display:inline-block;width:20px;height:20px;border:2px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;animation:spin .6s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.loading-overlay{display:flex;align-items:center;justify-content:center;padding:48px}.section-title{font-size:16px;font-weight:600;margin-bottom:16px}.collapse-trigger{display:flex;align-items:center;justify-content:space-between;width:100%;padding:14px 0;background:none;border:none;border-top:1px solid var(--color-border-light);cursor:pointer;font-size:15px;font-weight:600;color:var(--color-text);min-height:44px}.collapse-trigger:hover{color:var(--color-primary)}.slide-over-backdrop{position:fixed;inset:0;background:#0006;z-index:200;animation:fadeIn .2s ease}.slide-over-panel{position:fixed;bottom:0;left:0;right:0;max-height:85vh;background:var(--color-surface);border-radius:var(--radius-lg) var(--radius-lg) 0 0;z-index:201;padding:20px 20px calc(20px + env(safe-area-inset-bottom,0px));overflow-y:auto;animation:slideUp .25s ease;box-shadow:var(--shadow-lg)}.slide-over-handle{width:40px;height:4px;background:var(--color-border);border-radius:999px;margin:0 auto 16px}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}@media(min-width:769px){.slide-over-panel{inset:0 0 0 auto;width:420px;max-height:none;border-radius:0;animation:slideInRight .25s ease}@keyframes slideInRight{0%{transform:translate(100%)}to{transform:translate(0)}}}@media(max-width:768px){.grid-2,.grid-3{grid-template-columns:1fr}.page-header{flex-direction:column;align-items:flex-start}.desktop-only{display:none!important}}@media(min-width:769px){.mobile-only{display:none!important}.app-main.has-bottom-nav{padding-bottom:48px}}
