/* Several toggled elements (.nav, .publish-form, .publish-confirm, .admin-login…)
   set their own `display`, which ties in specificity with the UA's [hidden]
   rule and can win the cascade — so `el.hidden = true` silently fails to hide
   them. Force it explicitly rather than relying on attribute vs. class order. */
[hidden]{display:none !important}

:root{
  --ai:#1E3FD6;
  --beni:#E5322B;
  --momo:#F39AC2;
  --kin:#F6B829;
  --yoru:#0F1B5E;
  --washi:#F4ECDD;
  --sumi:#17140F;
}

*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
html,body{overflow-x:hidden;max-width:100%}
body{margin:0;background:var(--washi);color:var(--sumi);font-family:'Zen Kaku Gothic New',sans-serif;-webkit-font-smoothing:antialiased}
a{color:var(--ai);text-decoration:none}
a:hover{color:var(--beni)}
input,textarea,select,button{font-family:inherit}
button{border:none;background:none}

@keyframes spin{to{transform:rotate(360deg)}}
@keyframes marquee{to{transform:translateX(-50%)}}

/* Header */
.header{position:sticky;top:0;z-index:20;background:var(--washi);border-bottom:3px solid var(--sumi)}
.header-inner{max-width:1280px;margin:0 auto;padding:14px 28px;display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:wrap}
.brand{display:flex;align-items:center;gap:12px}
.brand-badge{width:42px;height:42px;border-radius:50%;background:var(--ai);border:3px solid var(--sumi);position:relative;flex:none}
.brand-badge .dot-a{position:absolute;left:6px;top:13px;width:12px;height:12px;border-radius:50%;background:var(--beni);border:2px solid var(--sumi)}
.brand-badge .dot-b{position:absolute;right:6px;top:13px;width:12px;height:12px;border-radius:50%;background:var(--momo);border:2px solid var(--sumi)}
.brand-name{display:flex;flex-direction:column;line-height:1}
.brand-name .jp{font-family:'Dela Gothic One';font-size:24px;color:var(--beni)}
.brand-name .en{font-family:'DM Mono';font-size:10px;letter-spacing:.2em;margin-top:3px}
.nav{display:flex;gap:22px;align-items:center;flex-wrap:wrap;font-weight:700;font-size:15px}
.nav a{color:var(--sumi)}
.nav a:hover{color:var(--beni)}
.nav .cta{background:var(--beni);color:var(--washi);padding:10px 18px;border:3px solid var(--sumi);box-shadow:4px 4px 0 var(--sumi);font-family:'Mochiy Pop One';font-size:14px}
.nav .cta:hover{color:var(--washi)}

/* Hero */
.hero{max-width:1280px;margin:0 auto;padding:56px 28px 72px;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,460px),1fr));gap:48px;align-items:center}
.hero-copy{display:flex;flex-direction:column;gap:22px}
.badges{display:flex;gap:8px;flex-wrap:wrap}
.badge-dark{font-family:'DM Mono';font-size:12px;letter-spacing:.14em;background:var(--sumi);color:var(--washi);padding:6px 10px}
.badge-outline{font-family:'DM Mono';font-size:12px;letter-spacing:.14em;border:2px solid var(--sumi);padding:4px 10px}
.hero h1{margin:0;font-family:'Dela Gothic One';font-weight:400;font-size:clamp(56px,14vw,176px);line-height:.9;color:var(--beni);text-shadow:6px 6px 0 var(--ai);letter-spacing:-.02em}
.hero .tagline{margin:0;font-family:'Mochiy Pop One';font-size:clamp(26px,3.2vw,40px);line-height:1.15;color:var(--ai);text-wrap:balance}
.hero .desc{margin:0;font-size:18px;line-height:1.6;max-width:520px;text-wrap:pretty}
.hero-ctas{display:flex;gap:14px;flex-wrap:wrap;margin-top:6px}
.btn-primary{display:inline-block;cursor:pointer;background:var(--beni);color:var(--washi);padding:16px 26px;border:3px solid var(--sumi);box-shadow:6px 6px 0 var(--sumi);font-family:'Mochiy Pop One';font-size:18px}
.btn-primary:hover{color:var(--washi)}
.btn-secondary{display:inline-block;cursor:pointer;background:var(--washi);color:var(--sumi);padding:16px 26px;border:3px solid var(--sumi);font-family:'Mochiy Pop One';font-size:18px}
.btn-secondary:hover{color:var(--beni)}

.hero-visual{position:relative;aspect-ratio:4/5;max-width:520px;width:100%;justify-self:center;background-color:var(--ai);background-image:radial-gradient(rgba(244,236,221,.22) 1.5px,transparent 1.7px);background-size:11px 11px;border:3px solid var(--sumi);box-shadow:10px 10px 0 var(--sumi)}
.hero-visual .orbit-outer{position:absolute;inset:16% 22% 20% 10%;border:2px dashed rgba(244,236,221,.6);border-radius:50%}
.hero-visual .orbit-inner{position:absolute;inset:28% 34% 32% 22%;border:2px dashed rgba(244,236,221,.35);border-radius:50%}
.hero-visual .spin-wrap{position:absolute;inset:16% 22% 20% 10%;animation:spin 10s linear infinite}
.hero-visual .star-a{position:absolute;left:-26px;top:calc(50% - 26px);width:52px;height:52px;border-radius:50%;background:var(--beni);border:3px solid var(--sumi);box-shadow:0 0 0 6px rgba(229,50,43,.3)}
.hero-visual .star-b{position:absolute;right:-20px;top:calc(50% - 20px);width:40px;height:40px;border-radius:50%;background:var(--momo);border:3px solid var(--sumi);box-shadow:0 0 0 6px rgba(243,154,194,.3)}
.hero-visual .diamond{position:absolute;left:calc(46% - 8px);top:calc(48% - 8px);width:16px;height:16px;background:var(--kin);transform:rotate(45deg)}
.hero-visual .vertical-text{position:absolute;right:16px;top:18px;bottom:60px;writing-mode:vertical-rl;font-family:'Dela Gothic One';font-size:clamp(38px,5vw,60px);color:var(--washi);line-height:1;letter-spacing:.04em}
.hero-visual .plate{position:absolute;left:0;right:0;bottom:0;background:var(--washi);border-top:3px solid var(--sumi);padding:10px 16px;display:flex;justify-content:space-between;font-family:'DM Mono';font-size:12px;letter-spacing:.14em}
.hero-visual .seal{position:absolute;left:-34px;top:-34px;width:150px;height:150px;background:var(--kin);clip-path:polygon(50% 0,59.8% 13.3%,75% 6.7%,76.9% 23.1%,93.3% 25%,86.7% 40.2%,100% 50%,86.7% 59.8%,93.3% 75%,76.9% 76.9%,75% 93.3%,59.8% 86.7%,50% 100%,40.2% 86.7%,25% 93.3%,23.1% 76.9%,6.7% 75%,13.3% 59.8%,0 50%,13.3% 40.2%,6.7% 25%,23.1% 23.1%,25% 6.7%,40.2% 13.3%);display:flex;align-items:center;justify-content:center;transform:rotate(-12deg)}
.hero-visual .seal-text{text-align:center;font-family:'Mochiy Pop One';font-size:15px;line-height:1.1;color:var(--sumi)}
.hero-visual .seal-text b{font-family:'Dela Gothic One';font-size:22px;color:var(--beni);font-weight:400}

/* Marquee */
.marquee{background:var(--beni);border-top:3px solid var(--sumi);border-bottom:3px solid var(--sumi);overflow:hidden;padding:12px 0}
.marquee-track{display:flex;width:max-content;white-space:nowrap;font-family:'Dela Gothic One';font-size:22px;color:var(--washi);letter-spacing:.04em;animation:marquee 32s linear infinite}
.marquee-track span{padding-right:0}

/* Sky */
.sky{background:var(--yoru);color:var(--washi);border-bottom:3px solid var(--sumi)}
.sky-inner{max-width:1280px;margin:0 auto;padding:56px 28px 64px;display:flex;flex-direction:column;gap:24px}
.sky-head{display:flex;justify-content:space-between;align-items:flex-end;gap:20px;flex-wrap:wrap}
.sky-head .eyebrow{display:block;font-family:'DM Mono';font-size:12px;letter-spacing:.2em;color:var(--kin)}
.sky-head h2{margin:0;font-family:'Dela Gothic One';font-weight:400;font-size:clamp(36px,5vw,64px);line-height:1}
.sky-head p{margin:0;max-width:380px;font-size:16px;line-height:1.55;color:#DCD3F0}

.code-search{display:flex;gap:8px;flex-wrap:wrap}
.code-search input{border:2px solid var(--washi);background:rgba(244,236,221,.08);color:var(--washi);padding:10px 12px;font-family:'DM Mono';font-size:16px;letter-spacing:.08em;min-width:0;flex:1 1 220px}
.code-search input::placeholder{color:rgba(244,236,221,.5)}
.code-search button{cursor:pointer;padding:10px 16px;border:2px solid var(--washi);background:var(--kin);color:var(--sumi);font-family:'Mochiy Pop One';font-size:13px}
.code-search-msg{font-size:13px;color:var(--kin);min-height:16px}

.chips{display:flex;gap:8px;flex-wrap:wrap}
.chip{cursor:pointer;padding:8px 14px;border:2px solid var(--washi);background:transparent;color:var(--washi);font-family:'Mochiy Pop One';font-size:13px}
.chip.active{background:var(--washi);color:var(--yoru)}
.chip-sign{cursor:pointer;padding:8px 12px;border:2px solid var(--washi);background:transparent;color:var(--washi);font-family:'Zen Kaku Gothic New';font-weight:700;font-size:13px}
.chip-sign.active{background:var(--washi);color:var(--yoru)}

.sky-grid{display:flex;gap:24px;flex-wrap:wrap;align-items:stretch}
.sky-canvas{flex:1 1 640px;min-width:0;border:3px solid var(--washi);background-color:var(--yoru);background-image:linear-gradient(rgba(244,236,221,.07) 1px,transparent 1px),linear-gradient(90deg,rgba(244,236,221,.07) 1px,transparent 1px);background-size:25px 25px;position:relative}
.sky-canvas svg{display:block;width:100%;height:440px;touch-action:none;cursor:grab}
.sky-canvas svg:active{cursor:grabbing}
.sky-count{position:absolute;left:12px;bottom:10px;font-family:'DM Mono';font-size:11px;letter-spacing:.14em;color:var(--kin);pointer-events:none}
.sky-hint{position:absolute;left:12px;top:10px;font-family:'DM Mono';font-size:10px;letter-spacing:.08em;color:rgba(244,236,221,.55);pointer-events:none}
.sky-zoom{position:absolute;right:12px;bottom:10px;display:flex;gap:6px}
.sky-zoom button{cursor:pointer;width:30px;height:30px;border:2px solid var(--washi);background:rgba(15,27,94,.7);color:var(--washi);font-family:'Mochiy Pop One';font-size:16px;line-height:1;display:flex;align-items:center;justify-content:center}
.sky-zoom button:hover{background:var(--beni)}
.star-dot{cursor:pointer}

.register{flex:1 1 300px;max-width:100%;background:var(--momo);color:var(--sumi);border:3px solid var(--sumi);box-shadow:8px 8px 0 var(--beni);display:flex;flex-direction:column;position:relative;overflow:hidden}
.register-head{background:var(--sumi);color:var(--washi);padding:8px 14px;display:flex;justify-content:space-between;font-family:'DM Mono';font-size:11px;letter-spacing:.14em}
.register-dots{position:absolute;right:-30px;top:40px;width:170px;height:170px;background-image:radial-gradient(var(--sumi) 1.4px,transparent 1.6px);background-size:8px 8px;opacity:.18;border-radius:50%}
.register-body{padding:22px 20px 20px;display:flex;flex-direction:column;gap:16px;flex:1;position:relative}
.register-names{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}
.register-names .names{flex:1;min-width:0;font-family:'Mochiy Pop One';font-size:30px;line-height:1.1;overflow-wrap:anywhere}
.register-names .heart{color:var(--beni)}
.register-sign{flex:none;width:74px;height:74px;border-radius:50%;border:3px solid var(--beni);color:var(--beni);display:flex;flex-direction:column;align-items:center;justify-content:center;transform:rotate(8deg);background:var(--washi)}
.register-sign .jp{font-family:'Dela Gothic One';font-size:17px;line-height:1}
.register-sign .es{font-family:'DM Mono';font-size:9px;letter-spacing:.08em;margin-top:3px}
.register-photo{position:relative;aspect-ratio:4/3;max-height:300px;border:3px solid var(--sumi);background:var(--washi);overflow:hidden;transform:rotate(-1.5deg);box-shadow:5px 5px 0 var(--sumi)}
.register-photo img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.register-photo .no-photo{position:absolute;inset:0;background-color:var(--momo);background-image:radial-gradient(var(--sumi) 1.3px,transparent 1.5px);background-size:9px 9px;display:flex;align-items:center;justify-content:center}
.register-photo .no-photo span{background:var(--washi);border:3px solid var(--sumi);padding:8px 14px;font-family:'Dela Gothic One';font-size:28px}
.register-photo .tag{position:absolute;left:8px;bottom:8px;background:var(--beni);color:var(--washi);font-family:'DM Mono';font-size:10px;letter-spacing:.14em;padding:3px 7px}
.register-since{font-family:'DM Mono';font-size:12px;letter-spacing:.12em}
.register-meaning{background:var(--kin);border:3px solid var(--sumi);box-shadow:4px 4px 0 var(--sumi);padding:12px 14px;display:flex;flex-direction:column;gap:4px;transform:rotate(-1deg)}
.register-meaning-tag{font-family:'DM Mono';font-size:11px;letter-spacing:.14em;font-weight:700;color:var(--beni)}
.register-meaning-text{margin:0;font-family:'Zen Kaku Gothic New';font-weight:700;font-size:15px;line-height:1.45;color:var(--sumi)}
.register-story{margin:0;background:var(--washi);border:3px solid var(--sumi);border-radius:22px;padding:16px 18px;font-size:17px;line-height:1.5;font-weight:500}

@keyframes unlockReveal{
  0%{opacity:0;transform:scale(.8) rotate(-3deg);box-shadow:0 0 0 0 rgba(246,184,41,0)}
  40%{opacity:1;transform:scale(1.05) rotate(1deg);box-shadow:0 0 26px 8px rgba(246,184,41,.65)}
  70%{transform:scale(.98) rotate(-.5deg)}
  100%{transform:scale(1) rotate(0);box-shadow:0 0 0 0 rgba(246,184,41,0)}
}
.register-story.reveal{animation:unlockReveal .65s cubic-bezier(.34,1.56,.64,1)}

@keyframes lockShake{
  0%,100%{transform:translateX(0)}
  20%{transform:translateX(-7px)}
  40%{transform:translateX(7px)}
  60%{transform:translateX(-5px)}
  80%{transform:translateX(5px)}
}
.register-locked{background:var(--washi);border:3px dashed var(--sumi);border-radius:18px;padding:16px 18px;display:flex;flex-direction:column;gap:8px}
.register-locked.shake{animation:lockShake .4s}
.locked-title{margin:0;font-family:'DM Mono';font-size:11px;letter-spacing:.1em;color:var(--ai);font-weight:700}
.locked-question{margin:0;font-weight:700;font-size:16px;line-height:1.4}
.locked-form{display:flex;gap:8px;flex-wrap:wrap}
.locked-input{flex:1;min-width:120px;border:3px solid var(--sumi);padding:10px;font-size:16px;outline:none}
.locked-msg{font-size:12px;font-weight:700;color:var(--beni);min-height:14px}
.register-actions{margin-top:auto;display:flex;gap:10px;flex-wrap:wrap}
.btn-small-primary{cursor:pointer;background:var(--ai);color:var(--washi);border:3px solid var(--sumi);padding:10px 14px;font-family:'Mochiy Pop One';font-size:13px}
.btn-small-secondary{cursor:pointer;background:var(--washi);color:var(--sumi);border:3px solid var(--sumi);padding:10px 14px;font-family:'Mochiy Pop One';font-size:13px}
.btn-small-primary:disabled,.btn-small-secondary:disabled{opacity:.6;cursor:default}
.register-share-msg{font-size:12px;font-weight:700;color:var(--sumi);min-height:14px}

/* How it works */
.how{max-width:1280px;margin:0 auto;padding:72px 28px;display:flex;flex-direction:column;gap:32px}
.section-title{display:flex;align-items:baseline;gap:16px;flex-wrap:wrap}
.section-title .jp{margin:0;font-family:'Dela Gothic One';font-weight:400;font-size:clamp(36px,5vw,64px);line-height:1}
.section-title .es{font-family:'Mochiy Pop One';font-size:24px}
.how-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr));gap:20px}
.how-card{border:3px solid var(--sumi);padding:24px;display:flex;flex-direction:column;gap:14px;min-height:260px}
.how-card .num{font-family:'Dela Gothic One';font-size:64px;line-height:1}
.how-card .title{font-family:'Mochiy Pop One';font-size:24px}
.how-card .desc{font-size:16px;line-height:1.55}

/* Zodiac */
.zodiac{border-top:3px solid var(--sumi);background:#EADFC8}
.zodiac-inner{max-width:1280px;margin:0 auto;padding:72px 28px;display:flex;flex-direction:column;gap:32px}
.zodiac-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,210px),1fr));gap:16px}
.zodiac-tile{cursor:pointer;text-align:left;border:3px solid var(--sumi);padding:18px;display:flex;flex-direction:column;gap:8px;min-height:190px;font-family:'Zen Kaku Gothic New'}
.zodiac-tile .meta{font-family:'DM Mono';font-size:11px;letter-spacing:.14em}
.zodiac-tile .jp{font-family:'Dela Gothic One';font-size:46px;line-height:1}
.zodiac-tile .es{font-family:'Mochiy Pop One';font-size:20px}
.zodiac-tile .count{margin-top:auto;font-weight:700;font-size:14px}

/* Publish */
.publish{border-top:3px solid var(--sumi);background-color:var(--washi);background-image:conic-gradient(var(--ai) 25%,var(--washi) 0 50%,var(--ai) 0 75%,var(--washi) 0);background-size:56px 56px}
.publish-inner{max-width:1280px;margin:0 auto;padding:72px 28px;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,420px),1fr));gap:28px;align-items:stretch}
.publish-left{background:var(--beni);color:var(--washi);border:3px solid var(--sumi);padding:32px;display:flex;flex-direction:column;gap:18px;justify-content:space-between}
.publish-left .eyebrow{display:block;font-family:'DM Mono';font-size:12px;letter-spacing:.2em}
.publish-left h2{margin:0;font-family:'Dela Gothic One';font-weight:400;font-size:clamp(44px,6vw,80px);line-height:.95}
.publish-left p{margin:0;font-family:'Mochiy Pop One';font-size:24px;line-height:1.25}
.preview-box{display:flex;align-items:center;gap:12px;background:var(--washi);color:var(--sumi);border:3px solid var(--sumi);padding:12px 14px}
.preview-box .jp{font-family:'Dela Gothic One';font-size:26px;color:var(--ai)}
.preview-box .text{font-weight:700;font-size:15px}

.publish-form{background:var(--washi);border:3px solid var(--sumi);box-shadow:10px 10px 0 var(--sumi);padding:28px;display:flex;flex-direction:column;gap:16px}
.form-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:14px}
.field{display:flex;flex-direction:column;gap:6px;font-weight:700;font-size:14px}
.field input,.field textarea,.field select{width:100%;max-width:100%;border:3px solid var(--sumi);background:#fff;padding:12px;font-size:16px;outline:none;font-family:inherit}
.field select{cursor:pointer}
.field textarea{resize:vertical}
.photo-field{display:flex;flex-direction:column;gap:6px;font-weight:700;font-size:14px}
.lock-field{background:#fff;border:3px dashed var(--sumi);padding:14px;display:flex;flex-direction:column;gap:8px}
.lock-field-title{font-weight:700;font-size:14px}
.lock-field-hint{font-weight:400;font-size:12px;color:#665;line-height:1.4}
.photo-upload{cursor:pointer;display:flex;align-items:center;gap:14px;border:3px dashed var(--sumi);background:#fff;padding:10px}
.photo-preview{width:72px;height:72px;flex:none;border:2px solid var(--sumi);background-color:var(--momo);background-image:radial-gradient(var(--sumi) 1px,transparent 1.2px);background-size:7px 7px;overflow:hidden;display:flex;align-items:center;justify-content:center}
.photo-preview img{width:100%;height:100%;object-fit:cover}
.photo-preview span{font-family:'Dela Gothic One';font-size:26px;background:var(--washi);padding:2px 6px}
.photo-upload-text{display:flex;flex-direction:column;gap:4px}
.photo-upload-text .label{font-family:'Mochiy Pop One';font-weight:400;font-size:15px;color:var(--ai)}
.photo-upload-text .hint{font-weight:400;font-size:13px}
.submit-btn{cursor:pointer;background:var(--ai);color:var(--washi);border:3px solid var(--sumi);box-shadow:6px 6px 0 var(--beni);padding:16px;font-family:'Mochiy Pop One';font-size:18px;width:100%}
.submit-btn:disabled{opacity:.6;cursor:default}
.form-msg{font-size:14px;font-weight:700;color:var(--beni);min-height:18px}

.publish-confirm{background:var(--washi);border:3px solid var(--sumi);box-shadow:10px 10px 0 var(--sumi);padding:24px;display:flex;flex-direction:column;align-items:flex-start;gap:10px}
.confirm-eyebrow{font-family:'DM Mono';font-size:12px;letter-spacing:.2em;color:var(--ai)}
.confirm-code{font-family:'Dela Gothic One';font-size:clamp(28px,4vw,40px);letter-spacing:.05em;color:var(--beni);background:#fff;border:3px solid var(--sumi);padding:10px 18px;align-self:stretch;text-align:center}
.confirm-text{margin:0;font-size:14px;line-height:1.5}

.payment-box{align-self:stretch;background:#fff;border:3px solid var(--sumi);padding:16px;display:flex;flex-direction:column;gap:10px}
.payment-title{margin:0;font-family:'Mochiy Pop One';font-weight:400;font-size:17px;color:var(--ai)}
.payment-text{margin:0;font-size:13px;line-height:1.45}
.payment-voluntary{margin:0;font-size:12px;line-height:1.4;color:var(--ai);font-weight:700}
.payment-panel{align-self:center;display:flex;flex-direction:column;align-items:center;gap:10px}
.payment-qr{width:220px;height:220px;object-fit:contain;border:3px solid var(--sumi);background:#fff;padding:8px}
.payment-number-btn{cursor:pointer;display:flex;align-items:center;gap:10px;border:3px solid var(--sumi);background:var(--washi);padding:9px 16px;font-family:'DM Mono';font-weight:700;font-size:16px;letter-spacing:.04em;color:var(--sumi)}
.payment-number-btn:hover{background:#fff}
.payment-number-btn .copy-hint{font-size:11px;letter-spacing:.06em;color:var(--ai)}
.payment-done{align-self:stretch;background:var(--kin);border:3px solid var(--sumi);padding:16px}

.promo-divider{display:flex;align-items:center;gap:10px;color:#999;font-family:'DM Mono';font-size:11px;letter-spacing:.1em;margin:2px 0}
.promo-divider::before,.promo-divider::after{content:'';flex:1;height:1px;background:#ddd}
.promo-redeem{display:flex;flex-direction:column;gap:8px}

/* Footer */
.footer{background:var(--yoru);color:var(--washi);border-top:3px solid var(--sumi)}
.footer-inner{max-width:1280px;margin:0 auto;padding:56px 28px 32px;display:flex;flex-direction:column;gap:28px}
.footer-word{font-family:'Dela Gothic One';font-size:clamp(52px,13vw,190px);line-height:.85;color:var(--beni);text-shadow:5px 5px 0 var(--momo);word-break:break-word}
.footer-meta{display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap;font-family:'DM Mono';font-size:12px;letter-spacing:.14em}

/* ---------- mobile ---------- */
@media (max-width:640px){
  .header-inner{padding:12px 16px}
  .nav{gap:12px;font-size:13px}
  .nav .cta{padding:8px 12px;font-size:12px}
  .brand-name .jp{font-size:20px}

  .hero{padding:32px 16px 40px;gap:28px}
  .hero .desc{font-size:16px}
  .hero-ctas .btn-primary,.hero-ctas .btn-secondary{padding:14px 20px;font-size:16px}
  .hero-visual .seal{left:-8px;top:-8px;width:110px;height:110px}
  .hero-visual .seal-text{font-size:12px}
  .hero-visual .seal-text b{font-size:17px}
  .hero-visual .vertical-text{font-size:clamp(26px,8vw,60px);right:10px}

  .marquee-track{font-size:16px}

  .sky-inner{padding:28px 16px 36px;gap:16px}
  .sky-head h2{font-size:clamp(28px,7vw,64px)}
  .sky-canvas svg{height:300px}
  .sky-hint{display:none}
  .sky-zoom button{width:40px;height:40px;font-size:18px}
  .code-search input{width:100%}

  .register-names .names{font-size:22px}
  .register-photo{max-height:220px}

  .how,.zodiac-inner,.publish-inner{padding:36px 16px}
  .how-card{padding:18px;min-height:200px}
  .how-card .num{font-size:48px}
  .zodiac-tile{min-height:150px;padding:14px}
  .zodiac-tile .jp{font-size:36px}

  .publish-left{padding:22px}
  .publish-form{padding:20px}
  .form-row{grid-template-columns:1fr}
  .publish-confirm{padding:18px}
  .payment-box{padding:14px}
  .payment-qr{width:180px;height:180px}
  .payment-number-btn{padding:8px 14px;font-size:15px}

  .footer-inner{padding:36px 16px 24px}
}
