html,body,#root{margin:0;padding:0;min-height:100%;background:#f7f4ef}body{font-family:Futura,Trebuchet MS,Segoe UI,sans-serif}button{font-family:inherit}:root{--bg: #f7f4ef;--panel: #ffffff;--panel-accent: #f0ebe2;--ink: #1f1c18;--muted: #6b645d;--primary: #cc4b37;--primary-dark: #a33827;--accent: #0b6e6e;--shadow: 0 14px 30px rgba(0, 0, 0, .08)}*{box-sizing:border-box}.app-shell{min-height:100vh;background:radial-gradient(circle at top,#fdf9f4,#f4efe6 45%,#efe8dd);color:var(--ink);padding:32px;font-family:Futura,Trebuchet MS,Segoe UI,sans-serif}.app-header{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:32px}.app-header h1{font-size:32px;margin:6px 0 0;letter-spacing:-.02em}.eyebrow{text-transform:uppercase;letter-spacing:.18em;font-size:11px;color:var(--muted)}.header-status{background:var(--panel);padding:12px 16px;border-radius:12px;box-shadow:var(--shadow);min-width:160px;text-align:right}.header-status span{display:block;font-size:12px;color:var(--muted)}.header-status strong{font-size:16px}.app-body{display:grid;grid-template-columns:minmax(280px,360px) 1fr;gap:24px}.control-panel{background:var(--panel);border-radius:24px;padding:24px;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:24px}.control-panel h2{font-size:16px;margin-bottom:12px}.control-panel section{border-bottom:1px solid #eee6dc;padding-bottom:18px}.control-panel section:last-child{border-bottom:none;padding-bottom:0}.field{display:flex;flex-direction:column;gap:8px;margin-bottom:12px;font-size:13px;color:var(--muted)}.field select,.field input[type=file],.field input[type=range],.field input[type=number]{padding:8px 10px;border-radius:10px;border:1px solid #e6ded3;background:#fff;color:var(--ink);font-size:14px}.toggle-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.toggle{border:1px solid #e6ded3;background:#f7f1e8;border-radius:12px;padding:10px;font-size:13px;cursor:pointer;transition:all .2s ease}.toggle.active{background:var(--accent);color:#fff;border-color:transparent}.info-row{display:grid;gap:8px;font-size:13px;color:var(--muted)}.info-row .label{display:block;text-transform:uppercase;font-size:11px;letter-spacing:.12em;color:#a39a91}.error{color:#a33a2b;font-size:12px;margin:6px 0 0}.button-row{display:flex;gap:10px}button.primary{background:var(--primary);color:#fff;border:none;border-radius:12px;padding:10px 14px;font-size:14px;cursor:pointer;box-shadow:0 6px 16px #cc4b3740}button.primary:hover{background:var(--primary-dark)}button.ghost{background:transparent;border:1px solid #d8cfc4;border-radius:12px;padding:10px 14px;font-size:14px;cursor:pointer}button:disabled{opacity:.6;cursor:not-allowed;box-shadow:none}.canvas-panel{background:var(--panel);border-radius:24px;padding:24px;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:16px;position:sticky;top:24px;align-self:start}.canvas-toolbar{display:flex;justify-content:space-between;align-items:center;color:var(--muted);font-size:13px}.pill{background:#f1e8dd;padding:6px 12px;border-radius:999px;font-size:12px;color:#7d7065}.canvas-frame{position:relative;background:var(--panel-accent);border-radius:18px;padding:12px;min-height:420px}#planner-canvas{width:100%;height:auto;display:block;border-radius:12px;background:#faf7f2;border:1px solid #e5ddd2;image-rendering:pixelated;touch-action:none}.canvas-hint{position:absolute;bottom:16px;left:16px;background:#ffffffd9;padding:8px 12px;border-radius:10px;font-size:12px;color:var(--muted)}.planner-info{font-size:12px;color:var(--muted);margin:10px 0 0;line-height:1.4}.planner-info.error{color:#a33a2b}.helper{font-size:12px;color:var(--muted);margin:0 0 10px}.config-textarea{width:100%;border-radius:12px;border:1px solid #e6ded3;padding:10px 12px;font-size:12px;font-family:SFMono-Regular,Consolas,Liberation Mono,monospace;color:var(--ink);background:#fffaf5;resize:vertical;min-height:140px}.config-textarea.error{border-color:#a33a2b;background:#fff4f2}@media(max-width:1100px){.app-body{grid-template-columns:1fr}.canvas-frame{min-height:320px}.canvas-panel{position:static}}
