:root{--font-title: "Gaegu", cursive;--font-head: "Gaegu", cursive;--font-body: "Nanum Pen Script", cursive;--sky: #bfe0f3;--sky-deep: #7ec3ea;--ink: #2b2b2b;--ink-soft: #4a4a4a;--navy: #1d3557;--crayon: #c1121f;--crayon-dark: #8b0d16;--pine: #2d6a4f;--pine-light: #3d8b65;--wood: #d2ad7e;--wood-dark: #8a5e36;--wood-ink: #1e1206;--paper: #fffef5;--line: #d6e4f5;--margin-line: #f2a3a9;--gold: #ffd166;--peach: #ffd6a5;--ice: #8ecae6;--amber: #9c5b00;--night: #1b2347;--dots: radial-gradient(rgba(255, 255, 255, .45) 1px, transparent 1.6px), radial-gradient(rgba(30, 70, 110, .08) 1px, transparent 1.6px);--torn: polygon(0 0, 100% 0, 100% calc(100% - 12px) , 95% 100%, 89% calc(100% - 10px) , 83% 100%, 77% calc(100% - 9px) , 70% 100%, 63% calc(100% - 11px) , 56% 100%, 49% calc(100% - 9px) , 42% 100%, 35% calc(100% - 12px) , 28% 100%, 21% calc(100% - 9px) , 14% 100%, 7% calc(100% - 11px) , 2% 100%, 0 calc(100% - 8px) );--r-btn: 14px 4px 16px 6px / 6px 16px 4px 14px;--r-btn-alt: 6px 14px 4px 16px / 16px 4px 14px 6px;--r-blob: 48% 52% 45% 55% / 52% 46% 54% 48%}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;min-height:100%}body{background-color:var(--sky);background-image:var(--dots);background-size:6px 6px,9px 9px;background-position:0 0,3px 4px;font-family:var(--font-body);font-size:27px;line-height:1.15;color:var(--ink);-webkit-font-smoothing:antialiased}#root{min-height:100dvh}a{color:var(--crayon)}a:hover{color:var(--crayon-dark)}button,input,textarea,select{font:inherit;color:inherit}:focus-visible{outline:3px dashed var(--crayon);outline-offset:3px}.vh{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.page{position:relative;max-width:430px;margin:0 auto;padding:22px 16px 48px;display:flex;flex-direction:column;gap:22px;min-height:100dvh}.page>*{position:relative}.page--sky{background:var(--sky-deep);max-width:none}.page-sky-wrap{background:var(--sky-deep);min-height:100dvh}.page-red-wrap{min-height:100dvh;color:#fff;background-color:var(--crayon);background-image:radial-gradient(rgba(60,0,5,.25) 1px,transparent 1.6px),radial-gradient(rgba(255,220,200,.12) 1px,transparent 1.6px),repeating-linear-gradient(83deg,rgba(60,0,5,.08) 0 2px,transparent 2px 9px);background-size:6px 6px,9px 9px,auto;background-position:0 0,3px 4px,0 0}.page-red-wrap a{color:#fff}.page-red-wrap a.name-note,.page-red-wrap a.sign{color:var(--ink)}.top-row{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.heading{display:flex;flex-direction:column}.title{margin:0;font-family:var(--font-title);font-size:72px;font-weight:700;line-height:1;color:#fffef5;text-shadow:3px 3px 0 var(--ink);overflow-wrap:anywhere}.subtitle{font-size:25px;color:var(--navy);line-height:1.1}.h-paper{margin:0;font-family:var(--font-head);font-size:44px;font-weight:700;line-height:1.05}.h2{margin:0;font-family:var(--font-head);font-size:30px;font-weight:700;line-height:1.05}.gaegu{font-family:var(--font-head);font-weight:700}.hint{font-size:23px;color:var(--ink-soft);line-height:1.1}.err{color:var(--crayon);font-size:24px;line-height:1.1}.muted{color:var(--ink-soft)}.highlight{padding:0 4px;background:linear-gradient(transparent 45%,rgba(255,209,102,.85) 45%,rgba(255,209,102,.85) 90%,transparent 90%)}p{margin:0;line-height:1.15}.sign{align-self:flex-start;display:flex;flex-direction:column;align-items:flex-start;text-decoration:none}.sign__board{padding:4px 14px 6px;background:var(--wood);color:var(--wood-ink);border:2.5px solid var(--ink);border-radius:6px 10px 4px 8px;transform:rotate(-4deg);font-family:var(--font-head);font-size:24px;font-weight:700;transition:transform .2s ease}.sign:hover .sign__board{transform:rotate(-2deg) translate(-3px)}.sign__post{margin-left:30px;width:8px;height:22px;background:var(--wood-dark);border:2px solid var(--ink);border-top:0}.name-note{position:relative;flex-shrink:0;width:76px;padding:14px 6px 8px;background:#fff;color:var(--ink);border:2px solid var(--ink);transform:rotate(5deg);display:flex;flex-direction:column;align-items:center;text-decoration:none;box-shadow:2px 3px #2b2b2b40}.name-note:hover{color:var(--ink);transform:rotate(2deg)}.name-note__tape{position:absolute;top:-10px;left:18px;width:40px;height:18px;background:#ffd166cc;transform:rotate(-6deg)}.name-note__label{font-size:22px;line-height:1}.name-note__stars{font-family:var(--font-head);font-size:22px;font-weight:700;letter-spacing:2px}.paper-wrap{position:relative}.paper{position:relative;margin:0;padding:30px 20px 50px 52px;background-color:var(--paper);background-image:repeating-linear-gradient(0deg,transparent 0px,transparent 35px,var(--line) 35px,var(--line) 36px);box-shadow:2px 4px #28140040;border-radius:6px 10px 0 0;clip-path:var(--torn);display:flex;flex-direction:column;gap:20px}.paper:before,.card-lined:before,.sheet__body:before,.dialog__body:before{content:"";position:absolute;left:36px;top:0;bottom:0;width:2px;background:var(--margin-line);pointer-events:none}.card-lined{position:relative;padding:18px 16px 20px 46px;background-color:var(--paper);background-image:repeating-linear-gradient(0deg,transparent 0px,transparent 35px,var(--line) 35px,var(--line) 36px);border:2.5px solid var(--ink);border-radius:8px 14px 6px 12px/12px 6px 14px 8px;display:flex;flex-direction:column;gap:8px}.card-lined:before{left:32px}.card{position:relative;padding:16px;background:var(--paper);border:2.5px solid var(--ink);border-radius:14px 6px 12px 8px;display:flex;flex-direction:column;gap:8px}.sticky{padding:12px 16px;background:var(--paper);border:2px solid var(--ink);border-radius:4px 12px 6px 10px;font-size:24px;line-height:1.1}.status-ok{padding:10px 14px;background:#d8f0e3;border:2.5px solid var(--pine);border-radius:10px 4px 12px 6px;transform:rotate(-1deg);display:flex;gap:10px;align-items:center;line-height:1.1}.warn-box{padding:10px 12px;background:#fff1d6;border:2.5px solid var(--amber);border-radius:8px 4px 10px 5px;line-height:1.1}.warn-box strong{font-family:var(--font-head);color:#7a4700}.error-summary{padding:12px 14px;background:#fff;border:3px solid var(--crayon);border-radius:10px 4px 12px 6px/6px 12px 4px 10px;transform:rotate(-1deg);display:flex;flex-direction:column;gap:4px}.error-summary h2{margin:0;font-family:var(--font-head);font-size:28px;font-weight:700;color:var(--crayon)}.error-summary ul{margin:0;padding-left:20px;line-height:1.15}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:52px;padding:0 26px;border:3px solid var(--ink);border-radius:var(--r-btn);background:var(--crayon);color:#fff;font-family:var(--font-head);font-size:26px;font-weight:700;line-height:1;text-decoration:none;box-shadow:3px 4px 0 var(--ink);cursor:pointer;align-self:flex-start;text-align:center;transition:transform .12s ease,box-shadow .12s ease}.btn:hover{color:#fff;transform:translate(-1px,-1px);box-shadow:4px 5px 0 var(--ink)}.btn:active{transform:translate(2px,2px);box-shadow:1px 2px 0 var(--ink)}.btn--wide{align-self:stretch;min-height:58px;font-size:28px}.btn--pine{background:var(--pine)}.btn--dashed{min-height:48px;padding:0 18px;border:3px dashed var(--ink);border-radius:var(--r-btn-alt);background:#fff;color:var(--ink);font-size:24px;box-shadow:none}.btn--dashed:hover{color:var(--ink);box-shadow:none}.btn--danger{border-color:var(--crayon);color:var(--crayon)}.btn--danger:hover{color:var(--crayon-dark)}.btn--small{min-height:44px;padding:0 14px;font-size:22px}.btn:disabled,.btn[aria-disabled=true]{border:3px solid #9a9a9a;background:repeating-linear-gradient(-45deg,#ededed 0,#ededed 6px,#fff 6px,#fff 12px);color:#5a5a5a;box-shadow:none;transform:none;cursor:not-allowed}.btn--dashed:disabled{border-style:dashed}.btn-link{align-self:flex-start;display:inline-flex;align-items:center;min-height:44px;padding:0;border:0;background:transparent;font-family:var(--font-body);font-size:26px;text-decoration:underline;color:var(--ink);cursor:pointer}.btn-link--centre{align-self:center;padding:0 16px}.icon-btn{flex-shrink:0;width:44px;height:44px;padding:0;display:flex;align-items:center;justify-content:center;border:2.5px solid var(--ink);border-radius:50% 45% 55% 40%;background:#fff;color:var(--ink);cursor:pointer}.close-x{position:absolute;top:12px;right:12px;width:44px;height:44px;padding:0;border:0;background:transparent;cursor:pointer;display:flex;align-items:center;justify-content:center;z-index:2}.field{display:flex;flex-direction:column;gap:4px}fieldset.field{margin:0;padding:0;border:0}fieldset.field legend{padding:0;margin-bottom:4px}.label{font-family:var(--font-head);font-size:24px;font-weight:700}.label--big{font-size:26px}.label .opt{font-family:var(--font-body);font-weight:400;color:var(--ink-soft)}.label .req{color:var(--crayon)}.input{width:100%;min-width:0;height:52px;padding:0 4px;border:0;border-bottom:3px solid var(--ink);border-radius:0;background:transparent;font-family:var(--font-body);font-size:30px;color:var(--ink)}.input--small{height:48px;font-size:26px}.input:focus{outline:none;border-bottom-color:var(--crayon);background:#ffd16626}.input[aria-invalid=true]{border-bottom:4px solid var(--crayon);background:#c1121f0f}.input-box{width:100%;min-width:0;height:52px;padding:0 12px;border:3px dashed var(--ink);border-radius:6px 14px 4px 12px/12px 4px 14px 6px;background:#fff9;font-family:var(--font-body);font-size:26px}.input-box[aria-invalid=true]{border:3px solid var(--crayon);background:#c1121f0d}textarea.input-box{height:auto;padding:6px 10px;line-height:36px;resize:vertical}.money{display:flex;align-items:center;gap:6px;border-bottom:3px solid var(--ink)}.money span{font-family:var(--font-head);font-size:28px;font-weight:700}.money .input{border-bottom:0}.row{display:flex;align-items:center;gap:8px}.grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.code-input{width:282px;max-width:100%;height:64px;padding:0 0 6px 8px;border:0;background:transparent;background-image:repeating-linear-gradient(90deg,var(--ink) 0 36px,transparent 36px 47px);background-size:100% 3px;background-position:left bottom;background-repeat:no-repeat;font-family:var(--font-head);font-size:44px;font-weight:700;letter-spacing:26px}.code-input[aria-invalid=true]{background-color:#c1121f0f;background-image:repeating-linear-gradient(90deg,var(--crayon) 0 36px,transparent 36px 47px);background-size:100% 4px}.code-input:focus{outline:none}.stamp{display:inline-block;flex-shrink:0;padding:1px 8px;border:2.5px solid currentColor;border-radius:6px;background:var(--paper);font-family:var(--font-head);font-size:22px;font-weight:700;letter-spacing:1px;line-height:1.2}.stamp--ready{color:var(--pine)}.stamp--setting_up{color:var(--amber)}.stamp--invited{color:var(--ink-soft);border-style:dashed}.stamp--drawn{color:var(--pine)}.avatar{flex-shrink:0;border:3px solid var(--ink);border-radius:var(--r-blob);background:var(--peach);display:flex;align-items:center;justify-content:center;text-align:center;font-family:var(--font-head);font-weight:700;overflow:hidden}.avatar img{width:100%;height:100%;object-fit:cover}.progress{height:18px;border:2.5px solid var(--ink);border-radius:10px 4px 12px 5px;background:#fff;overflow:hidden}.progress>div{height:100%;background:repeating-linear-gradient(-30deg,var(--pine) 0 8px,var(--pine-light) 8px 14px);transition:width .3s ease}.progress--gold>div{background:repeating-linear-gradient(-30deg,#ffd166 0,#ffd166 8px,#f4b942 8px,#f4b942 14px)}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;background:#1e12068c;display:flex;justify-content:center;overflow-y:auto}.overlay--centre{align-items:flex-start;padding:110px 16px 40px}.overlay--bottom{align-items:flex-end}.overlay--night{background:#1b234799;align-items:center;padding:20px}.sheet{width:100%;max-width:430px}.sheet__body{position:relative;margin:0;padding:30px 20px 34px 52px;background-color:var(--paper);background-image:repeating-linear-gradient(0deg,transparent 0px,transparent 35px,var(--line) 35px,var(--line) 36px);border:3px solid var(--ink);border-bottom:0;border-radius:22px 30px 0 0/14px 20px 0 0;display:flex;flex-direction:column;gap:14px}.dialog{width:100%;max-width:398px;transform:rotate(-1deg)}.dialog__body{position:relative;padding:30px 20px 26px 52px;background-color:var(--paper);background-image:repeating-linear-gradient(0deg,transparent 0px,transparent 35px,var(--line) 35px,var(--line) 36px);border:3px solid var(--ink);border-radius:14px 6px 16px 8px/8px 16px 6px 14px;display:flex;flex-direction:column;gap:14px}.dialog h2{margin:0;font-family:var(--font-head);font-size:38px;font-weight:700;line-height:1}.check-row{display:flex;align-items:center;gap:12px;min-height:44px;cursor:pointer}.check-row input{width:28px;height:28px;margin:0;flex-shrink:0;accent-color:var(--crayon)}.santa-banner{position:fixed;left:50%;bottom:10px;z-index:45;transform:translate(-50%) rotate(-1.5deg);max-width:calc(100% - 32px);width:max-content;padding:6px 12px;background:var(--crayon);color:#fff;border:3px solid var(--ink);border-radius:12px 4px 14px 6px;box-shadow:3px 4px #2b2b2b59;font-size:18px;line-height:1.1;text-align:center;text-decoration:none;white-space:nowrap}.snow{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;overflow:hidden;z-index:40}.snow span{position:absolute;top:-20px;border-radius:50%;background:#fff;animation-name:ssFall;animation-timing-function:linear;animation-iteration-count:infinite}@keyframes ssFall{0%{transform:translate3d(0,-40px,0)}to{transform:translate3d(var(--drift, 24px),calc(100vh + 40px),0)}}@keyframes ssWiggle{0%,to{transform:rotate(0)}25%{transform:rotate(-1.4deg)}75%{transform:rotate(1.4deg)}}.ss-wiggle{animation:ssWiggle 2.4s ease-in-out infinite;transform-origin:50% 100%}@keyframes ssBob{0%,to{transform:translateY(0) rotate(-3deg)}50%{transform:translateY(-5px) rotate(2deg)}}.ss-bob{animation:ssBob 2.2s ease-in-out infinite}@keyframes ssPulse{0%,to{box-shadow:0 0 #ffd166e6}50%{box-shadow:0 0 0 7px #ffd16600}}.ss-today{animation:ssPulse 1.8s ease-in-out infinite}@keyframes ssTwinkle{0%,to{opacity:.25;transform:scale(.6)}50%{opacity:1;transform:scale(1.15)}}.ss-star{animation:ssTwinkle 2.6s ease-in-out infinite}@keyframes ssGlow{0%,to{opacity:.35}50%{opacity:.9}}.ss-glow{animation:ssGlow 2s ease-in-out infinite}@keyframes ssSpin{0%,to{transform:rotate(-10deg) scale(.9)}50%{transform:rotate(12deg) scale(1.1)}}.ss-spin{animation:ssSpin 2.4s ease-in-out infinite}@keyframes ssFade{0%{opacity:0}to{opacity:1}}@media (prefers-reduced-motion: reduce){.snow,.ss-wiggle,.ss-bob,.ss-today,.ss-star,.ss-glow,.ss-spin{animation:none!important}.snow{display:none}*{transition:none!important}}.loading{min-height:60dvh;display:flex;align-items:center;justify-content:center;font-family:var(--font-head);font-size:30px;color:var(--navy)}.tree3d{z-index:2;touch-action:pan-y;cursor:grab;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.tree3d.is-dragging{cursor:grabbing}.tree-spin{position:absolute;top:676px;z-index:5;width:60px;height:60px;padding:0;border:0;background:transparent;cursor:pointer}.tree-spin svg{transition:transform .15s}.tree-spin:active svg{transform:scale(.9)}
