.gift-controls .gift-sizes{display:inline-flex;align-items:center;gap:4px}
.gift-controls button{display:inline-grid;place-items:center;min-width:40px;min-height:40px;padding:6px}
.gift-controls svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.size-icon{display:block;border:1.6px solid currentColor;border-radius:2px}
.size-icon.small{width:9px;height:9px}.size-icon.medium{width:13px;height:13px}.size-icon.large{width:17px;height:17px}
@media(max-width:700px){#workshop .gift-controls{grid-column:2}#workshop #giftArt{grid-row:1}}
dialog.keepsake{box-sizing:border-box;width:100%;max-width:none;height:100dvh;max-height:none;margin:0;border:0;border-radius:0;padding:0;background:#fbf6ee;color:#432349}
.keepsake-shell{max-width:1270px;margin:auto;padding:clamp(16px,3vw,44px)}
.keepsake-header{display:flex;justify-content:space-between;gap:18px;align-items:flex-start;margin-bottom:21px}
.keepsake h2,.keepsake h3{font-family:'Playfair Display',Georgia,serif;color:#4b0d5c}
.keepsake h2{font-size:clamp(29px,4vw,46px);margin:0 0 7px}.keepsake h3{font-size:24px;margin:0 0 9px}.keepsake p{line-height:1.5;margin:5px 0 12px}
.keepsake button,.keepsake input,.keepsake select,.keepsake textarea{font:inherit}
.keepsake button{min-height:40px;padding:8px 13px;border:1px solid #cdb5d2;border-radius:10px;background:#fffaf5;color:#4b0d5c;cursor:pointer}
.keepsake button:disabled{opacity:.55;cursor:default}.keepsake button.ks-primary{background:#4b0d5c;color:#fffaf5;border-color:#4b0d5c}
.ks-cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:24px}
.keepsake .ks-card{padding:0;overflow:hidden;text-align:start;background:#fffaf5}
.ks-card img{display:block;aspect-ratio:3/1;width:100%;object-fit:cover}
.ks-card strong,.ks-card small{display:block;margin:8px 12px}.ks-card small{margin-top:0;color:#66506b}
.keepsake .ks-card[aria-pressed=true]{outline:2px solid #763588;outline-offset:2px}
.ks-workspace{display:grid;grid-template-columns:minmax(0,1.32fr) minmax(290px,1fr);gap:26px;align-items:start}
.ks-visual{position:sticky;top:12px;min-width:0;text-align:center}
.ks-visual canvas,.ks-gift-canvas,.keepsake video{display:block;max-width:100%;max-height:68vh;object-fit:contain;margin:0 auto;border-radius:14px;box-shadow:0 8px 25px #3c214829}
.ks-editor fieldset,.ks-editor details{margin:0 0 12px;padding:14px;border:1px solid #e2cfdf;border-radius:13px;background:#fffaf6}
.ks-editor legend,.ks-editor summary{font-weight:700;color:#4b0d5c}.ks-editor summary{cursor:pointer}
.ks-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px 12px}
.ks-fields label,.ks-block{display:grid;gap:4px;align-content:start;font-size:.9rem;min-width:0}
.ks-wide{grid-column:1/-1}
.ks-editor select,.ks-editor textarea,.ks-editor input:not([type=range],[type=checkbox],[type=file]){width:100%;box-sizing:border-box;padding:8px;border:1px solid #d6bdd7;background:#fff;color:#432349;border-radius:8px}
.ks-editor input[type=range]{width:100%;accent-color:#6a2ca0}
.ks-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:12px 0}
.ks-memories{margin-top:28px}.ks-memory{display:flex;gap:8px;align-items:center;flex-wrap:wrap;border-bottom:1px solid #e2cfdf;padding:8px 0}.ks-memory span{flex:1}
.ks-gift{max-width:700px;text-align:center;margin:36px auto}.ks-gift .ks-actions{justify-content:center}
.ks-progress{width:100%;accent-color:#6a2ca0}
@media(max-width:760px){.ks-workspace{grid-template-columns:1fr;gap:18px}.ks-visual{position:static}.ks-visual canvas{max-height:55vh}.ks-cards{grid-template-columns:repeat(2,minmax(0,1fr))}.ks-card img{aspect-ratio:4/1}}
.keepsake [hidden]{display:none!important}
.keepsake-header{position:static;width:auto;background:none;border:0;padding:0;backdrop-filter:none}
.ks-editor details .ks-fields{margin-top:10px}
.ks-visual .ks-snapshot-label{color:#66506b;font-size:.88rem;margin:0 0 10px}
.ks-gift input[type=range]{accent-color:#6a2ca0}
@media(max-width:390px){#workshop .gift-controls{grid-column:1/-1}#workshop #giftArt{grid-row:auto}}
#ksCanvasWrap{position:relative;width:fit-content;max-width:100%;margin-inline:auto;line-height:0;isolation:isolate}
#ksCanvas{touch-action:none}
#ksLayerOutline{position:absolute;box-sizing:border-box;border:1px solid #b975d1;outline:1px solid #fff9;pointer-events:none}
#ksLayerOutline.locked{border-style:dashed}
.keepsake #ksLayerHandle{position:absolute;right:0;bottom:0;width:24px;min-height:24px;padding:0;transform:translate(40%,40%);border:2px solid #fff;border-radius:50%;background:#773d8b;pointer-events:auto;touch-action:none;cursor:nwse-resize}
#ksCanvasWrap.guide-x::after,#ksCanvasWrap.guide-y::before{content:"";position:absolute;pointer-events:none;z-index:2;background:#c77ada}
#ksCanvasWrap.guide-x::after{left:50%;top:0;bottom:0;width:1px}
#ksCanvasWrap.guide-y::before{top:50%;left:0;right:0;height:1px}
#ksFitWarning{font-size:.85rem;color:#762747}
#ksFitWarning:empty{display:none}
#ksLayerSettings label{display:grid;gap:4px}
#ksLayerSettings input[type=color],#ksPaper{width:100%;height:40px;padding:4px}
#ksLayerSettings>div{margin-top:10px}
#ksQuranResults{max-height:240px;overflow:auto;display:grid;gap:5px}
#ksQuranResults button{text-align:start}
#ksQuranPreview{margin-block:10px}
#ksQuranPreview p{white-space:pre-line;overflow-wrap:anywhere}
.ks-verse-arabic{font:1.45rem/1.85 "Noto Naskh Arabic","Times New Roman",serif}
@media(max-width:760px){
  #ksLayers .ks-actions:first-of-type{padding-bottom:4px}
  #ksLayers button{min-height:44px}
  .keepsake #ksLayerHandle{width:32px;min-height:32px}
}
@font-face{font-family:"Noto Naskh Arabic";src:url("fonts/noto-naskh-arabic.ttf") format("truetype");font-display:swap;font-weight:400 700}
#ksMobileToolbar{display:none}
@media(max-width:760px){
  #ksMobileToolbar{display:flex;justify-content:center;gap:8px;position:sticky;bottom:0;z-index:4;padding:8px;background:#fbf6eef2;border-top:1px solid #dcc4db;margin-top:10px}
}
