@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600&family=Parisienne&family=Playfair+Display:wght@400;500;600&family=VT323&display=swap');
:root{--wine:#641411;--wine-dark:#4d0d0c;--cream:#f6e3d3;--paper:#fff7ef;--pink:#d99b9c;--ink:#5b1715;--muted:#a55f5c;--screen:#101116;--shadow:0 18px 45px rgba(70,12,10,.18)}*{box-sizing:border-box}html,body{margin:0;min-height:100%;font-family:'DM Sans',sans-serif;background:var(--screen);color:var(--ink)}button,input,textarea{font:inherit}button{cursor:pointer}.script{font-family:'Parisienne',cursive}.serif{font-family:'Playfair Display',serif}.pixel{font-family:'VT323',monospace}.app{min-height:100vh;background:var(--cream)}
/* landing */.landing-wrap{min-height:100vh;display:grid;place-items:center;background:var(--screen)}.landing{width:min(608px,100vw);min-height:100vh;background:var(--cream);color:var(--wine);display:flex;flex-direction:column;align-items:center;justify-content:center;position:relative;padding:50px 38px;text-align:center}.landing .reasons{width:78%;display:flex;justify-content:space-between;font-size:17px;color:#b86e6c;margin-bottom:8px}.seal-logo{width:min(330px,74vw);aspect-ratio:1;position:relative;display:grid;place-items:center}.seal-logo img{width:100%;height:100%;object-fit:contain;opacity:.30;mix-blend-mode:multiply}.seal-logo .word{position:absolute;font-size:clamp(58px,11vw,92px);white-space:nowrap;color:var(--wine);line-height:1}.landing-actions{margin-top:8px;display:grid;gap:8px;justify-items:center}.landing-actions a{text-decoration:none;color:inherit}.landing-actions .primary{font-family:'VT323';font-size:28px;text-transform:uppercase;line-height:1}.landing-actions .sub{font-size:18px;font-style:italic;color:#a55451}.landing-actions .choice-row{display:flex;gap:10px;flex-wrap:wrap;justify-content:center;margin-top:14px}.choice{border:1px solid rgba(100,20,17,.35);background:transparent;color:inherit;padding:10px 14px;border-radius:999px;font-size:12px;text-transform:uppercase;letter-spacing:.08em}.choice:hover{background:rgba(100,20,17,.08)}
@media(prefers-color-scheme:dark){.landing{background:var(--wine);color:var(--cream)}.landing .reasons{color:#e5aaa7}.seal-logo img{opacity:.48;mix-blend-mode:screen}.seal-logo .word{color:var(--cream)}.landing-actions .sub{color:#e7aaa8}.choice{border-color:rgba(246,227,211,.38);color:var(--cream)}.choice:hover{background:rgba(246,227,211,.08)}}
/* shared chrome */.topbar{height:68px;background:var(--wine);color:var(--cream);display:flex;align-items:center;justify-content:space-between;padding:0 24px;position:sticky;top:0;z-index:50}.brand{color:inherit;text-decoration:none;font-family:'Parisienne';font-size:30px}.topbar nav{display:flex;gap:18px}.topbar nav a{color:inherit;text-decoration:none;font-size:11px;text-transform:uppercase;letter-spacing:.09em}.page-shell{min-height:calc(100vh - 68px);background:var(--cream);padding:32px 20px 55px}.narrow{width:min(760px,100%);margin:auto}.page-title{text-align:center;margin-bottom:25px}.page-title .kicker{font-size:10px;text-transform:uppercase;letter-spacing:.16em;color:var(--muted)}.page-title h1{font-family:'Playfair Display';font-size:clamp(34px,6vw,54px);font-weight:500;margin:7px 0;color:var(--wine)}.page-title p{margin:0 auto;color:#80504e;max-width:540px;font-family:'Playfair Display';font-style:italic}.btn{border:0;border-radius:999px;padding:12px 18px;background:var(--wine);color:var(--cream);font-size:11px;text-transform:uppercase;letter-spacing:.09em}.btn.secondary{background:transparent;color:var(--wine);border:1px solid rgba(100,20,17,.35)}.btn:disabled{opacity:.45;cursor:not-allowed}.toast{position:fixed;left:50%;bottom:24px;transform:translate(-50%,15px);background:var(--wine-dark);color:var(--cream);padding:11px 16px;border-radius:999px;font-size:11px;letter-spacing:.05em;opacity:0;pointer-events:none;transition:.2s;z-index:100}.toast.show{opacity:1;transform:translate(-50%,0)}
/* voice */.voice-card{background:var(--paper);border:1px solid rgba(100,20,17,.12);box-shadow:var(--shadow);padding:28px;border-radius:22px}.voice-recorder{display:grid;justify-items:center;padding:18px 0 24px}.record-orb{width:126px;height:126px;border-radius:50%;border:1px solid var(--wine);background:#f7d8cf;color:var(--wine);display:grid;place-items:center;position:relative}.record-orb.recording{animation:pulse 1.4s infinite;background:#d89091}.record-orb .mic{font-size:32px}.record-orb span{font-size:10px;text-transform:uppercase;letter-spacing:.08em}@keyframes pulse{50%{box-shadow:0 0 0 14px rgba(100,20,17,.09)}}.timer{font-family:'VT323';font-size:27px;margin-top:12px}.wave{height:44px;display:flex;gap:4px;align-items:center;justify-content:center}.wave i{width:3px;height:12px;background:var(--wine);border-radius:5px}.recording+.timer+.wave i{animation:wave .7s infinite alternate}.wave i:nth-child(2n){animation-delay:.15s}.wave i:nth-child(3n){animation-delay:.3s}@keyframes wave{to{height:34px}}audio{width:100%;margin:12px 0}.note-wrap{margin-top:12px}.note-wrap label{display:flex;justify-content:space-between;font-size:10px;text-transform:uppercase;letter-spacing:.09em;margin-bottom:8px}.note-wrap textarea{width:100%;min-height:150px;border:1px solid rgba(100,20,17,.2);background:#fffaf5;padding:15px;resize:vertical;color:var(--ink);border-radius:12px;outline:none}.share-row{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin-top:20px}.voice-gift{min-height:calc(100vh - 68px);display:grid;place-items:center;background:var(--wine);padding:25px}.voice-gift .voice-card{width:min(560px,100%);text-align:center}.gift-note{font-family:'Playfair Display';font-size:20px;line-height:1.5;white-space:pre-wrap}
/* templates */.template-grid{width:min(920px,100%);margin:25px auto 0;display:grid;grid-template-columns:repeat(2,1fr);gap:18px}.template-option{border:0;background:#fff7ef;padding:12px 12px 18px;box-shadow:var(--shadow);color:var(--wine);text-align:left;border-radius:18px}.template-option img{width:100%;aspect-ratio:9/16;object-fit:cover;border-radius:12px;display:block}.template-option h3{font-family:'Playfair Display';font-weight:500;font-size:22px;margin:12px 4px 2px}.template-option p{font-size:12px;color:#8b5a57;margin:0 4px}.template-option:hover{transform:translateY(-3px)}
/* editor */.editor-page{background:var(--wine);min-height:calc(100vh - 68px);padding:20px}.editor-layout{width:min(1180px,100%);margin:auto;display:grid;grid-template-columns:250px minmax(300px,540px) 210px;gap:16px;align-items:start;justify-content:center}.sidebar,.controls{background:var(--cream);padding:15px;border-radius:16px;max-height:calc(100vh - 108px);overflow:auto}.sidebar h3,.controls h3{font-family:'Playfair Display';font-weight:500;margin:0 0 12px;font-size:20px}.icon-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}.icon-btn{border:1px solid rgba(100,20,17,.13);background:#fff8f1;border-radius:10px;aspect-ratio:1;display:grid;place-items:center;padding:5px}.icon-btn img{max-width:100%;max-height:100%;object-fit:contain}.tool-section{border-top:1px solid rgba(100,20,17,.13);margin-top:15px;padding-top:15px}.upload{display:block;border:1px dashed rgba(100,20,17,.35);border-radius:10px;padding:10px;text-align:center;font-size:10px;text-transform:uppercase;letter-spacing:.06em;margin-bottom:8px;cursor:pointer}.upload input{display:none}.canvas-wrap{display:grid;place-items:center}.canvas{width:min(100%,500px);aspect-ratio:9/16;background:#fff;position:relative;overflow:hidden;box-shadow:0 20px 60px rgba(0,0,0,.28);touch-action:none}.canvas-bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;pointer-events:none}.element{position:absolute;left:20%;top:20%;width:24%;touch-action:none;cursor:grab;transform-origin:center;user-select:none}.element img{width:100%;display:block;pointer-events:none}.element.text-el{width:45%;min-height:42px;padding:8px;background:rgba(255,248,240,.85);font-family:'Playfair Display';font-size:16px;white-space:pre-wrap;overflow-wrap:anywhere}.element.selected{outline:1px dashed #fff;box-shadow:0 0 0 2px var(--wine)}.photo-strip{position:absolute;left:55%;top:12%;width:31%;background:#fff;padding:5px 5px 12px;transform:rotate(8deg);box-shadow:0 8px 20px rgba(0,0,0,.18)}.photo-strip .slot{aspect-ratio:1.2;background:#171717;margin-bottom:5px;overflow:hidden}.photo-strip .slot img{width:100%;height:100%;object-fit:cover}.control-label{font-size:9px;text-transform:uppercase;letter-spacing:.08em;margin:10px 0 5px}.controls input[type=range]{width:100%}.controls textarea{width:100%;min-height:95px;border:1px solid rgba(100,20,17,.18);background:#fff9f3;padding:9px;border-radius:9px}.controls .btn{width:100%;margin-top:8px}.mobile-tools{display:none}
/* gift */.gift-view{min-height:100vh;background:var(--wine);display:grid;place-items:center;padding:24px}.gift-view .canvas{width:min(500px,100%)}.gift-back{position:fixed;top:15px;left:15px;color:var(--cream);text-decoration:none;font-size:11px;text-transform:uppercase;letter-spacing:.08em}
@media(max-width:850px){.topbar nav{display:none}.template-grid{grid-template-columns:repeat(2,1fr)}.editor-page{padding:10px}.editor-layout{grid-template-columns:1fr;max-width:540px}.sidebar,.controls{max-height:none}.sidebar{order:2}.controls{order:3}.canvas-wrap{order:1}.icon-grid{grid-template-columns:repeat(6,1fr)}.mobile-tools{display:block}.canvas{width:min(100%,430px)}}
@media(max-width:520px){.landing{padding:35px 18px}.landing .reasons{width:92%;font-size:14px}.landing-actions .choice-row{flex-direction:column;width:100%}.choice{width:100%}.page-shell{padding:25px 13px 45px}.template-grid{gap:10px}.template-option{padding:7px 7px 12px;border-radius:12px}.template-option h3{font-size:17px}.template-option p{font-size:10px}.voice-card{padding:19px}.icon-grid{grid-template-columns:repeat(5,1fr)}.editor-page{padding:8px}.sidebar,.controls{border-radius:12px}.topbar{height:58px;padding:0 15px}.brand{font-size:26px}.editor-page{min-height:calc(100vh - 58px)}}

.sidebar-help{font-size:11px;line-height:1.45;color:#8b5a57;margin:-5px 0 12px}.icon-btn{cursor:pointer;min-height:64px}.icon-btn:hover{transform:translateY(-2px);box-shadow:0 4px 12px rgba(100,20,17,.12)}.canvas-bg{z-index:0}.element,.photo-strip{z-index:2}
/* v4: Canva-style element tray */
.sidebar{min-width:0}.icon-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:9px}.icon-btn{position:relative;overflow:hidden;background:#f8e7dc;border:1px solid rgba(100,20,17,.18);min-height:76px;transition:.16s ease}.icon-btn img{width:100%;height:100%;max-width:72px;max-height:72px;object-fit:contain}.icon-btn:active{transform:scale(.96)}
@media(max-width:850px){.icon-grid{grid-template-columns:repeat(5,minmax(0,1fr));}.icon-btn{min-height:68px}}
@media(max-width:520px){.icon-grid{grid-template-columns:repeat(4,minmax(0,1fr));}.icon-btn{min-height:66px}}
/* v5 — direct manipulation canvas */
.element{box-sizing:border-box;z-index:2}.element.selected{outline:2px solid #fff;box-shadow:0 0 0 3px var(--wine)}
.resize-handle,.rotate-handle{display:none;position:absolute;width:18px;height:18px;border-radius:50%;border:2px solid #fff;background:var(--wine);z-index:20;padding:0;touch-action:none}
.element.selected .resize-handle,.element.selected .rotate-handle{display:block}.resize-handle{right:-10px;bottom:-10px;cursor:nwse-resize}.rotate-handle{left:50%;top:-29px;transform:translateX(-50%);cursor:grab}.rotate-handle:after{content:'';position:absolute;width:1px;height:10px;background:#fff;left:50%;top:16px}
.photo-el{background:#fff;padding:5px 5px 13px;box-shadow:0 7px 20px rgba(0,0,0,.2)}.photo-el>img{aspect-ratio:1.05;object-fit:cover}
.text-el{background:rgba(255,248,240,.9);padding:7px}.text-content{min-height:30px;outline:none;cursor:text;white-space:pre-wrap;overflow-wrap:anywhere}.text-content:focus{background:rgba(255,255,255,.35)}
.icon-btn.added{animation:elementPop .2s ease}@keyframes elementPop{50%{transform:scale(.9)}}
@media(max-width:850px){.sidebar{overflow:visible}.controls{overflow:visible}.resize-handle,.rotate-handle{width:22px;height:22px}.resize-handle{right:-12px;bottom:-12px}.rotate-handle{top:-34px}}

/* V6 landing: full-screen reference treatment */
.landing-wrap{min-height:100vh;width:100%;background:#65110f;display:grid;place-items:center}
.landing{width:100%;min-height:100vh;background:#65110f;color:#f6e3d3;padding:48px 24px;justify-content:center;overflow:hidden}
.landing .reasons{width:min(440px,82vw);color:#e5aaa7;margin-bottom:6px}
.seal-logo{width:min(390px,78vw)}
.seal-logo img{opacity:.48;mix-blend-mode:screen}
.seal-logo .word{color:#f6e3d3}
.landing-actions{margin-top:18px;width:min(440px,82vw)}
.landing-actions .choice-row{display:flex;gap:12px;justify-content:center;margin-top:0}
.choice{border:1px solid rgba(246,227,211,.42);color:#f6e3d3;background:transparent;padding:11px 16px}
.choice:hover{background:rgba(246,227,211,.10)}
@media(max-width:520px){.landing{padding:32px 18px}.landing-actions{width:88vw}.landing-actions .choice-row{flex-direction:column}.choice{width:100%}}
/* Keep the full tin visible inside its 9:16 design canvas. */
body[data-template="tin"] .canvas{background:#f3e5d7}
body[data-template="tin"] .canvas-bg{object-fit:contain;object-position:center}
\n/* V10 phone interaction fixes */\na,button,label,.icon-btn,.template-option,.upload{touch-action:manipulation;-webkit-tap-highlight-color:transparent}\n@media(max-width:850px){\n  html,body{overflow-x:hidden}\n  .editor-page{padding:8px 8px 28px}\n  .editor-layout{display:flex;flex-direction:column;width:100%;max-width:540px;gap:10px}\n  .canvas-wrap{order:1;width:100%;position:relative}\n  .canvas{width:min(100%,430px);max-height:none}\n  .sidebar{order:2;width:100%;max-height:none;overflow:visible}\n  .controls{order:3;width:100%;max-height:none;overflow:visible}\n  .icon-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}\n  .icon-btn{min-height:70px}\n  .element{cursor:grab;-webkit-user-select:none;user-select:none}\n  .element.text-el,.text-content{-webkit-user-select:text;user-select:text}\n  input[type=range]{min-height:38px}\n  .btn,.upload{min-height:44px}\n}\n@media(max-width:430px){\n  .topbar{height:54px}\n  .editor-page{min-height:calc(100dvh - 54px);padding:6px 6px 24px}\n  .canvas{width:100%}\n  .sidebar,.controls{padding:13px;border-radius:12px}\n  .icon-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}\n  .icon-btn{min-height:62px;padding:4px}\n  .icon-btn img{max-width:58px;max-height:58px}\n  .template-grid{grid-template-columns:1fr 1fr}\n}\n