:root{--bg0: #e8ebe6;--bg1: #dfe4dc;--ink: #1a211c;--ink-soft: #4a554e;--muted: #6a756e;--card: rgba(255, 255, 255, .88);--card-border: rgba(26, 33, 28, .08);--accent: #c45c26;--accent-ink: #fff8f3;--accent-soft: #f3e4d8;--line: rgba(26, 33, 28, .1);--ok: #1f6b45;--danger: #b42318;--shadow: 0 10px 30px rgba(26, 33, 28, .08);--radius: 18px;--font-display: "Manrope", system-ui, sans-serif;--font-body: "IBM Plex Sans", system-ui, sans-serif}*{box-sizing:border-box}body{margin:0;min-height:100vh;color:var(--ink);font-family:var(--font-body);line-height:1.5;background:radial-gradient(1200px 500px at 10% -10%,#f4efe6 0%,transparent 55%),radial-gradient(900px 420px at 100% 0%,#d7e0d4 0%,transparent 50%),linear-gradient(180deg,var(--bg0),var(--bg1))}html.pave-drawing-lock,html.pave-drawing-lock body{overflow:hidden;overscroll-behavior:none;touch-action:none}html.pave-drawing-lock body{position:fixed;left:0;right:0;width:100%}.app{max-width:760px;margin:0 auto;padding:20px 16px 120px}.hero{position:relative;overflow:hidden;border-radius:calc(var(--radius) + 4px);padding:22px 20px 18px;margin-bottom:14px;color:#f7f3ec;background:linear-gradient(135deg,#1a211ceb,#2a362ee0),url("data:image/svg+xml,%3Csvg width='60' height='60' viewBox='0 0 60 60' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cg fill='%23ffffff' fill-opacity='0.04'%3E%3Cpath d='M36 34v-4h-2v4h-4v2h4v4h2v-4h4v-2h-4zm0-30V0h-2v4h-4v2h4v4h2V6h4V4h-4zM6 34v-4H4v4H0v2h4v4h2v-4h4v-2H6zM6 4V0H4v4H0v2h4v4h2V6h4V4H6z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E");box-shadow:var(--shadow)}.hero-brand{font-family:var(--font-display);font-size:13px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#e0c3ad;margin:0 0 8px}.hero h1{font-family:var(--font-display);font-size:clamp(1.55rem,4vw,2rem);font-weight:800;letter-spacing:-.03em;margin:0 0 8px;line-height:1.15}.hero p{margin:0;color:#f7f3ecc7;font-size:14px;max-width:38ch}.hero-note{display:inline-flex;margin-top:12px;padding:6px 10px;border-radius:999px;background:#ffffff14;border:1px solid rgba(255,255,255,.12);font-size:12px;color:#f0e2d4}.card{background:var(--card);border:1px solid var(--card-border);border-radius:var(--radius);padding:18px;margin-bottom:12px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:0 1px #ffffffa6 inset}.card-head{display:flex;gap:12px;align-items:flex-start;margin-bottom:12px}.step-num{flex:0 0 auto;width:32px;height:32px;border-radius:10px;display:grid;place-items:center;font-family:var(--font-display);font-weight:800;font-size:14px;color:var(--accent);background:var(--accent-soft)}.card h2{font-family:var(--font-display);margin:0 0 2px;font-size:17px;font-weight:700;letter-spacing:-.02em}.muted{color:var(--muted);font-size:13px;margin:0}.file-button{display:inline-flex;align-items:center;justify-content:center;gap:8px;margin-top:12px;padding:11px 16px;border-radius:12px;background:var(--ink);color:#fff;font-family:var(--font-display);font-weight:700;font-size:14px;cursor:pointer;transition:transform .15s ease,opacity .15s ease}.file-button:hover{transform:translateY(-1px)}.file-button input{display:none}.thumb-grid{list-style:none;margin:14px 0 0;padding:0;display:grid;gap:10px}.thumb-card{display:flex;gap:12px;align-items:center;border:1px solid var(--line);border-radius:14px;padding:10px;background:#ffffffa6;transition:border-color .15s ease,box-shadow .15s ease}.thumb-card.active{border-color:var(--accent);box-shadow:0 0 0 3px #c45c261f}.thumb-btn{flex:1;display:flex;gap:12px;align-items:center;border:0;background:transparent;padding:0;text-align:left;cursor:pointer;color:inherit;font:inherit}.thumb-btn.static{cursor:default}.thumb-btn img,.material-photo{width:72px;height:72px;object-fit:cover;border-radius:12px;background:#d7ddd6}.thumb-meta{display:grid;gap:4px;min-width:0}.thumb-meta strong{font-family:var(--font-display);font-size:14px}.color-chip{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--ink-soft)}.color-dot{width:10px;height:10px;border-radius:50%}.material-label{width:100%;border:1px solid var(--line);border-radius:10px;padding:7px 10px;font:inherit;font-size:13px;background:#fff}.mode-grid{display:grid;gap:8px}.mode-option{display:grid;gap:2px;border:1px solid var(--line);border-radius:14px;padding:12px 14px;cursor:pointer;background:#ffffff8c;transition:border-color .15s ease,background .15s ease}.mode-option.active{border-color:var(--accent);background:var(--accent-soft)}.mode-option strong{font-family:var(--font-display);font-size:14px}.mode-option input{position:absolute;opacity:0;pointer-events:none}.prompt{width:100%;border:1px solid var(--line);border-radius:14px;padding:12px 14px;font:inherit;resize:vertical;background:#fff;margin-top:10px}.mapping-hint{margin:10px 0 0;font-size:12px;color:var(--ink-soft);background:#ffffffb3;border:1px dashed var(--line);border-radius:12px;padding:10px 12px}.prompt-preview{margin-top:12px;border:1px solid var(--line);border-radius:14px;background:#121814;color:#d7e0d4;overflow:hidden}.prompt-preview-head{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:10px 12px;border-bottom:1px solid rgba(255,255,255,.08);font-size:12px}.prompt-preview-head strong{font-family:var(--font-display);color:#f4efe6}.prompt-preview pre{margin:0;padding:12px;max-height:260px;overflow:auto;white-space:pre-wrap;word-break:break-word;font-size:12px;line-height:1.45;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.prompt-preview .loading-line,.prompt-preview .error-line{padding:12px;font-size:13px}.prompt-preview .error-line{color:#ffb4a8}.btn{display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--line);background:#fff;color:var(--ink);border-radius:12px;padding:10px 14px;font-family:var(--font-display);font-weight:700;font-size:14px;cursor:pointer;text-decoration:none}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-small{padding:7px 10px;font-size:12px;border-radius:10px}.btn-small.active{background:var(--ink);border-color:var(--ink);color:#fff}.btn.ghost{background:transparent;color:#d7e0d4;border-color:#ffffff29}.btn.danger{color:var(--danger);border-color:#b4231840;background:#fff}.sticky-actions{position:fixed;left:0;right:0;bottom:0;z-index:20;padding:12px 16px calc(12px + env(safe-area-inset-bottom));background:linear-gradient(180deg,transparent,rgba(232,235,230,.92) 28%);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.sticky-inner{max-width:760px;margin:0 auto;display:grid;gap:8px}.btn.primary{width:100%;min-height:52px;background:var(--accent);border-color:var(--accent);color:var(--accent-ink);box-shadow:0 10px 24px #c45c2647}.btn.primary:hover:not(:disabled){filter:brightness(1.05)}.status-line{font-size:13px;text-align:center}.status-line.error{color:var(--danger)}.status-line.warning{color:#92400e}.mask-editor{margin-top:14px}.mask-toolbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:8px}.brush-size{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--ink-soft)}.mask-hint{margin:0 0 8px}.color-row{display:flex;gap:8px;margin-bottom:8px}.color-swatch{width:30px;height:30px;border-radius:999px;border:2px solid transparent;cursor:pointer;padding:0}.color-swatch.active{border-color:var(--ink);box-shadow:0 0 0 2px #fff,0 0 0 4px var(--ink)}.mask-stage{position:relative;width:100%;border-radius:14px;overflow:hidden;background:#121814;touch-action:none;overscroll-behavior:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}.mask-stage.loading{min-height:180px}.mask-canvas{display:block;width:100%;height:auto;-webkit-user-select:none;user-select:none}.mask-canvas.draw{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;cursor:crosshair;touch-action:none;overscroll-behavior:none}.usage-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:8px}.usage-pill{border-radius:14px;padding:12px;background:#ffffffb8;border:1px solid var(--line)}.usage-pill span{display:block;font-size:11px;color:var(--muted);margin-bottom:2px}.usage-pill strong{font-family:var(--font-display);font-size:16px;letter-spacing:-.02em}.usage-pill.cost{grid-column:1 / -1;background:linear-gradient(135deg,#1a211c,#2a362e);color:#f7f3ec;border:0}.usage-pill.cost span{color:#f7f3ecb3}.results{display:grid;gap:14px;margin-top:12px}.result-item{margin:0;display:grid;gap:10px}.result-item img{width:100%;border-radius:14px;border:1px solid var(--line);display:block;background:#d7ddd6}@media(max-width:520px){.usage-grid{grid-template-columns:1fr}.usage-pill.cost{grid-column:auto}}
