:root{--bg: #F5F1E8;--bg-alt: #EDE6D3;--surface: #FFFFFF;--ink: #1F2419;--ink-soft: #5A5F4F;--ink-muted: #8B8F7E;--border: #D8D0BB;--border-soft: #E5DEC9;--forest: #2D4A2B;--forest-soft: #4A6B47;--moss: #7A9B6E;--terracotta: #B5562F;--terracotta-soft: #D88B6F;--amber: #C8862E;--cream: #FBF8EE;--shadow: rgba(45, 74, 43, .08)}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#root{margin:0;padding:0;height:100%}html,body{overscroll-behavior:none;overflow:hidden}body{font-family:Inter,-apple-system,BlinkMacSystemFont,sans-serif;background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased}.display{font-family:Fraunces,Georgia,serif;letter-spacing:-.02em}.btn{background:var(--surface);border:1px solid var(--border);color:var(--ink);padding:9px 14px;border-radius:8px;font-size:13px;cursor:pointer;font-weight:500;transition:transform .1s,background .15s,border-color .15s;font-family:inherit;-webkit-appearance:none;-moz-appearance:none;appearance:none;touch-action:manipulation}.btn:active{transform:scale(.97)}.btn:hover:not(:disabled){border-color:var(--forest);background:var(--cream)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--forest);color:var(--cream);border-color:var(--forest)}.btn-primary:hover:not(:disabled){background:var(--forest-soft);border-color:var(--forest-soft)}.btn-ghost{background:transparent;border-color:transparent}.btn-ghost:hover{background:var(--bg-alt);border-color:var(--border)}.input{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:10px 12px;font-size:14px;color:var(--ink);outline:none;font-family:inherit;-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%}.input:focus{border-color:var(--forest);box-shadow:0 0 0 3px var(--shadow)}.scrollbar::-webkit-scrollbar{width:6px;height:6px}.scrollbar::-webkit-scrollbar-track{background:transparent}.scrollbar::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}@keyframes pulse{0%,to{opacity:.5}50%{opacity:1}}.pulse{animation:pulse 1.4s ease-in-out infinite}@keyframes slideUp{0%{transform:translateY(8px);opacity:0}to{transform:translateY(0);opacity:1}}.slide-up{animation:slideUp .25s ease-out}@keyframes slideUpSheet{0%{transform:translateY(100%)}to{transform:translateY(0)}}.sheet-anim{animation:slideUpSheet .25s ease-out}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.spin{animation:spin 1s linear infinite}.app{display:flex;flex-direction:column;height:100vh;height:100dvh;overflow:hidden}.header{flex-shrink:0;padding:12px 16px;border-bottom:1px solid var(--border-soft);display:flex;align-items:center;justify-content:space-between;gap:8px;background:var(--bg)}.title-row{display:flex;align-items:baseline;gap:10px;min-width:0}.title-row .title{font-size:22px;font-weight:500;color:var(--forest)}.title-row .subtitle{font-size:10px;color:var(--ink-muted);letter-spacing:.04em;text-transform:uppercase;white-space:nowrap}.header-right{display:flex;gap:6px;align-items:center;flex-shrink:0}.body-area{flex:1;display:flex;flex-direction:column;min-height:0;overflow:hidden}.tabbar{display:flex;flex-shrink:0;background:var(--bg-alt);border-bottom:1px solid var(--border-soft);padding:6px 8px;gap:4px;overflow-x:auto;scrollbar-width:none}.tabbar::-webkit-scrollbar{display:none}.tab{flex:1 0 auto;min-width:80px;background:transparent;border:1px solid transparent;color:var(--ink-soft);padding:8px 10px;border-radius:7px;font-size:12px;font-weight:500;cursor:pointer;font-family:inherit;white-space:nowrap;display:flex;align-items:center;justify-content:center;gap:6px;touch-action:manipulation}.tab.active{background:var(--forest);color:var(--cream)}.canvas-area{flex:1;min-height:0;overflow:auto;padding:12px;background:var(--bg);-webkit-overflow-scrolling:touch}.canvas-card{background:var(--surface);border:1px solid var(--border-soft);border-radius:12px;padding:12px}.canvas-card svg{display:block;width:100%;height:auto;touch-action:none}.panel{flex-shrink:0;background:var(--bg-alt);border-top:1px solid var(--border-soft);padding:14px 16px;max-height:45vh;overflow-y:auto;-webkit-overflow-scrolling:touch}.chat-fab{position:fixed;right:16px;bottom:16px;width:56px;height:56px;border-radius:28px;background:var(--forest);color:var(--cream);border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 12px #2d4a2b4d;z-index:100;touch-action:manipulation;padding:0}.chat-fab:active{transform:scale(.95)}.chat-fab .badge{position:absolute;top:4px;right:4px;background:var(--terracotta);color:#fff;font-size:10px;font-weight:500;border-radius:9px;padding:2px 6px}.sheet-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#1f241973;z-index:200;display:flex;align-items:flex-end}.sheet-content{background:var(--bg);width:100%;max-height:85vh;border-radius:20px 20px 0 0;display:flex;flex-direction:column;overflow:hidden}.sheet-handle{width:36px;height:4px;background:#b4b2a9;border-radius:2px;margin:8px auto 4px;flex-shrink:0}.sheet-header{padding:8px 16px 12px;border-bottom:1px solid var(--border-soft);display:flex;justify-content:space-between;align-items:center;flex-shrink:0}.sheet-body{flex:1;overflow-y:auto;padding:12px 16px;display:flex;flex-direction:column;gap:10px;min-height:0}.sheet-footer{padding:12px 16px;border-top:1px solid var(--border-soft);flex-shrink:0;background:var(--bg)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#1f241973;z-index:300;display:flex;align-items:center;justify-content:center;padding:16px}.modal{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:20px 22px;width:100%;max-width:360px}.dragging *{user-select:none;-webkit-user-select:none}@media (min-width: 880px){.body-area{flex-direction:row}.tabbar{flex-direction:column;width:220px;flex-shrink:0;border-right:1px solid var(--border-soft);border-bottom:none;padding:16px 12px;gap:6px;max-height:none;overflow-y:auto;overflow-x:hidden}.tab{flex:0 0 auto;min-width:0;justify-content:flex-start}.canvas-area{padding:24px}.panel{max-height:none;border-top:none;border-left:1px solid var(--border-soft);width:340px;flex-shrink:0}.chat-fab{display:none}}
