:root{--ink:#28251f;--paper:#f3efe6;--card:#fbfaf6;--orange:#e96d42;--orange-dark:#c94f2c;--line:#d9d3c8;--muted:#7d786f;--shadow:0 24px 60px rgba(67,53,35,.13)}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:"DM Sans",sans-serif;min-height:100vh;background-image:radial-gradient(#d3cdc1 0.7px,transparent .7px);background-size:18px 18px}
button,input{font:inherit}.site-header{height:78px;display:flex;align-items:center;justify-content:space-between;padding:0 clamp(24px,5vw,76px);border-bottom:1px solid rgba(40,37,31,.13);background:rgba(243,239,230,.88);backdrop-filter:blur(14px)}.site-header p{font-size:13px;color:var(--muted)}.brand{display:flex;align-items:center;gap:12px;color:inherit;text-decoration:none;font-weight:700;letter-spacing:-.02em}.brand-mark{position:relative;width:31px;height:28px;display:block}.brand-mark span{position:absolute;width:18px;height:24px;border:2px solid var(--ink);border-radius:50%;background:var(--paper)}.brand-mark span:nth-child(1){left:0}.brand-mark span:nth-child(2){left:6px}.brand-mark span:nth-child(3){left:12px}
main{width:min(1180px,calc(100% - 40px));margin:auto}.intro{text-align:center;padding:64px 20px 46px}.eyebrow{text-transform:uppercase;letter-spacing:.18em;color:var(--orange-dark);font-size:11px;font-weight:700;margin-bottom:15px}.intro h1{font:700 clamp(44px,6vw,76px)/.97 "Fraunces",serif;letter-spacing:-.045em;margin:0}.intro h1 em{color:var(--orange);font-weight:600}.intro p{max-width:540px;margin:22px auto 0;color:var(--muted);line-height:1.65;font-size:15px}
.studio{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(320px,.65fr);background:var(--card);border:1px solid var(--line);border-radius:24px;box-shadow:var(--shadow);overflow:hidden}.preview-panel{padding:32px 38px 28px;border-right:1px solid var(--line)}.preview-heading,.preview-heading>div,.section-title{display:flex;align-items:center;justify-content:space-between}.preview-heading>div,.section-title{justify-content:flex-start;gap:12px}.step{font:600 13px "Fraunces",serif;color:var(--orange);border:1px solid #efb7a2;border-radius:50%;width:27px;height:27px;display:grid;place-items:center}.preview-heading h2,.section-title h2{font:600 21px "Fraunces",serif;margin:0}.text-button{border:0;background:none;color:var(--muted);cursor:pointer;text-decoration:underline;text-underline-offset:3px;font-size:12px}.text-button:hover{color:var(--orange-dark)}
.canvas-wrap{position:relative;aspect-ratio:1;margin:26px auto 0;max-width:570px;border-radius:18px;overflow:hidden;background:#e9e3d8;box-shadow:inset 0 0 0 1px rgba(40,37,31,.08);touch-action:none}.canvas-wrap.drag-over{outline:3px solid var(--orange);outline-offset:4px}canvas{width:100%;height:100%;display:block}.empty-state{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;flex-direction:column;text-align:center;gap:8px}.empty-state.hidden{display:none}.empty-state strong{font:600 22px "Fraunces",serif}.empty-state span{font-size:12px;color:var(--muted)}.empty-icon{width:66px;height:66px;border:1px dashed #aaa297;border-radius:50%;display:grid;place-items:center;margin-bottom:7px}.empty-icon svg{width:30px;fill:none;stroke:var(--muted);stroke-width:1.5}.primary{border:0;background:var(--orange);color:white;font-weight:700;border-radius:10px;cursor:pointer;box-shadow:0 6px 15px rgba(201,79,44,.2);transition:.18s transform,.18s background}.primary:hover{background:var(--orange-dark);transform:translateY(-1px)}.primary.small{padding:10px 18px;margin-top:8px;font-size:12px}.drag-hint{text-align:center;color:#9a948a;font-size:11px;margin:15px 0 0}.drag-hint span{color:var(--orange)}
.controls-panel{background:#f8f5ef}.control-section{padding:28px 30px;border-bottom:1px solid var(--line)}.control-section.compact{padding-top:24px}.upload-control{display:flex;align-items:center;gap:12px;border:1px dashed #c4bbae;border-radius:12px;padding:14px;margin-top:18px;cursor:pointer;background:#fffdf9;transition:.2s border,.2s background}.upload-control:hover{border-color:var(--orange);background:#fff8f3}.upload-symbol{background:#f2e4db;color:var(--orange-dark);width:34px;height:34px;border-radius:50%;display:grid;place-items:center;font-size:20px}.upload-control strong,.upload-control small{display:block}.upload-control strong{font-size:13px}.upload-control small{font-size:10px;color:var(--muted);margin-top:2px}.arrow{margin-left:auto}.label-row,.toggle-row{display:flex;align-items:center;justify-content:space-between}.label-row label,.label{font-size:12px;font-weight:700}.label-row output{color:var(--orange-dark);font-size:11px}.label-row.second{margin-top:21px}.range{width:100%;height:3px;margin-top:13px;accent-color:var(--orange)}
.background-label{margin-top:24px}.background-palette{display:grid;grid-template-columns:repeat(9,1fr);gap:7px;margin-top:12px}.color-swatch{width:100%;aspect-ratio:1;border:2px solid #fff;border-radius:50%;background:var(--swatch-color);box-shadow:0 0 0 1px #cfc8bd;cursor:pointer;transition:.15s transform,.15s box-shadow}.color-swatch[data-color="transparent"]{background-color:#fff;background-image:linear-gradient(45deg,#c8c8c8 25%,transparent 25%),linear-gradient(-45deg,#c8c8c8 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#c8c8c8 75%),linear-gradient(-45deg,transparent 75%,#c8c8c8 75%);background-size:10px 10px;background-position:0 0,0 5px,5px -5px,-5px 0}.color-swatch:hover{transform:scale(1.08)}.color-swatch.active{box-shadow:0 0 0 2px var(--orange);transform:scale(1.08)}.color-swatch:focus-visible{outline:2px solid var(--ink);outline-offset:3px}
.filter-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:14px}.filter-option{border:1px solid transparent;border-radius:9px;background:transparent;padding:7px 3px;color:var(--muted);font-size:9px;cursor:pointer}.filter-option.active{border-color:var(--orange);background:#fff;color:var(--ink)}.filter-option:focus-visible{outline:2px solid var(--ink);outline-offset:2px}.filter-preview{display:block;width:42px;height:42px;margin:0 auto 5px;border-radius:50%;background:linear-gradient(135deg,#efc2a3 0 48%,#6d8b77 49% 100%);position:relative;overflow:hidden}.filter-preview:after{content:"";position:absolute;width:18px;height:22px;border-radius:50% 50% 45% 45%;background:#9d664d;left:12px;top:8px;box-shadow:0 15px 0 6px #31352f}.filter-preview.warm{filter:sepia(.18) saturate(1.14) brightness(1.03)}.filter-preview.mono{filter:grayscale(1) contrast(1.08)}.filter-preview.cool{filter:saturate(.9) contrast(1.03) hue-rotate(8deg)}.filter-preview.vintage{filter:sepia(.35) contrast(.92) saturate(.82)}.filter-preview.vivid{filter:saturate(1.35) contrast(1.08)}.filter-preview.soft{filter:brightness(1.06) contrast(.9) saturate(.92)}
.frame-count{font-size:9px;color:var(--muted);text-transform:uppercase;letter-spacing:.08em}.frame-grid{display:grid;grid-template-columns:repeat(4,minmax(58px,1fr));gap:7px;margin-top:14px;max-height:224px;overflow-y:auto;padding:2px}.frame-option{border:1px solid transparent;background:transparent;padding:7px 3px;border-radius:9px;cursor:pointer;color:var(--muted);font-size:9px;min-width:0}.frame-option>span:last-child{display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.frame-option.active{border-color:var(--orange);background:#fff}.frame-demo{width:48px;height:48px;border-radius:8px;display:block;margin:0 auto 5px;background:#e3ddd2;overflow:hidden}.frame-demo.image{background-image:linear-gradient(45deg,#eee 25%,transparent 25%),linear-gradient(-45deg,#eee 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#eee 75%),linear-gradient(-45deg,transparent 75%,#eee 75%);background-size:10px 10px;background-position:0 0,0 5px,5px -5px,-5px 0}.frame-demo.image img{width:100%;height:100%;object-fit:cover;display:block}.frame-demo.custom{display:grid;place-items:center;border:1px dashed #a49c90;background:#f4f0e8;color:var(--orange);font-size:19px}.frame-demo.custom span{line-height:1}.frame-empty{font-size:10px;line-height:1.55;color:var(--muted);background:#f1ece3;border-radius:8px;padding:10px 12px;margin:11px 2px 0}.frame-empty code{color:var(--orange-dark)}.custom-frame-panel{margin-top:17px;padding-top:17px;border-top:1px solid var(--line)}.selected-frame{display:flex;align-items:center;justify-content:space-between;gap:12px}.selected-frame span{font-size:9px;color:var(--muted);text-transform:uppercase;letter-spacing:.07em}.selected-frame strong{font-size:11px;max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.frame-settings{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-top:13px}.frame-settings label{font-size:9px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}.frame-settings select{display:block;width:100%;margin-top:5px;padding:8px 7px;border:1px solid var(--line);border-radius:7px;background:white;color:var(--ink);font-size:10px;text-transform:none;letter-spacing:0}.frame-opacity{margin-top:15px}.remove-frame{border:0;background:transparent;color:var(--orange-dark);padding:10px 0 0;font-size:10px;text-decoration:underline;cursor:pointer}.toggle-row small{display:block;font-size:10px;color:var(--muted);margin-top:4px}.switch input{display:none}.switch span{display:block;width:37px;height:21px;border-radius:20px;background:#c9c4bb;position:relative;cursor:pointer}.switch span:after{content:"";position:absolute;width:15px;height:15px;top:3px;left:3px;border-radius:50%;background:#fff;transition:.2s}.switch input:checked+span{background:var(--orange)}.switch input:checked+span:after{left:19px}.badge-fields{display:grid;grid-template-columns:55px 1fr;gap:8px;margin-top:16px}.badge-fields.disabled{opacity:.38;pointer-events:none}.badge-fields input{border:1px solid var(--line);border-radius:8px;padding:10px;background:#fff;font-size:12px;color:var(--ink);min-width:0}.badge-fields input:first-child{text-align:center;font-size:17px}.download{width:calc(100% - 60px);margin:28px 30px 8px;padding:15px 18px;display:flex;justify-content:space-between;align-items:center}.privacy{text-align:center;color:var(--muted);font-size:10px;margin:10px 0 26px}footer{width:min(1180px,calc(100% - 40px));margin:26px auto 40px;display:flex;justify-content:space-between;color:#8e887f;font-size:10px;text-transform:uppercase;letter-spacing:.12em}.toast{position:fixed;right:24px;bottom:24px;background:var(--ink);color:#fff;padding:12px 18px;border-radius:9px;font-size:12px;transform:translateY(30px);opacity:0;pointer-events:none;transition:.25s}.toast.show{transform:none;opacity:1}
@media(max-width:820px){.site-header p{display:none}.intro{padding:44px 10px 32px}.studio{grid-template-columns:1fr}.preview-panel{border-right:0;border-bottom:1px solid var(--line);padding:25px}.controls-panel{display:grid;grid-template-columns:1fr 1fr}.control-section{padding:24px}.control-section:first-child,.control-section:last-of-type{grid-column:1/-1}.download,.privacy{grid-column:1/-1}.download{width:calc(100% - 48px);margin-left:24px}.frame-grid{grid-template-columns:repeat(5,1fr)}}
@media(max-width:540px){main{width:min(100% - 20px,1180px)}.site-header{height:64px;padding:0 18px}.intro h1{font-size:43px}.studio{border-radius:16px}.preview-panel{padding:20px 14px}.canvas-wrap{margin-top:20px}.controls-panel{display:block}.frame-grid{grid-template-columns:repeat(5,1fr)}footer{width:calc(100% - 28px)}.empty-state strong{font-size:18px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}
