:root{font-family:system-ui,sans-serif;color:#243c36;background:#f4f3ec}*{box-sizing:border-box}body{margin:0}header{background:#234b40;color:white;padding:44px max(5vw,20px)}header>p:first-child{font-size:11px;letter-spacing:.2em}h1{font-family:Georgia,serif;font-size:clamp(32px,5vw,58px);font-weight:400;margin:18px 0}h1 span{color:#e0bc78}main{max-width:1150px;margin:auto;padding:24px}h2{font-weight:500}button,input,textarea{font:inherit}button{border:0;border-radius:8px;padding:12px 18px;background:#285848;color:white;cursor:pointer}button:disabled{opacity:.55;cursor:wait}button:focus-visible,input:focus-visible,textarea:focus-visible{outline:3px solid #c07b35;outline-offset:3px}label{display:block;margin:15px 0}input:not([type=checkbox]),textarea{display:block;width:100%;padding:12px;border:1px solid #bdc7bf;border-radius:8px;margin-top:6px}input[type=checkbox]{width:18px;height:18px;vertical-align:middle}form{max-width:600px;background:white;padding:24px;border-radius:14px}#login{margin:20px auto}#status{min-height:24px;font-weight:600;color:#8b401e}.toolbar{display:flex;align-items:center;gap:20px;justify-content:space-between}.note{font-size:14px;color:#56685e;line-height:1.6}.release{padding:6px;font-size:12px;margin:6px}#editor{margin-top:32px}#preview{container-type:inline-size;width:100%;aspect-ratio:420/297;background:#fff;padding:3%;display:grid;grid-template-columns:1fr 1fr;grid-template-rows:56% 44%;gap:0 4%;box-shadow:0 8px 35px #243c3620;overflow:hidden}#visual{grid-column:1/3;background:#e9ece4;position:relative;min-height:0}#visual img{width:100%;height:100%;object-fit:contain;display:none}#placeholder{display:grid;place-items:center;height:100%;font-size:2cqw;color:#6e7e70}.caption{overflow:hidden;padding-top:3%;}.caption h2{font-family:Georgia,serif;font-size:3cqw;margin:3% 0}.caption p{font-size:1.65cqw;line-height:1.45;white-space:pre-wrap;overflow-wrap:anywhere}.calendar{padding-top:4%;min-height:0}.calendar h3{font-size:2.5cqw;margin:0 0 2%}#grid{display:grid;grid-template-columns:repeat(7,1fr);gap:.3cqw;font-size:1.5cqw}.day{min-height:3.7cqw;padding:.2cqw}.day small{display:block;font-size:.65cqw;line-height:1.1}.holiday{color:#a34530}.weekday{font-weight:600}footer{text-align:center;padding:40px;color:#69796e}[hidden]{display:none!important}@media(max-width:650px){main{padding:16px}.toolbar{align-items:start}form{padding:18px}}
/* A3 v2: full-bleed image, movable overlay and full-width day band. */
#preview{display:block;position:relative;padding:0;overflow:hidden;background:#e9ece4;aspect-ratio:420/297}
#visual{position:absolute;inset:0 0 13% 0;overflow:hidden;touch-action:none;cursor:grab;user-select:none}
#visual:active{cursor:grabbing}#visual img{position:absolute;max-width:none;max-height:none;object-fit:fill;pointer-events:none}
#placeholder{position:absolute;inset:0;z-index:0}
#sticker{position:absolute;z-index:2;width:35%;max-height:88%;padding:1.6cqw 1.8cqw;background:#fffcf1ed;color:#294437;border-radius:1.2cqw;box-shadow:0 .4cqw 1.5cqw #102c3540;cursor:move;overflow:hidden;overflow-wrap:anywhere}
#sticker h2{font-family:Georgia,serif;font-size:2.5cqw;line-height:1.15;margin:0 0 .8cqw}
#sticker p{font-size:1.45cqw;line-height:1.4;white-space:pre-wrap;margin:0}
.calendar{position:absolute;inset:87% 0 0;padding:.6cqw 1.1cqw .5cqw;background:#fffdf5;color:#263f34}
.calendar h3{font-family:Georgia,serif;font-size:1.5cqw;line-height:1;margin:0 0 .4cqw}
#grid{display:grid;gap:0;font-size:1.25cqw}
.day{min-height:0;min-width:0;padding:0 .12cqw;text-align:center;border-right:1px solid #dce1d7;line-height:1.2}
.day:last-child{border:0}.day small{display:block;font-size:.9cqw;line-height:1.15}.day strong{display:block;font-size:1.35cqw;line-height:1.15}.day span{display:block;font-size:.51cqw;line-height:1.05;overflow-wrap:anywhere}.day.holiday{color:#ae402b;background:#f7ede3}.day.saturday{background:#eef0e7}
#countdown{padding:12px 16px;border-left:4px solid #c29c4e;background:#fbf0d7;line-height:1.5}
#countdown:empty{display:none}input[type=range]{padding:0!important;accent-color:#285848;min-height:30px}details{padding:8px 0}details summary{cursor:pointer}#overflowWarning{color:#a34530}
/* Distinct editor view and robust whole-sticker drag handles. */
#editor{scroll-margin-top:16px}#heading:focus{outline:none}#back{margin-bottom:12px}#roleBadge{white-space:nowrap;font-size:14px}.toolbar{flex-wrap:wrap}
#sticker,#sticker *{-webkit-user-select:none;user-select:none;touch-action:none;cursor:grab;-webkit-user-drag:none}#visual.dragging,#visual.dragging *{cursor:grabbing!important;user-select:none!important;-webkit-user-select:none!important}
.day .holidayLabel{font-size:.8cqw;white-space:nowrap;overflow-wrap:normal;word-break:normal;line-height:1.1;font-weight:600}
.day.holiday strong::after{content:'•';font-size:.65cqw;vertical-align:middle;margin-left:.12cqw}
/* Gelato A3 portrait: relative crop/sticker coordinates are preserved. */
#preview{aspect-ratio:297/420}#visual{inset:0 0 8% 0}.calendar{inset:92% 0 0}
.bleedFrame{padding:1.31%;border:1px dashed #98a39b;background:repeating-linear-gradient(45deg,#e8eae2,#e8eae2 5px,#f4f3ec 5px,#f4f3ec 10px);margin:20px 0}
.printNote{font-size:13px;line-height:1.5;color:#5a6f62}
#bindingGuide{position:absolute;top:0;left:0;right:0;height:10.101cqw;border-bottom:1px dashed #fff9;background:#ffffff17;pointer-events:none;z-index:3;color:#fff;text-shadow:0 1px 3px #000}
#bindingGuide span{position:absolute;left:1.7cqw;top:1.5cqw;font-size:.9cqw;background:#24443690;padding:.4cqw;border-radius:.4cqw}
#bindingGuide i{position:absolute;width:6.734cqw;height:6.734cqw;top:1.684cqw;left:calc(50% - 3.367cqw);border:1px dashed #fff9;border-radius:50%;background:#ffffff15}
#safeGuide{position:absolute;inset:10.101cqw 1.347cqw 1.347cqw;border:1px dashed #ffffff70;pointer-events:none;z-index:3}
#sticker{max-height:calc(100% - 11.448cqw)}.calendar{padding-left:1.347cqw;padding-right:1.347cqw;padding-bottom:1.347cqw}
.day .holidayLabel{font-size:.9cqw}.day.holiday strong::after{font-size:.9cqw}
#adminArea{padding:20px;background:#e5ece2;border-radius:12px;margin-bottom:24px}#adminArea>button{margin:8px 8px 8px 0}#pageGallery{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px}#pageGallery section{min-width:0}#pageGallery canvas{box-shadow:0 3px 12px #0002}select{font:inherit;padding:10px}#quoteResult{white-space:pre-wrap;line-height:1.6}#orderArea{margin-top:24px}
#visual{background:#e4ebe1}
