:root{--ink:#403832;--muted:#93877e;--pink:#c88991;--line:#eae0da;--paper:#f9f5f1;--serif:'Cormorant Garamond',Georgia,serif}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-family:'DM Sans',sans-serif;font-size:12px}button,a,input,textarea{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer;border:0;background:none}button,a{touch-action:manipulation}button:focus-visible,a:focus-visible,textarea:focus-visible{outline:2px solid #98636a;outline-offset:4px}button{transition:background .2s,transform .2s}button:hover{background:#efdfe0}a{color:inherit;text-decoration:none}h1,h2,h3,p{margin:0}h1,h2,h3{font-family:var(--serif);font-weight:500}h1{font-size:30px}h2{font-size:29px}h3{font-size:22px}.header{height:88px;padding:0 35px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);background:#fcf8f5}.brand{display:flex;align-items:center;gap:15px;font-family:var(--serif);font-size:44px;letter-spacing:5px;line-height:.95}.brand-flower{color:#b58089;font-size:45px;letter-spacing:0}.brand small{display:block;font:8px 'DM Sans',sans-serif;letter-spacing:2.5px;margin-top:9px}.header nav{display:flex;align-items:center;gap:32px;font-family:var(--serif);font-size:19px}.header nav a{padding:12px 15px}.header nav [aria-current]{background:#f5e6e6;border-radius:3px}.header-actions{display:flex;gap:18px;font-size:27px}.header-actions button{position:relative}#bag-count{position:absolute;font-size:9px;top:0;right:-5px;background:#c98f96;color:white;border-radius:20px;padding:1px 4px}.workbench{display:grid;grid-template-columns:120px minmax(280px,1fr) minmax(380px,1.5fr) minmax(290px,.95fr);min-height:calc(100vh - 88px);max-width:1800px;margin:auto}.categories{padding:24px 9px;position:relative;background:linear-gradient(#f8f0ed,#f6eeea)}.categories button{width:100%;display:flex;align-items:center;gap:11px;padding:16px 10px;border-radius:4px;font-family:var(--serif);font-size:17px;margin-bottom:6px}.categories button span{font-size:26px;width:26px}.categories [aria-pressed=true]{background:#f1d9da;color:#996770}.rail-note{margin-top:160px;font-family:'La Belle Aurore',cursive;text-align:center;color:#ac8d83;font-size:18px;line-height:1.5}.rail-note span{display:block;font-size:80px;color:#dfc6bf;margin-top:30px}.catalog{padding:25px 20px;border-right:1px solid #eee4de}.intro{color:#8c7e75;font-size:12px;line-height:1.8;margin:5px 0 18px}.material-tabs{display:flex;gap:7px;border-bottom:1px solid var(--line);padding-bottom:16px}.material-tabs button{padding:8px 13px;border:1px solid #eee5de;border-radius:5px;font-size:11px;flex:1;white-space:nowrap}.material-tabs [aria-pressed=true]{background:#d9a8ad;color:white;border-color:#d9a8ad}.catalog-group{margin-top:20px}.catalog-group h3{font-size:23px;margin-bottom:10px}.flower-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:15px 11px}.flower-card{position:relative;min-width:0}.flower-image{display:block;width:100%;height:108px;border-radius:8px;background:#eee7df;overflow:hidden;position:relative}.flower-image .sprite{position:absolute;width:100%;height:145%;top:7%;left:0}.sprite{background-image:url('assets/flowers/stems.png');background-size:400% 300%;background-repeat:no-repeat;pointer-events:none}.flower-name{font-family:var(--serif);font-weight:600;font-size:16px;margin-top:5px;display:block;white-space:nowrap}.flower-price{display:block;margin-top:3px;font-size:11px}.add-flower{position:absolute;bottom:-2px;right:0;border-radius:50%;background:#f2dfe0;width:27px;height:27px;font-size:20px;color:#aa757b}.catalog-note{text-align:center;margin:24px 0;color:var(--muted);font-family:var(--serif);font-style:italic;font-size:16px}.preview{position:relative;background:radial-gradient(ellipse at 48% 45%,#f1e1dc 0%,#f7eeea 57%,#f8f1ed 100%);padding:27px 24px 18px;overflow:hidden}.preview-heading{display:flex;align-items:center;justify-content:space-between;gap:10px}.eyebrow{font-size:8px;letter-spacing:2px;color:#a28b7f;display:block;margin-bottom:7px}.preview-heading h2{font-size:34px;white-space:nowrap}.view-toggle{display:flex;background:#fff9f4;border:1px solid #f0e6de;padding:4px;border-radius:25px;box-shadow:0 3px 10px #aa8a7910}.view-toggle button{padding:7px 10px;border-radius:20px;font-size:10px}.view-toggle [aria-pressed=true]{background:#d29aa0;color:white}.handwritten{font-family:'La Belle Aurore',cursive;font-weight:400}.subtitle{font-size:21px;color:#89776d;margin-top:4px;white-space:nowrap}.stage{height:610px;position:relative;margin:3px -20px 0}.arrangement{position:absolute;width:440px;height:590px;left:50%;top:10px;margin-left:-220px;transform:scale(var(--zoom,1));transform-origin:50% 60%;transition:transform .4s;--wrap:#e6bac0;--ribbon:#d099a4}.paper{position:absolute;filter:drop-shadow(0 5px 6px #8b68501c)}.paper-back{inset:58px 22px 45px;background:linear-gradient(115deg,#e7d9c8,#fffaf0 40%,#dfcab9);clip-path:polygon(4% 28%,19% 4%,42% 13%,64% 0,78% 13%,100% 30%,69% 72%,62% 100%,33% 98%,29% 72%);transform:rotate(-5deg)}.paper-side{inset:95px 26px 48px;background:linear-gradient(110deg,#fff6ee,var(--wrap) 55%,#f9eee8);clip-path:polygon(0 20%,30% 3%,50% 20%,78% 0,100% 24%,65% 78%,60% 100%,32% 97%);opacity:.8}.paper-front{inset:310px 30px 30px;background:linear-gradient(115deg,#f5e3d8 5%,var(--wrap) 30%,#fbece4 49%,var(--wrap) 65%,#ead3c4);clip-path:polygon(0 0,45% 32%,55% 34%,100% 0,66% 61%,72% 100%,23% 96%,33% 60%);opacity:.95}.stem{position:absolute;width:132px;height:330px;left:154px;top:75px;transform-origin:50% 93%;filter:drop-shadow(1px 3px 2px #51422a18);transform:translate(var(--x),var(--y)) rotate(var(--angle));animation:appear .4s ease-out}.stem .sprite{width:100%;height:100%}.ribbon{position:absolute;top:421px;left:204px;width:35px;height:32px;z-index:3;filter:drop-shadow(0 3px 3px #85576729)}.ribbon i{position:absolute;width:111px;height:61px;border:1px solid #fff7;background:linear-gradient(25deg,var(--ribbon),#fff7,var(--ribbon));border-radius:70% 25% 50% 30%;left:-96px;top:-26px;transform:rotate(20deg)}.ribbon i+i{left:22px;transform:scaleX(-1) rotate(20deg)}.ribbon b{position:absolute;inset:0;background:linear-gradient(100deg,var(--ribbon),#fff8,var(--ribbon));border-radius:8px;transform:rotate(-12deg)}.ribbon span{position:absolute;top:20px;left:-28px;width:40px;height:115px;background:linear-gradient(90deg,var(--ribbon),#fff5,var(--ribbon));clip-path:polygon(0 0,100% 0,90% 100%,50% 86%,10% 98%);transform:rotate(24deg)}.ribbon span+span{left:25px;transform:rotate(-25deg)}.gift-tag{position:absolute;top:463px;left:245px;width:70px;height:87px;background:#fff8ed;transform:rotate(-17deg);box-shadow:2px 3px 8px #947d7320;text-align:center;padding-top:9px;color:#bd9493;font-size:23px}.gift-tag strong{display:block;font-family:var(--serif);font-size:22px;letter-spacing:2px;color:#937d70;font-weight:400}.gift-tag small{font-size:6px;letter-spacing:.5px;display:block;color:#a08e81}.stage-tools{position:absolute;right:13px;bottom:65px;display:grid;gap:14px}.stage-tools button{font-size:25px;background:#fff8f1a8;border-radius:50%;width:37px;height:37px;position:relative;margin-bottom:12px}.stage-tools small{position:absolute;font-size:9px;bottom:-15px;left:50%;transform:translateX(-50%);white-space:nowrap}.stage-caption{text-align:center;font-size:23px;color:#8c766a;margin-top:-10px}.inspirations{margin:20px auto 0;max-width:420px;text-align:center}.inspirations>div{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:12px}.inspirations button{border:1px solid #e9dcd4;border-radius:9px;background:#fbf6f0;padding:10px 5px;font-family:var(--serif);font-size:16px}.inspirations [aria-pressed=true]{border-color:#bf8b92;box-shadow:0 0 0 1px #bf8b92}.preset-colors{display:block;width:57px;height:25px;border-radius:30px;margin:0 auto 8px;background:linear-gradient(90deg,#dca2b1 0 33%,#b3bda2 33% 66%,#c4b2d2 66%)}.sunshine{background:linear-gradient(90deg,#e0ba58 0 33%,#f5e5cb 33% 66%,#a7b289 66%)}.meadow{background:linear-gradient(90deg,#b6a0c7 0 33%,#f5e7cd 33% 66%,#90a58b 66%)}.preview-note{text-align:center;font-size:9px;color:#ad988c;margin-top:18px}.details{padding:25px 20px;background:#fcf8f4}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:8px}.section-heading h2{font-size:27px}.section-heading button{color:#998a81;font-size:11px}#selection{margin-top:8px;min-height:290px;max-height:355px;overflow:auto}.selected-row{display:flex;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid #f0e8e1}.mini-image{height:47px;width:43px;flex-shrink:0;background-color:#f3eee7;border-radius:4px}.selected-info{flex:1}.selected-info strong{display:block;font:500 17px var(--serif)}.selected-info small{color:#9a8c80;font-size:10px;display:block;margin-top:4px}.quantity{display:flex;align-items:center;gap:5px;background:#f7f0eb;border-radius:5px}.quantity button{width:23px;height:28px;font-size:17px}.quantity output{min-width:14px;text-align:center;font-size:12px}.remove{font-size:18px;color:#a29488;padding:2px}.finishes{margin-top:24px}.muted{font:10px 'DM Sans',sans-serif;color:#9d8f84}.swatches{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-top:12px;scroll-margin-top:20px}.swatch{padding:0;font-size:9px;line-height:1.5}.swatch-art{height:66px;border:1px solid transparent;border-radius:8px;background:#f0e9e3;display:flex;align-items:center;justify-content:center;margin-bottom:5px}.swatch[aria-pressed=true] .swatch-art{border-color:#c68c95;box-shadow:0 0 0 2px #ebcbd150}.wrap-sample{display:block;width:38px;height:48px;background:linear-gradient(100deg,#fff8,var(--color),#0002);clip-path:polygon(0 0,100% 6%,70% 75%,78% 100%,25% 100%,31% 75%);filter:drop-shadow(2px 4px 2px #0002)}.ribbon-sample{font-size:46px;color:var(--color);text-shadow:1px 2px 2px #0002;line-height:1}.message-section{margin-top:25px}.message-preview{display:flex;justify-content:space-between;align-items:center;gap:15px;border:1px solid #eee5de;padding:13px;margin-top:10px;border-radius:6px}.message-preview p{font-size:16px;line-height:1.4;white-space:pre-wrap;overflow-wrap:anywhere}.message-preview button{font:13px var(--serif);border:1px solid var(--line);padding:10px;white-space:nowrap;border-radius:6px}.checkout{border-top:1px solid var(--line);margin-top:25px;padding-top:18px}.total{display:flex;justify-content:space-between;font:21px var(--serif)}.total strong{font-weight:600;font-size:29px}.price-note{font-size:9px;color:#a69386;margin:4px 0 14px}.primary,.secondary{width:100%;padding:13px 20px;border-radius:30px;font-size:13px}.primary{background:#c88e96;color:#fffaf8}.primary:hover{background:#b57c85}.primary span{float:right}.secondary{border:1px solid #d8c8bf;margin-top:9px}.primary:disabled{opacity:.45;cursor:not-allowed}#status{font-size:10px;color:#a18b7c;line-height:1.6;text-align:center;min-height:32px;margin-top:11px}dialog{border:1px solid #e7d8cd;border-radius:14px;padding:32px;background:#fcf8f3;color:var(--ink);width:min(460px,90vw);box-shadow:0 20px 100px #40302033}dialog::backdrop{background:#49372f55;backdrop-filter:blur(5px)}dialog h2{margin:12px 0 20px}dialog label{display:block;color:#8a7b6e;margin-bottom:10px}dialog textarea{width:100%;padding:12px;background:#fffaf5;border:1px solid #decec3;border-radius:5px;font:18px var(--serif);margin-bottom:20px}.dialog-close{position:absolute;top:10px;right:14px;font-size:24px}.workshop-link{display:block;text-align:center;margin-top:20px}.bag-item{border-bottom:1px solid var(--line);padding:14px 0;line-height:1.8;margin-bottom:12px}.bag-item button{float:right;color:#a46d76}.bag-item strong{font:22px var(--serif)}#empty-stage{position:absolute;top:45%;width:100%;text-align:center;font:italic 22px var(--serif);color:#9b8175}#preview-list{padding:40px 15px;min-height:610px}#preview-list li{padding:14px;border-bottom:1px solid var(--line);font:21px var(--serif)}[hidden]{display:none!important}@keyframes appear{from{opacity:0}to{opacity:1}}@media(min-width:1600px){.flower-image{height:135px}.stage{height:655px}.arrangement{top:25px;scale:1.08}.preview-heading h2{font-size:39px}}@media(max-width:1250px){.workbench{grid-template-columns:85px minmax(245px,1fr) minmax(340px,1.3fr) 280px}.categories button{flex-direction:column;gap:4px;font-size:14px}.catalog,.details{padding:24px 14px}.preview{padding:25px 18px}.preview-heading h2{font-size:28px}.subtitle{font-size:17px}.flower-image{height:90px}.flower-name{font-size:14px}.header nav{gap:5px}.arrangement{scale:.9;transform-origin:50% 30%}.stage{height:570px}.swatch-art{height:58px}.selected-row{gap:6px}.selected-info strong{font-size:15px}.mini-image{width:35px}.quantity{gap:1px}}@media(max-width:1020px){.workbench{grid-template-columns:80px 270px 1fr}.details{grid-column:2/4;display:grid;grid-template-columns:1fr 1fr;gap:15px 30px}.details>.section-heading{grid-column:1}.details>#selection{grid-column:1;grid-row:2/4;max-height:400px}.finishes{grid-column:2;grid-row:1/3;margin:0}.message-section{grid-column:2;margin:0}.checkout{grid-column:1/3}.header{padding:0 20px}.header nav{font-size:16px}.header nav a{padding:10px}.header nav a:first-child,.header nav a:last-child{display:none}.rail-note{margin-top:240px}}@media(max-width:700px){.header{height:72px;padding:0 15px}.brand{font-size:33px;gap:6px;letter-spacing:3px}.brand small{font-size:6px;letter-spacing:1.5px}.brand-flower{font-size:31px}.header nav{gap:0;font-size:15px}.header nav a{padding:8px}.header nav a:nth-last-child(2){display:none}.header-actions{gap:8px;font-size:24px}.workbench{display:flex;flex-direction:column}.categories{display:flex;order:1;padding:8px 10px;position:sticky;top:0;z-index:5;border-bottom:1px solid var(--line)}.categories button{flex-direction:row;justify-content:center;font-size:12px;padding:8px 4px;margin:0;gap:5px}.categories button span{font-size:19px;width:auto}.rail-note{display:none}.preview{order:0;padding:20px 20px 15px}.preview-heading h2{font-size:30px}.subtitle{font-size:18px}.stage{height:455px}.arrangement{top:-14px;scale:.76;transform-origin:50% 10%}.stage-tools{right:20px;bottom:40px}.stage-caption{font-size:21px}.inspirations{margin-top:12px}.inspirations>div{gap:9px;margin-top:7px}.inspirations button{padding:7px;font-size:14px}.preset-colors{height:14px;margin-bottom:5px}.preview-note{margin-top:13px}.catalog{order:2;padding:20px;border-right:0}.intro br{display:none}.flower-grid{grid-template-columns:repeat(3,1fr);gap:16px}.flower-image{height:130px}.flower-name{font-size:18px}.add-flower{width:32px;height:32px}.details{order:3;display:block;padding:24px 20px}.details>#selection{max-height:none;min-height:70px}.finishes,.message-section{margin-top:24px}.swatch-art{height:80px}.swatch{font-size:11px}.mini-image{width:48px;height:58px}.selected-info strong{font-size:20px}.quantity button{width:35px;height:35px}.quantity output{width:22px}.selected-row{gap:12px}.swatches{gap:12px}#preview-list{min-height:455px}.checkout{margin-top:24px}.primary,.secondary{padding:15px}.preview-heading .eyebrow{font-size:7px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
.ribbon-sample{font-size:0;width:48px;height:32px;position:relative}.ribbon-sample:before,.ribbon-sample:after{content:'';position:absolute;top:6px;width:25px;height:20px;background:linear-gradient(25deg,var(--color),#fff8,var(--color));border:1px solid #ffffff70;border-radius:60% 25% 45% 30%;transform:rotate(20deg);left:0}.ribbon-sample:after{left:23px;transform:scaleX(-1) rotate(20deg)}

/* Bouquet crown: independently placed flowers, gathered at a shared binding. */
#stems{position:absolute;inset:0;z-index:1;isolation:isolate}
.stem{left:var(--head-x);top:var(--head-y);width:var(--width);height:var(--height);transform-origin:50% 20%;transform:translate(-50%,-20%) rotate(var(--angle));transition:transform .65s ease,left .65s ease,top .65s ease,width .65s ease,height .65s ease}
.paper-front{z-index:2}.gift-tag{z-index:4}
.stage-tools{z-index:5}.stage-tools button:disabled{opacity:.35;cursor:default}
@media(prefers-reduced-motion:reduce){.stem{transition:none}}

.stem{pointer-events:none}.stem-handle{position:absolute;left:15%;top:4%;width:70%;height:32%;border-radius:50%;pointer-events:auto;touch-action:none;cursor:grab;padding:0;border:1px solid transparent}
.stem-handle:hover{background:#fff3;border-color:#fff9}.stem-handle:focus-visible{outline:2px solid #98636a;outline-offset:3px}
.stem.is-selected{filter:drop-shadow(0 0 4px #b87586aa)}.stem.is-selected .stem-handle{border:1px dashed #98636a;background:#fff1}
.stem.is-dragging{transition:none}.stem.is-dragging .stem-handle{cursor:grabbing}
.arrange-help{text-align:center;color:#90796e;font-size:10px;margin:16px 0 0;line-height:1.5}

/* Move fixed-size artwork around the flower head; extend only the stem to the tie. */
.stem::before{content:'';position:absolute;left:calc(50% - 2px);top:20%;width:4px;height:var(--stem-length);background:linear-gradient(90deg,#667344,#a3aa70,#73814b);border-radius:2px;z-index:-1;pointer-events:none}
.stem .sprite{clip-path:polygon(0 0,100% 0,100% min(100%,calc(20% + var(--stem-length))),0 min(100%,calc(20% + var(--stem-length))))}

.stem-tools{position:absolute;left:14px;top:72px;z-index:6;width:82px;padding:12px 6px;background:#fffaf4ed;border:1px solid #eadfd5;border-radius:15px;box-shadow:0 6px 22px #7559490d;display:grid;gap:5px;text-align:center;backdrop-filter:blur(8px)}
.stem-tools-title{font-size:7px;letter-spacing:1.2px;color:#a58b7c}.stem-tools strong{font:500 14px var(--serif);min-height:34px;display:flex;align-items:center;justify-content:center;line-height:1.15}
.stem-tools button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-height:48px;border-radius:8px;font-size:10px}.stem-tools button span{font-size:22px;line-height:1}.stem-tools button:disabled{opacity:.32;cursor:default;background:none}.stem-tools-divider{height:1px;background:var(--line);margin:2px 10px}
@media(max-width:700px){.stem-tools{left:8px;top:40px;width:62px;padding:9px 4px;gap:3px;border-radius:12px}.stem-tools-title{font-size:6px;letter-spacing:.6px}.stem-tools strong{font-size:12px}.stem-tools button{font-size:9px;min-height:44px}}
