:root{--bg: #f6f4f0;--panel: #ffffff;--ink: #1f2a37;--ink-soft: #4b5563;--muted: #8a94a3;--line: #e4e0d8;--accent: #ff8c42;--accent-ink: #1a1a1a;--blue: #2563eb;--ok: #2e7d32;--ok-bg: #edf7ed;--warn: #b26a00;--error: #c62828;--error-bg: #fdecec;--radius: 14px;--shadow: 0 1px 2px rgba(31, 42, 55, .06), 0 8px 24px rgba(31, 42, 55, .06);--safe-bottom: env(safe-area-inset-bottom, 0px);font-family:Heebo,system-ui,Segoe UI,Arial,sans-serif;color:var(--ink);background:var(--bg);-webkit-text-size-adjust:100%}*{box-sizing:border-box}body,h1,h2,h3{margin:0}.app{display:grid;grid-template-columns:380px minmax(0,1fr);grid-template-rows:auto 1fr auto;grid-template-areas:"header header" "aside main" "aside actions";min-height:100vh;min-height:100dvh}header{grid-area:header;display:flex;align-items:center;gap:14px;padding:10px 18px;background:var(--ink);color:#fff;position:sticky;top:0;z-index:5}.brand{display:flex;align-items:baseline;gap:10px}.brand h1{font-size:22px;letter-spacing:.5px}.brand h1:before{content:"";display:inline-block;width:10px;height:10px;background:var(--accent);border-radius:3px;margin-inline-end:8px;vertical-align:middle}.tagline{opacity:.75;font-size:13px}.badge{background:var(--accent);color:var(--accent-ink);padding:3px 12px;border-radius:999px;font-size:13px;font-weight:500;margin-inline-start:auto;white-space:nowrap}aside{grid-area:aside;padding:14px;overflow-y:auto;border-inline-start:1px solid var(--line);background:#faf8f4}main{grid-area:main;padding:16px 20px 8px;min-width:0}footer.actions{grid-area:actions;padding:10px 20px 14px;background:linear-gradient(transparent,var(--bg) 30%);position:sticky;bottom:0}.view{margin-top:10px}.card{background:var(--panel);border-radius:var(--radius);box-shadow:var(--shadow);margin-bottom:10px;border:1px solid transparent}.card[open]{border-color:var(--line)}.card summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;align-items:center;gap:8px;padding:12px 14px;font-weight:500}.card summary::-webkit-details-marker{display:none}.card summary:after{content:"›";color:var(--muted);font-size:20px;transform:rotate(90deg);transition:transform .15s}.card[open] summary:after{transform:rotate(-90deg)}.card summary small{color:var(--muted);font-weight:400;margin-inline-start:auto}.card-body{padding:4px 14px 12px}.field{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:7px 0;font-size:14px;border-top:1px solid #f1eee8}.field:first-child{border-top:none}.field-label{flex:1;color:var(--ink-soft)}.field-input{display:flex;align-items:center;gap:6px}input,select{font:inherit;font-size:16px;padding:9px 10px;border:1px solid var(--line);border-radius:10px;width:130px;background:#fff;color:var(--ink)}input:focus,select:focus{outline:2px solid var(--accent);outline-offset:1px;border-color:transparent}input[type=number]{text-align:left;direction:ltr;font-variant-numeric:tabular-nums}.unit{color:var(--muted);font-size:13px;min-width:32px}.segmented{display:flex;background:#f1eee8;border-radius:10px;padding:3px;gap:3px}.segmented button{flex:1;border:none;background:transparent;border-radius:8px;padding:9px 6px;font-size:14px}.segmented button.active{background:#fff;color:var(--ink);box-shadow:var(--shadow);font-weight:500}button{font:inherit;font-size:15px;padding:10px 16px;border-radius:10px;border:1px solid var(--line);background:#fff;color:var(--ink);cursor:pointer;min-height:42px}button.primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent);font-weight:500}button.danger{color:var(--error);border-color:var(--error)}button.ghost{background:transparent;border-color:transparent;color:var(--ink-soft)}button.small{min-height:30px;padding:4px 10px;font-size:13px}button.active{background:var(--ink);color:#fff;border-color:var(--ink)}button:disabled{opacity:.45;cursor:default}.export-bar{display:flex;flex-wrap:wrap;gap:8px}.tabs{display:flex;gap:6px;margin-top:12px}.engine-status{display:flex;align-items:center;gap:14px;padding:14px 16px;border-radius:var(--radius);background:var(--panel);box-shadow:var(--shadow);margin-bottom:12px}.engine-status.error{background:var(--error-bg);color:var(--error)}.engine-status small{display:block;color:var(--muted);margin-top:2px;font-size:13px}.spinner{width:22px;height:22px;border:3px solid var(--line);border-top-color:var(--accent);border-radius:50%;animation:spin .9s linear infinite;flex-shrink:0}@keyframes spin{to{transform:rotate(360deg)}}.warnings{padding:10px 14px;border-radius:var(--radius);font-size:14px;border:1px solid}.warnings.ok{border-color:#cfe8d0;background:var(--ok-bg);color:var(--ok)}.warnings.blocked{border-color:#f3c0c0;background:var(--error-bg);color:var(--error)}.warnings ul{margin:6px 0 0;padding-inline-start:18px;color:var(--ink-soft)}.warnings li.error{color:var(--error)}.warnings li.warn{color:var(--warn)}.warnings li.info{color:var(--muted)}.summary,.muted{color:var(--muted);font-size:13.5px;margin:8px 0}.message{color:var(--blue);font-size:14px;margin:6px 0}.plan{width:100%;max-height:68vh;background:#fff;border-radius:var(--radius);box-shadow:var(--shadow);padding:8px}table.parts{width:100%;border-collapse:separate;border-spacing:0;background:#fff;font-size:14px;border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow)}table.parts th{background:#f1eee8;color:var(--ink-soft);font-weight:500;padding:8px}table.parts td{border-top:1px solid #f1eee8;padding:6px 8px;text-align:center}table.parts td.name{text-align:right;font-weight:500}table.parts td.qty{font-weight:700;color:var(--accent-ink)}table.parts td.thumb svg{width:190px;max-width:100%;color:var(--ink)}.round-list{display:flex;flex-wrap:wrap;gap:6px}.changes{margin-top:12px;font-size:14px;background:#fff;border-radius:var(--radius);padding:12px 14px;box-shadow:var(--shadow)}.projects-menu{display:flex;gap:6px;align-items:center}.projects-menu select{width:auto;max-width:220px;padding:7px 10px;font-size:14px}.projects-menu button{color:#fff}.photo-actions{display:flex;gap:8px}.photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}.photo-grid figure{margin:0;background:#fff;border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow)}.photo-grid img{width:100%;aspect-ratio:4/3;object-fit:cover;display:block}.photo-grid figcaption{display:flex;justify-content:space-between;align-items:center;padding:6px 10px;font-size:12px;color:var(--muted)}.new-menu{display:flex;gap:2px}.new-menu button{color:#fff;padding:6px 10px;font-size:13px;min-height:34px}.open-card{padding:12px 14px}.open-card h3{font-size:15px;color:var(--ink);border:none;padding:0 0 8px}.open-card h3 small{color:var(--muted);font-weight:400}.section-title{font-size:15px;margin:14px 0 8px}.review-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.review-list{list-style:none;margin:0;padding:0}.review-list li{display:flex;align-items:center;gap:10px;padding:8px 0;border-top:1px solid #f1eee8}.review-list li.ok .path{color:var(--ok)}.review-list li.low{background:#fff8ec;margin:0 -14px;padding:8px 14px}.review-list .chk input{width:22px;height:22px}.review-list .info{flex:1;display:flex;flex-direction:column;font-size:14px}.review-list .info small{color:var(--muted);font-size:12px}.review-list .info small.warn{color:var(--warn)}.review-list input[type=text]{width:100px;text-align:left;direction:ltr}.questions ul{margin:0;padding-inline-start:18px;font-size:14px;color:var(--ink-soft)}.revise-row{display:flex;gap:8px}.revise-row input{flex:1;width:auto}.analyze .notes{width:100%;margin:10px 0}.chk-row{display:flex;align-items:center;gap:8px;font-size:14px;margin-bottom:10px}.chk-row input{width:20px;height:20px}.photo-grid.pick figure{cursor:pointer}.photo-grid.pick figure.chosen{outline:3px solid var(--accent)}.kind-spec main{grid-row:main / actions}.guide ol{margin:6px 0;padding-inline-start:18px;font-size:14px;line-height:1.5}.guide-head{display:flex;justify-content:space-between;align-items:center}.guide-open{margin-bottom:6px}.steps{display:flex;gap:6px;list-style:none;padding:0;margin:0 0 8px;font-size:13px}.steps li{flex:1;text-align:center;padding:6px 4px;border-radius:8px;background:#f1eee8;color:var(--muted)}.steps li.now{background:var(--accent);color:var(--accent-ink);font-weight:500}.steps li.done{background:#e4f3e4;color:var(--ok)}.notice{display:flex;flex-direction:column;gap:8px;background:#fff8ec;border:1px solid #f3d9a6;border-radius:var(--radius);padding:12px 14px;margin-bottom:10px;font-size:14px}.part-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap;padding:6px 0;border-top:1px solid #f1eee8}.part-row input{width:140px}.part-row input.qty{width:60px}.segmented.small button{padding:5px 8px;font-size:13px}.card-body h4{margin:12px 0 4px;font-size:13px;color:var(--muted)}button.big{font-size:16px;padding:12px 18px}.sketch-toolbar{display:flex;gap:4px;flex-wrap:wrap;margin-bottom:8px}.sketch-toolbar button{display:flex;flex-direction:column;align-items:center;gap:0;padding:6px 10px;min-width:56px;font-size:11px}.sketch-toolbar .icon{font-size:18px;line-height:1.1}.board{width:100%;aspect-ratio:10 / 7;background:#fff;border-radius:var(--radius);box-shadow:var(--shadow);touch-action:none;cursor:crosshair;display:block}.dim-popover{background:#fff;border-radius:var(--radius);box-shadow:var(--shadow);padding:12px 14px;margin-top:8px;display:flex;flex-direction:column;gap:8px}.dim-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.dim-row input{width:110px}.sketch-status{display:flex;flex-direction:column;gap:4px;margin:8px 0;font-size:14px}.sketch-status .real{color:var(--ink)}.sketch-status .warn{color:var(--warn)}.sketch-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.sketch-actions .name{flex:1;min-width:160px;width:auto}.sketch-list{margin-top:10px;display:flex;flex-direction:column;gap:4px}.sketch-item{display:flex;justify-content:space-between;align-items:center;background:#fff;border-radius:10px;padding:2px 6px;box-shadow:var(--shadow)}.sketch-item.active{outline:2px solid var(--accent)}.mobile-only{display:none}@media (max-width: 820px){.app{grid-template-columns:minmax(0,1fr);grid-template-rows:auto 1fr auto auto;grid-template-areas:"header" "main" "actions" "nav"}footer.actions,.bottom-nav,main,header{min-width:0}header{padding:8px 12px;gap:8px;flex-wrap:wrap}.tagline{display:none}.projects-menu{order:3;width:100%}.projects-menu select{flex:1;max-width:none}.badge{margin-inline-start:auto}aside{grid-area:main;border:none;background:transparent;display:none;padding:12px}aside.show-mobile{display:block}main{padding:12px}main.hide-mobile{display:none}.desktop-only{display:none}.mobile-only{display:flex}footer.actions{padding:8px 12px;background:var(--panel);border-top:1px solid var(--line)}.export-bar{flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch}.export-bar button{white-space:nowrap}.bottom-nav{grid-area:nav;position:sticky;bottom:0;background:var(--panel);border-top:1px solid var(--line);padding:4px 4px calc(4px + var(--safe-bottom));justify-content:space-around;z-index:5}.bottom-nav button{flex:1;border:none;background:transparent;display:flex;flex-direction:column;align-items:center;gap:2px;font-size:11px;padding:6px 2px;color:var(--muted);min-height:50px;border-radius:10px}.bottom-nav button.active{color:var(--ink);background:#f1eee8;font-weight:500}.bottom-nav .icon{font-size:20px}.plan{max-height:55vh}table.parts td.thumb svg{width:100px}input,select{width:120px}.card summary{padding:14px}}
