:root,[data-theme=light]{--color-bg:#fafaf8;--color-bg-secondary:#f5f3ef;--color-bg-tertiary:#edebe6;--color-bg-hover:#e5e2dc;--color-bg-active:#dcd9d2;--color-surface:#fff;--color-surface-raised:#fff;--color-border:#d5d2cc;--color-border-light:#e5e2dc;--color-text:#1a1a1a;--color-text-secondary:#5f6368;--color-text-muted:#9ca3af;--color-primary:#1b4332;--color-primary-hover:#143528;--color-primary-light:#e8f5e9;--color-primary-text:#fff;--color-accent:#d4a017;--color-accent-hover:#b8860b;--color-focus-ring:#d4a01740;--color-success:#198754;--color-success-light:#d1fae5;--color-warning:#cc8a00;--color-warning-light:#fef3c7;--color-danger:#dc3545;--color-danger-light:#fef2f2;--color-sidebar-bg:#f5f3ef;--color-sidebar-border:#dcd9d2;--shadow-sm:0 1px 2px #0000000d;--shadow-md:0 2px 8px #00000014;--shadow-lg:0 4px 16px #0000001a;--radius-sm:4px;--radius-md:6px;--radius-lg:8px;--radius-pill:10px;--font-display:"Playfair Display", Georgia, serif;--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-mono:"SF Mono", "Fira Code", "Fira Mono", "Roboto Mono", monospace;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;--space-10:40px}[data-theme=dark]{--color-bg:#1c1b19;--color-bg-secondary:#23221f;--color-bg-tertiary:#2b2a26;--color-bg-hover:#35342f;--color-bg-active:#3d3c36;--color-surface:#201f1c;--color-surface-raised:#282723;--color-border:#3d3c36;--color-border-light:#35342f;--color-text:#e8e5df;--color-text-secondary:#a8a49c;--color-text-muted:#6e6b64;--color-primary:#2d6a4f;--color-primary-hover:#3a8263;--color-primary-light:#1b3022;--color-primary-text:#fff;--color-accent:#e8b931;--color-accent-hover:#f0ca50;--color-focus-ring:#e8b9314d;--color-success:#4ade80;--color-success-light:#0a2618;--color-warning:#facc15;--color-warning-light:#3b2a08;--color-danger:#f87171;--color-danger-light:#3b1010;--color-sidebar-bg:#22241e;--color-sidebar-border:#3a3d34;--shadow-sm:0 1px 2px #0003;--shadow-md:0 2px 8px #0000004d;--shadow-lg:0 4px 16px #0006}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{font-family:var(--font-sans);color:var(--color-text);background-color:var(--color-bg);-webkit-font-smoothing:antialiased;font-size:15px;line-height:1.5}body{min-height:100vh}a{color:var(--color-accent);text-decoration:none}a:hover{color:var(--color-accent-hover)}:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}:focus:not(:focus-visible){outline:none}.btn{justify-content:center;align-items:center;gap:var(--space-1);padding:var(--space-2) var(--space-4);border-radius:var(--radius-md);cursor:pointer;white-space:nowrap;border:1px solid #0000;font-family:inherit;font-size:14px;font-weight:500;line-height:1.4;transition:background-color .15s,border-color .15s,color .15s;display:inline-flex}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--color-primary);color:var(--color-primary-text);border-color:var(--color-primary)}.btn-primary:hover:not(:disabled){background:var(--color-primary-hover);border-color:var(--color-primary-hover)}.btn-secondary{color:var(--color-text);border-color:var(--color-border);background:0 0}.btn-secondary:hover:not(:disabled){background:var(--color-bg-hover)}.btn-ghost{color:var(--color-text-secondary);padding:var(--space-1) 10px;background:0 0;border:none}.btn-ghost:hover:not(:disabled){background:var(--color-bg-hover);color:var(--color-text)}.btn-outline-primary{color:var(--color-primary);border-color:var(--color-primary);background:0 0}.btn-outline-primary:hover:not(:disabled){background:var(--color-primary);color:var(--color-primary-text)}.btn-danger{background:var(--color-danger);color:#fff;border-color:var(--color-danger)}.btn-lg{padding:var(--space-3) var(--space-6);font-size:15px}.btn-sm{padding:var(--space-1) 10px;font-size:13px}.btn-full{width:100%}.input,.textarea,.select{width:100%;padding:var(--space-2) var(--space-3);color:var(--color-text);background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-md);font-family:inherit;font-size:14px;line-height:1.5;transition:border-color .15s,box-shadow .15s}.input:focus,.textarea:focus,.select:focus{border-color:var(--color-accent);box-shadow:0 0 0 3px var(--color-focus-ring);outline:none}.textarea{resize:vertical;min-height:100px}.label{color:var(--color-text-secondary);margin-bottom:var(--space-1);font-size:13px;font-weight:500;display:block}.form-group{margin-bottom:var(--space-4)}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-5)}.card-hover:hover{border-color:var(--color-accent);box-shadow:var(--shadow-sm);cursor:pointer}.badge{align-items:center;gap:var(--space-1);padding:2px var(--space-2);border-radius:var(--radius-pill);font-size:12px;font-weight:500;display:inline-flex}.badge-planning{background:var(--color-primary-light);color:var(--color-primary)}.badge-researching{background:var(--color-warning-light);color:var(--color-warning)}.badge-completed{background:var(--color-success-light);color:var(--color-success)}.alert{padding:var(--space-2) var(--space-4);border-radius:var(--radius-md);font-size:13px}.alert-danger{background:var(--color-danger-light);color:var(--color-danger)}.alert-info{background:var(--color-primary-light);color:var(--color-text-secondary)}.text-muted{color:var(--color-text-secondary)}.text-sm{font-size:13px}.text-danger{color:var(--color-danger)}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.flex{display:flex}.flex-col{flex-direction:column;display:flex}.flex-center{justify-content:center;align-items:center;display:flex}.flex-between{justify-content:space-between;align-items:center;display:flex}.flex-wrap{flex-wrap:wrap}.flex-1{flex:1}.flex-shrink-0{flex-shrink:0}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-end{justify-content:flex-end}.min-w-0{min-width:0}.w-full{width:100%}.h-full{height:100%}.gap-1{gap:var(--space-1)}.gap-2{gap:var(--space-2)}.gap-3{gap:var(--space-3)}.gap-4{gap:var(--space-4)}.gap-6{gap:var(--space-6)}.gap-8{gap:var(--space-8)}.p-3{padding:var(--space-3)}.p-4{padding:var(--space-4)}.p-5{padding:var(--space-5)}.p-6{padding:var(--space-6)}.px-4{padding-left:var(--space-4);padding-right:var(--space-4)}.px-5{padding-left:var(--space-5);padding-right:var(--space-5)}.py-2{padding-top:var(--space-2);padding-bottom:var(--space-2)}.py-3{padding-top:var(--space-3);padding-bottom:var(--space-3)}.mt-1{margin-top:var(--space-1)}.mt-2{margin-top:var(--space-2)}.mt-3{margin-top:var(--space-3)}.mt-4{margin-top:var(--space-4)}.mt-6{margin-top:var(--space-6)}.mb-1{margin-bottom:var(--space-1)}.mb-2{margin-bottom:var(--space-2)}.mb-3{margin-bottom:var(--space-3)}.mb-4{margin-bottom:var(--space-4)}.mb-5{margin-bottom:var(--space-5)}.mb-6{margin-bottom:var(--space-6)}.mb-8{margin-bottom:var(--space-8)}.text-xs{font-size:11px}.text-base{font-size:14px}.text-lg{font-size:16px}.text-xl{font-size:18px}.text-2xl{font-size:22px}.font-medium{font-weight:500}.font-semibold{font-weight:600}.font-bold{font-weight:700}.text-center{text-align:center}.italic{font-style:italic}.capitalize{text-transform:capitalize}.pre-wrap{white-space:pre-wrap}.text-primary{color:var(--color-primary)}.text-success{color:var(--color-success)}.text-warning{color:var(--color-warning)}.bg-surface{background:var(--color-surface)}.bg-secondary{background:var(--color-bg-secondary)}.bg-tertiary{background:var(--color-bg-tertiary)}.border-b{border-bottom:1px solid var(--color-border)}.border-t{border-top:1px solid var(--color-border)}.border-light-b{border-bottom:1px solid var(--color-border-light)}.logo-text{font-family:var(--font-display);color:var(--color-primary);letter-spacing:-.02em;font-size:18px;font-weight:700}.auth-page{background:var(--color-bg-secondary);min-height:100vh;padding:var(--space-4);justify-content:center;align-items:center;display:flex}.auth-card{width:100%;max-width:400px}.auth-brand{font-family:var(--font-display);color:var(--color-primary);letter-spacing:-.02em;font-size:26px;font-weight:700}.page-title{font-family:var(--font-display);margin-bottom:var(--space-1);color:var(--color-primary);font-size:24px;font-weight:700}.section-title{margin-bottom:var(--space-3);font-size:15px;font-weight:600}.chat-bubble-user{background:var(--color-primary);color:var(--color-primary-text);padding:var(--space-3) var(--space-4);border-radius:16px 16px 4px;max-width:85%;font-size:14px;line-height:1.5}.chat-bubble-assistant{max-width:85%;padding:var(--space-3) var(--space-4);border-radius:var(--radius-lg);background:var(--color-surface-raised);color:var(--color-text);border:1px solid var(--color-border);white-space:pre-wrap;font-size:14px;line-height:1.6}.chat-bubble-system{text-align:center;color:var(--color-text-muted);padding:var(--space-2) 0;font-size:12px;font-style:italic}.sidebar-group-label{color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em;padding:var(--space-1) var(--space-2);font-size:11px;font-weight:600}.project-card{padding:14px var(--space-5);justify-content:space-between;align-items:center;display:flex}.status-hint{align-items:center;gap:var(--space-2);color:var(--color-text-muted);font-size:13px;transition:color .3s;display:flex}.status-hint-done{color:var(--color-success)}.dictation-btn{border-radius:50%;width:32px;height:32px;padding:0;font-size:18px;position:absolute;bottom:8px;right:8px}.memo-doc{color:#1a1a1a;border-radius:var(--radius-lg);max-width:720px;box-shadow:var(--shadow-md);background:#fff;border:1px solid #dee2e6;margin:0 auto;padding:40px 48px;font-size:15px;line-height:1.7}.error-page{height:100vh;padding:var(--space-10);text-align:center;font-family:var(--font-sans);flex-direction:column;justify-content:center;align-items:center;display:flex}.artifact-card{border:1px solid var(--color-border);border-radius:var(--radius-lg);margin-bottom:var(--space-4);background:var(--color-surface);overflow:hidden}.artifact-header{padding:var(--space-2) var(--space-4);background:var(--color-bg-tertiary);border-bottom:1px solid var(--color-border-light);justify-content:space-between;align-items:center;font-size:12px;display:flex}.artifact-content{padding:var(--space-4) var(--space-5);font-size:14px;line-height:1.65;overflow-x:auto}.artifact-footer{gap:var(--space-1);padding:var(--space-2) var(--space-4);border-top:1px solid var(--color-border-light);background:var(--color-bg-secondary);flex-wrap:wrap;display:flex}.artifact-disclaimer{padding:var(--space-2) var(--space-4);background:var(--color-bg-secondary);border-top:1px solid var(--color-border-light);color:var(--color-text-muted);font-size:11px;font-style:italic}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--color-text-muted)}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{0%,to{opacity:.3;transform:scale(.8)}50%{opacity:1;transform:scale(1.2)}}.spinner{border:2px solid var(--color-border);border-top-color:var(--color-accent);role:status;border-radius:50%;width:14px;height:14px;animation:.8s linear infinite spin;display:inline-block}.spinner-dot{background:var(--color-primary);border-radius:50%;width:8px;height:8px;animation:1.2s ease-in-out infinite pulse;display:inline-block}.app-shell{height:100dvh;display:flex;overflow:hidden}.app-main{flex-direction:column;flex:1;min-width:0;display:flex;overflow:hidden}.app-header{padding:0 var(--space-4);border-bottom:1px solid var(--color-border);background:var(--color-surface);flex-shrink:0;justify-content:space-between;align-items:center;height:48px;display:flex}.app-brand{color:var(--color-primary);letter-spacing:-.01em;font-size:15px;font-weight:600}.app-content{background:var(--color-bg);flex:1;overflow-y:auto}.sidebar-container{flex-shrink:0;transition:width .2s,transform .2s}.sidebar-container.sidebar-visible{width:260px}.sidebar-container.sidebar-hidden{width:0;overflow:hidden}.sidebar-container.sidebar-mobile{z-index:100;width:280px;position:fixed;top:0;bottom:0;left:0}.sidebar-container.sidebar-mobile.sidebar-visible{transform:translate(0)}.sidebar-container.sidebar-mobile.sidebar-hidden{width:280px;transform:translate(-100%)}.sidebar-backdrop{z-index:99;background:#0006;position:fixed;inset:0}.page-container{max-width:800px;padding:var(--space-10) var(--space-6);margin:0 auto}.page-container-narrow{max-width:640px;padding:var(--space-10) var(--space-6);margin:0 auto}[data-theme=dark] .logo-text,[data-theme=dark] .page-title,[data-theme=dark] .section-title,[data-theme=dark] .auth-brand,[data-theme=dark] .app-brand{color:var(--color-accent)}[data-theme=dark] .btn-outline-primary{color:#6bbf7b;border-color:#6bbf7b}[data-theme=dark] .btn-outline-primary:hover:not(:disabled){color:#0a1f0c;background:#6bbf7b}@media (width<=767px){.page-container,.page-container-narrow{padding:var(--space-5) var(--space-4)}.header-actions{gap:var(--space-1)}.btn{min-height:44px}.btn-sm{min-height:36px;padding:var(--space-2) var(--space-3)}.badge{padding:var(--space-1) var(--space-3);font-size:13px}}@media (width<=480px){.page-container,.page-container-narrow{padding:var(--space-4) var(--space-3)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@media print{aside,header,nav,form,.no-print,.app-header,.sidebar-container,.sidebar-backdrop{display:none!important}html,body,#root{font-size:12pt;line-height:1.6;color:#000!important;background:#fff!important;height:auto!important;overflow:visible!important}.app-shell,.app-main,.app-content,.flex-col,.h-full,[style*="height: 100%"],[style*=overflow]{height:auto!important;display:block!important;overflow:visible!important}.memo-preview-wrapper{background:#fff!important;height:auto!important;margin:0!important;padding:0!important;overflow:visible!important}.memo-preview,.memo-doc{max-width:100%!important;box-shadow:none!important;color:#000!important;background:#fff!important;border:none!important;height:auto!important;margin:0!important;padding:0!important;overflow:visible!important}.memo-preview h1,.memo-preview h2,.memo-preview h3{page-break-after:avoid;color:#000!important}.memo-preview pre,.memo-preview blockquote{page-break-inside:avoid;color:#000!important;background:#f8f8f8!important;border-color:#ccc!important}.memo-preview a{text-decoration:underline;color:#000!important}.memo-preview a:after{content:" (" attr(href) ")";color:#666;font-size:.85em}.memo-preview table{border-color:#ccc!important}.memo-preview th,.memo-preview td{color:#000!important;background:#fff!important;border-color:#ccc!important}.memo-preview th{background:#f0f0f0!important}}
