@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@400;500;600;700;800;900&display=swap');
:root{--bg:#0b0b0e;--panel:#17171d;--line:#2a2932;--text:#f6f5fa;--muted:#a5a1b2;--accent:#bc9aff;--pink:#ff94bd;--font:'Noto Sans KR',sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:95px}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--font);font-size:14px;color-scheme:dark}button,input,select{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer;background:none;border:0;color:inherit}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible{outline:2px solid var(--accent);outline-offset:4px}button:disabled{opacity:.35;cursor:default}h1,h2,h3,p{margin:0}h2{font-size:24px;letter-spacing:-1px;font-weight:800}h3{font-size:17px;letter-spacing:-.6px}.header{height:82px;max-width:1120px;margin:auto;display:flex;align-items:center;justify-content:space-between;padding:0 32px}.brand{font-size:28px;letter-spacing:-1.8px;font-weight:900;display:inline-flex;align-items:center;gap:7px}.brand>span{color:var(--accent);font-size:24px}.header nav{display:flex;gap:30px;font-size:12px;font-weight:600;color:#9591a2}.header nav .active{color:#ece7f5}.shelf-button{border:1px solid #393540;background:#19171e;border-radius:8px;padding:10px 15px;font-size:12px}.shelf-button>span{margin-right:6px;color:#c6b4df}.layout{max-width:1056px;margin:0 auto}.feature{height:414px;position:relative;border-radius:16px;overflow:hidden;background:#171123;isolation:isolate;border:1px solid #3a2b4b}.portrait{background-image:url('assets/narrators-v1.png');background-repeat:no-repeat;background-size:200% 100%;background-position:0 0}.portrait.noel{background-position:100% 0}.feature-art{position:absolute;width:60%;height:160%;right:-1%;top:-10%;background-size:200% 100%}.feature-shade{position:absolute;inset:0;background:linear-gradient(90deg,#140e20 4%,#160e22 30%,#160e22c4 46%,transparent 70%),linear-gradient(0deg,#120c19a8,transparent 28%)}.feature-copy{position:relative;padding:49px 44px;z-index:1;max-width:520px}.feature-label{font-size:10px;font-weight:700;color:#cbabfa;border:1px solid #8870a366;padding:6px 10px;border-radius:4px;display:inline-block;letter-spacing:.3px}h1{font-size:40px;letter-spacing:-1.7px;line-height:1.35;margin:22px 0 15px;font-weight:900}.feature-copy p{font-size:13px;line-height:1.8;color:#c4b6d4}.solid{background:var(--accent);color:#1b102d;padding:14px 20px;border-radius:8px;font-weight:800;font-size:13px;display:flex;align-items:center;justify-content:space-between;gap:30px}.feature-copy .solid{margin-top:25px;min-width:220px}.solid:hover{filter:brightness(1.12)}.feature-side{position:absolute;right:20px;top:24px;font-size:8px;letter-spacing:2px;writing-mode:vertical-rl;color:#dfc9ff99}.feature-controls{position:absolute;bottom:22px;right:25px;display:flex;align-items:center;gap:8px}.feature-controls>span{font-size:11px;font-weight:800;margin-right:9px}.feature-controls i{font-style:normal;color:#9b8aaa;margin-left:5px}.feature-controls button{border:1px solid #c9b4df66;background:#140d2280;width:28px;height:28px;border-radius:50%;font-size:23px;line-height:1}.quick-links{display:grid;grid-template-columns:repeat(6,1fr);padding:28px 0 27px;border-bottom:1px solid var(--line);gap:10px}.quick-links button{display:flex;flex-direction:column;gap:10px;align-items:center;justify-content:center;font-size:11px;color:#c7c2d0;padding:7px}.quick-links button>span{display:grid;place-items:center;width:49px;height:49px;background:#1e1928;border:1px solid #3e304e;border-radius:17px;font-size:25px;color:#c9a8ff;transition:transform .2s}.quick-links button:nth-child(2)>span{background:#2d1924;color:#ff9dbc;border-color:#563044}.quick-links button:nth-child(3)>span{background:#24261a;color:#d0df8b;border-color:#454d2a}.quick-links button:nth-child(4)>span{background:#19232c;color:#9fcaf2;border-color:#2f4356}.quick-links button:hover>span{transform:translateY(-3px)}.catalog{padding-top:35px}.section-title{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:23px;gap:12px}.kicker{font-size:10px;color:var(--accent);font-weight:700;letter-spacing:.6px;display:block;margin-bottom:8px}.subtle{font-size:11px;color:var(--muted)}.category-tabs{display:flex;gap:7px;margin-bottom:24px;overflow-x:auto;padding:1px 1px 5px;scrollbar-width:none}.category-tabs button{white-space:nowrap;border:1px solid #35323e;border-radius:22px;padding:9px 17px;font-size:12px;color:#aaa4b8;background:#141219}.category-tabs button.selected{background:#f0e9ff;color:#251638;border-color:#f0e9ff;font-weight:800}.product-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:29px 22px}.product-card{display:block;text-align:left;padding:0;min-width:0}.product-cover{display:block;height:314px;border-radius:12px;position:relative;overflow:hidden;border:1px solid #3a3147;background:#22182e}.cover-image{position:absolute;inset:0;transition:transform .3s}.product-card:hover .cover-image{transform:scale(1.035)}.cover-shade{position:absolute;inset:0;background:linear-gradient(0deg,#0c0813 2%,#0c0813d1 16%,transparent 66%)}.cover-badge{position:absolute;top:12px;left:12px;background:#191121b8;backdrop-filter:blur(8px);border:1px solid #d8c1f244;border-radius:4px;padding:4px 7px;font-size:9px;font-weight:700;letter-spacing:.5px}.cover-badge.new{background:#ddbbff;color:#311447}.cover-copy{position:absolute;bottom:21px;left:20px;right:18px}.cover-copy>small{font-size:9px;letter-spacing:1px;color:#d7b6f9}.cover-copy>strong{display:block;font-size:28px;letter-spacing:-1px;line-height:1.25;margin-top:7px;font-weight:900;white-space:pre-line}.cover-copy>em{display:block;font-size:10px;font-style:normal;color:#c3a8d6;margin-top:9px}.product-card:nth-child(2) .cover-copy>small,.product-card:nth-child(5) .cover-copy>small{color:#ffbccb}.product-card:nth-child(3) .cover-image{filter:hue-rotate(20deg)}.product-card:nth-child(4) .cover-image{filter:hue-rotate(-18deg)}.product-info{padding:13px 1px 0;display:block}.product-info strong{display:block;font-size:14px;font-weight:700;letter-spacing:-.4px}.product-info>span{display:block;font-size:11px;color:#a39bad;margin-top:6px;line-height:1.6}.product-info>small{display:block;margin-top:9px;color:#cbb1ef;font-size:10px}.catalog-note{font-size:10px;color:#827a8c;line-height:1.7;margin-top:22px}.reader-invite{display:flex;align-items:center;gap:24px;margin:44px 0 47px;padding:25px 29px;background:linear-gradient(115deg,#241d31,#19151f);border:1px solid #3b2d4b;border-radius:12px}.invite-icon{font-size:49px;color:#a48cc3;position:relative;flex-shrink:0}.invite-icon>span{font-size:24px;position:absolute;top:-7px;right:-12px;color:#e4b6ff}.reader-invite .kicker{font-size:8px;letter-spacing:1px}.reader-invite h2{font-size:20px}.reader-invite p{font-size:11px;line-height:1.8;color:#aaa0b8;margin-top:8px}.reader-invite>button{margin-left:auto;white-space:nowrap;background:#31283e;padding:12px 16px;border-radius:7px;font-size:11px;font-weight:700;border:1px solid #514062}.reader-invite>button>span{margin-left:15px;color:var(--accent)}.voice-grid{display:grid;grid-template-columns:1fr 1fr;gap:17px}.voice-card{padding:0;display:flex;overflow:hidden;text-align:left;background:#17131e;border:1px solid #392d43;border-radius:11px}.voice-photo{display:block;flex-shrink:0;width:117px;min-height:166px}.voice-info{padding:23px 17px;flex:1;min-width:0}.voice-info small{color:#b5a0cc;font-size:10px}.voice-info strong{display:block;font-size:18px;margin:7px 0 12px;letter-spacing:-.7px}.voice-info i{float:right;font-style:normal;font-size:18px;color:#b5a0cc}.voice-info>span{font-size:10px;line-height:1.8;color:#ada1b9;display:block}.voice-info em{display:block;color:#8c7d9e;font-size:9px;font-style:normal;margin-top:12px}.daily{margin:36px 0;display:flex;align-items:center;gap:24px;background:#1a1920;border:1px solid #38313f;border-radius:11px;padding:27px}.daily-star{font-size:47px;color:#bf9cf0}.daily .kicker{font-size:8px;letter-spacing:1px}.daily h2{font-size:16px;letter-spacing:-.4px}.daily p{color:#9890a4;font-size:10px;margin-top:9px}.daily button{margin-left:auto;border:1px solid #655373;border-radius:50%;width:34px;height:34px;font-size:22px;flex-shrink:0;color:#c5b0de}.season{display:flex;justify-content:space-between;align-items:center;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:23px 0;gap:15px}.season .kicker{font-size:8px;letter-spacing:1px;color:#9d88b3}.season p{font-size:11px;color:#aea4ba}.theme-picker{display:flex;gap:6px}.theme-picker button{font-size:10px;padding:9px 12px;border:1px solid #42344e;background:#19131f;border-radius:22px;color:#a99bb6}.theme-picker button.selected{background:#3d2b51;color:#ead7ff;border-color:#70568e}footer{padding:34px 0 45px;color:#7f758e}footer .brand{color:#e7dfef;font-size:23px}footer>p{font-size:11px;margin-top:12px}footer>small{display:block;line-height:2;font-size:9px;margin-top:22px}.bottom-nav{position:fixed;bottom:0;left:50%;transform:translateX(-50%);width:min(100%,1056px);border-top:1px solid #39303f;background:#111014ed;backdrop-filter:blur(16px);height:65px;display:none;grid-template-columns:repeat(4,1fr);z-index:20;padding-bottom:env(safe-area-inset-bottom)}.bottom-nav>a,.bottom-nav>button{display:flex;flex-direction:column;gap:4px;align-items:center;justify-content:center;color:#8e849b;font-size:9px}.bottom-nav span{font-size:23px;line-height:1}.bottom-nav .selected{color:#d7b9ff}.mobile-only{display:none}[hidden]{display:none!important}
dialog{background:#15111b;color:#f3eafa;border:1px solid #544062;border-radius:16px;width:calc(100% - 30px);max-width:580px;padding:36px;max-height:90dvh;overflow:auto;overscroll-behavior:contain}dialog::backdrop{background:#000c;backdrop-filter:blur(6px)}body:has(dialog[open]){overflow:hidden}.close{position:absolute;right:12px;top:10px;color:#c5b1d5;font-size:27px;z-index:5;width:32px;height:32px;border-radius:50%;background:#17101ec9}.muted,.form-intro{font-size:12px;line-height:1.9;color:#a99ab8}.form-intro{margin:15px 0 22px}dialog h2{font-size:26px;line-height:1.5}.detail-banner{height:360px;border-radius:10px;margin:0 0 25px;position:relative;overflow:hidden;background:#20132d}.detail-banner .portrait{position:absolute;inset:0;background-size:200% 150%;background-position-y:10%}.detail-banner:after{content:'';position:absolute;inset:0;background:linear-gradient(0deg,#160f20,transparent 80%)}.detail-banner>strong{position:absolute;bottom:22px;left:22px;font-size:29px;z-index:1;white-space:pre-line;line-height:1.3;letter-spacing:-1px}.detail-description{font-size:13px;color:#c4b5ce;line-height:1.9;margin:14px 0 24px}.voice-options{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:14px 0 23px}.voice-option{border:1px solid #4a3858;border-radius:9px;text-align:left;padding:12px;color:#c5b3d4;display:flex;align-items:center;gap:10px}.voice-option.selected{border-color:#c29aef;background:#32203f;color:#eddcff}.mini-avatar{display:block;width:38px;height:45px;border-radius:6px;flex-shrink:0}.voice-option strong{font-size:12px;display:block}.voice-option small{font-size:9px;display:block;margin-top:5px}.full-width{width:100%}.detail-features{display:flex;gap:8px;font-size:10px;color:#bca4ce;margin:17px 0 22px}.detail-features>span{border:1px solid #3c2b48;background:#21152c;padding:6px 8px;border-radius:5px}.field{display:block;font-size:11px;margin:18px 0;color:#d5c5e1}.field input,.field select{display:block;width:100%;margin-top:8px;padding:12px;background:#211929;color:#eee1f8;border:1px solid #51405f;border-radius:7px;min-width:0}.field input::placeholder{color:#887591}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.check{display:flex;align-items:flex-start;font-size:10px;color:#b5a5c1;line-height:1.8;gap:8px;margin:17px 0}.check input{accent-color:#b38cde;margin-top:4px}.form-foot{font-size:10px;line-height:1.8;color:#897695;margin:14px 0 0}.back-link{font-size:11px;color:#ba9ed1;padding:0;margin-bottom:20px}.archive-item{border-top:1px solid #3e2c4b;padding:18px 0;display:flex;justify-content:space-between;gap:12px;align-items:center}.archive-item p{font-size:12px}.archive-item small{font-size:10px;color:#a48daf;display:block;margin-top:7px}.archive-item button{font-size:10px;border:1px solid #65487a;border-radius:6px;padding:7px 9px}.archive-item button+button{margin-left:5px}#archive-list{margin-top:25px}#toast{position:fixed;bottom:86px;left:50%;transform:translateX(-50%);max-width:90%;background:#e5d0ff;color:#291837;padding:13px 20px;border-radius:9px;font-size:11px;line-height:1.7;z-index:100;opacity:0;pointer-events:none;transition:opacity .2s}#toast.show{opacity:1}
/* A single, vertical webtoon reader for every narrator. */
dialog.webtoon-mode{position:fixed;inset:0;width:100%;height:100dvh;max-width:none;max-height:none;margin:0;padding:0;border:0;border-radius:0;background:#09080c;overflow-y:auto}.webtoon-mode>.close{position:fixed;right:20px;top:12px;z-index:50;background:transparent;border:0;box-shadow:none;color:white;display:grid;place-items:center;padding:0;line-height:1}.reader-top{position:sticky;top:0;z-index:30;background:#100d15ee;backdrop-filter:blur(12px);border-bottom:1px solid #33243d;padding:16px 60px 15px 20px}.reader-top-inner{max-width:620px;margin:auto;display:flex;align-items:center;justify-content:space-between;gap:15px}.reader-top strong{font-size:12px}.reader-top span{font-size:10px;color:#ac90bd;display:block;margin-top:4px}.reader-top button{font-size:10px;border:1px solid #50355f;border-radius:5px;padding:7px 10px}.reader-progress{position:absolute;left:0;bottom:-1px;width:100%;height:2px;background:#2e1c3b}.reader-progress>span{height:2px;background:#b78de8;display:block;width:0;margin:0}.webtoon{max-width:560px;margin:auto;background:#100d15;--voice:#c5a0fa}.webtoon.noel{--voice:#f2b8c8;background:#170f13}.episode-cover{position:relative;height:660px;isolation:isolate;overflow:hidden}.episode-cover .portrait{position:absolute;inset:0}.episode-cover:after{content:'';position:absolute;inset:0;background:linear-gradient(0deg,#100d15 2%,#100d1599 30%,transparent 70%)}.noel .episode-cover:after{background:linear-gradient(0deg,#170f13 2%,#170f1399 30%,transparent 70%)}.episode-title{position:absolute;bottom:45px;left:30px;right:30px;z-index:1;text-align:center}.episode-title small{font-size:10px;letter-spacing:2px;color:var(--voice)}.episode-title h2{font-size:34px;line-height:1.4;margin-top:14px;letter-spacing:-1.7px;white-space:pre-line}.episode-title p{color:#c2adc9;font-size:11px;line-height:1.8;margin-top:15px}.episode-title .scroll-cue{display:block;margin-top:32px;color:var(--voice);font-size:20px}.comic-intro{text-align:center;padding:46px 30px 62px;color:#bdadca;font-size:13px;line-height:2.2}.comic-intro>small{display:block;color:#8d729e;font-size:9px;margin-bottom:22px;letter-spacing:2px}.comic-panel{margin:0 25px 40px;position:relative;background:#261835;overflow:hidden;border:1px solid #5e4374}.comic-panel.scene-a{height:500px}.comic-panel.scene-b{height:440px;margin-top:65px}.comic-panel .portrait{position:absolute;inset:0;background-size:220% 120%;background-position:2% 5%}.comic-panel .portrait.noel{background-position:98% 5%}.comic-panel.scene-b .portrait{background-size:270% 150%;background-position:8% 15%}.comic-panel.scene-b .portrait.noel{background-position:93% 15%}.panel-shade{position:absolute;inset:0;background:linear-gradient(0deg,#120b20e6,transparent 70%)}.panel-tag{position:absolute;top:16px;left:15px;font-size:9px;letter-spacing:1px;color:#f2dfff;background:#291832ba;padding:6px 9px;border:1px solid #c4a1dd55}.comic-narration{padding:38px 40px 58px;font-size:14px;line-height:2.4;color:#d1c0db;text-align:center;white-space:pre-line}.comic-break{font-size:40px;color:var(--voice);display:block;margin:25px 0 35px}.comic-quote{margin:0 28px 45px;padding:42px 23px;border-top:1px solid #684575;border-bottom:1px solid #684575;text-align:center}.comic-quote small{font-size:9px;letter-spacing:2px;color:var(--voice)}.comic-quote p{font-size:23px;line-height:1.7;letter-spacing:-.8px;font-weight:700;color:#eee0f8;margin-top:20px;white-space:pre-line}.episode-end{padding:22px 28px 55px;text-align:center}.episode-end>small{color:#ac87bd;font-size:9px;letter-spacing:2px}.episode-end h3{font-size:21px;margin:15px 0 22px}.episode-navigation{display:flex;gap:10px;margin-bottom:20px}.episode-navigation button{flex:1;padding:15px 10px;border:1px solid #684779;border-radius:8px;font-size:12px;background:#25172e}.episode-navigation .next{background:#d1b3ef;color:#281535;border-color:#d1b3ef;font-weight:700}.reader-actions{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}.reader-actions button{font-size:11px;color:#b49ac5;padding:8px}.preview-note{padding:25px 0 0;font-size:10px;color:#947da3;line-height:2;text-align:left;margin-top:18px;border-top:1px solid #38223f}.toc{position:fixed;inset:78px 15px auto auto;width:280px;max-width:calc(100% - 30px);z-index:40;background:#21162b;border:1px solid #74518b;border-radius:10px;padding:18px;box-shadow:0 15px 60px #0008}.toc h3{margin-bottom:12px;font-size:14px}.toc button{display:block;width:100%;text-align:left;padding:13px 8px;border-bottom:1px solid #493052;font-size:12px}.toc button.active{color:#d5afff;font-weight:800}.toc small{color:#9a7bab;display:block;font-size:9px;margin-top:13px;line-height:1.8}.reader-demo-tag{color:#baa1cd;font-size:9px;margin-left:10px}.noel .comic-panel{border-color:#70515a;background:#321d28}.noel .comic-quote{border-color:#72515d}
html[data-theme=winter]{--accent:#f0b3c8;--panel:#21151d}html[data-theme=winter] .feature{border-color:#65424f}html[data-theme=winter] .feature-shade{background:linear-gradient(90deg,#28131d 4%,#28131d 30%,#28131dc4 46%,transparent 70%),linear-gradient(0deg,#1d0e18b3,transparent 28%)}html[data-theme=winter] .feature-label{color:#f8bdcf;border-color:#e29fb755}
@media(max-width:1120px){.layout{margin:0 32px}.feature-art{width:65%;right:-3%}.voice-info{padding:20px 13px}.voice-info strong{font-size:16px}.voice-info>span{font-size:9px}.product-cover{height:29vw;min-height:260px}}
@media(max-width:760px){.header{padding:0 22px;height:72px}.header nav{gap:18px;font-size:10px}.layout{margin:0 22px}.feature{height:380px}.feature-copy{padding:40px 28px;max-width:410px}h1{font-size:33px}.feature-art{width:70%;right:-9%;height:145%;top:-2%}.feature-shade{background:linear-gradient(90deg,#140e20 0%,#160e22eb 30%,#160e2299 50%,transparent 80%),linear-gradient(0deg,#120c19b3,transparent 40%)}.product-grid{gap:22px 15px}.product-cover{min-height:240px}.cover-copy{left:15px;bottom:18px}.cover-copy>strong{font-size:23px}.cover-copy>small{font-size:8px}.product-info strong{font-size:12px}.product-info>span{font-size:10px}.reader-invite{padding:23px;gap:20px}.reader-invite h2{font-size:17px}.reader-invite p{font-size:10px}.voice-grid{grid-template-columns:1fr}.voice-photo{min-height:155px}.voice-info{padding:23px}.voice-info strong{font-size:19px}.voice-info>span{font-size:11px}.daily h2{font-size:14px}.daily{gap:18px}.daily-star{font-size:40px}.daily{padding:23px}}
@media(max-width:520px){html{scroll-padding-top:25px}.header{height:65px;padding:0 18px}.brand{font-size:25px}.brand>span{font-size:22px}.header nav{display:none}.shelf-button{padding:8px 12px;font-size:10px;border-color:#342d3c;background:#141118}.layout{margin:0 16px}.feature{height:430px;border-radius:12px}.feature-copy{padding:30px 22px;max-width:100%}.feature-label{font-size:8px;padding:5px 7px}h1{font-size:31px;letter-spacing:-1.4px;line-height:1.3;margin-top:20px;position:relative;max-width:250px}.feature-copy p{font-size:11px;line-height:1.85;max-width:200px}.feature-art{width:93%;height:120%;top:0;right:-24%;background-size:200% 100%}.feature-shade{background:linear-gradient(90deg,#140e20f2 0%,#160e22ce 27%,#160e2240 62%,transparent 100%),linear-gradient(0deg,#120c19fa,transparent 43%)}.feature-copy .solid{position:absolute;top:326px;left:22px;min-width:210px;font-size:12px;padding:13px 16px;gap:20px;margin:0}.feature-side{font-size:6px;right:12px;top:18px;letter-spacing:1.4px}.feature-controls{right:17px;bottom:15px;gap:6px}.feature-controls>span{font-size:9px;margin-right:2px}.feature-controls button{width:23px;height:23px;font-size:20px}.quick-links{padding:20px 0 22px;gap:3px}.quick-links button{font-size:9px;padding:3px 0;gap:9px}.quick-links button>span{width:39px;height:39px;border-radius:13px;font-size:22px}.catalog{padding-top:27px}.section-title{margin-bottom:20px;gap:8px}.kicker{font-size:9px;margin-bottom:6px}h2{font-size:21px;letter-spacing:-.8px}.subtle{font-size:9px;line-height:1.6}.category-tabs{gap:6px;margin-bottom:17px;margin-right:-16px;padding-right:16px}.category-tabs button{font-size:10px;padding:8px 14px}.product-grid{grid-template-columns:1fr 1fr;gap:24px 12px}.product-cover{height:61vw;min-height:0;max-height:310px;border-radius:9px}.cover-badge{left:9px;top:9px;font-size:7px;padding:4px 6px}.cover-copy{bottom:16px;left:13px;right:10px}.cover-copy>strong{font-size:clamp(20px,5.5vw,27px);letter-spacing:-.9px}.cover-copy>small{font-size:7px;letter-spacing:.7px}.cover-copy>em{font-size:8px;margin-top:7px}.product-info{padding-top:11px}.product-info strong{font-size:12px;line-height:1.6}.product-info>span{font-size:9px;margin-top:3px}.product-info>small{font-size:9px;margin-top:7px}.catalog-note{font-size:9px;line-height:1.9;margin-top:20px}.reader-invite{margin:28px 0 34px;padding:22px 18px;gap:14px;flex-wrap:wrap}.invite-icon{font-size:36px}.invite-icon>span{font-size:18px}.reader-invite .kicker{font-size:7px;letter-spacing:.8px}.reader-invite h2{font-size:16px}.reader-invite p{font-size:10px;line-height:1.9}.reader-invite>button{margin:0;width:100%;padding:11px 15px;display:flex;justify-content:space-between;align-items:center}.reader-invite>button>span{font-size:16px}.voice-grid{gap:12px}.voice-photo{width:107px;min-height:151px}.voice-info{padding:19px 14px}.voice-info small{font-size:9px}.voice-info strong{font-size:17px;margin:7px 0 9px}.voice-info>span{font-size:9px}.voice-info em{font-size:8px;margin-top:10px}#voices .section-title{align-items:center}#voices .subtle{max-width:79px;text-align:right}.daily{margin:27px 0;padding:21px 17px;gap:13px}.daily-star{font-size:30px}.daily .kicker{font-size:7px}.daily h2{font-size:12px;line-height:1.75;letter-spacing:-.5px}.daily p{font-size:9px;margin-top:7px}.daily button{width:28px;height:28px;font-size:20px}.season{padding:22px 0;flex-wrap:wrap;gap:17px}.season .kicker{font-size:7px;letter-spacing:.6px}.season p{font-size:10px}.theme-picker button{font-size:9px}.bottom-nav{display:grid;height:calc(62px + env(safe-area-inset-bottom))}footer{padding:30px 0 100px}footer small{font-size:8px}.mobile-only{display:block}dialog{padding:30px 22px;border-radius:12px}dialog h2{font-size:23px}.detail-banner{height:300px}.detail-banner>strong{font-size:26px}.detail-description{font-size:12px}.voice-option{padding:10px 8px;gap:7px}.voice-option strong{font-size:10px}.voice-option small{font-size:8px}.mini-avatar{width:30px;height:40px}.detail-features{font-size:9px;gap:5px}.detail-features>span{padding:6px}.reader-top{padding:14px 52px 13px 15px}.reader-top strong{font-size:11px}.reader-top span{font-size:9px}.webtoon-mode>.close{right:12px;top:12px;font-size:25px;width:28px;height:28px}.episode-cover{height:128vw;max-height:660px;min-height:450px}.episode-title{left:23px;right:23px;bottom:28px}.episode-title h2{font-size:29px}.episode-title small{font-size:8px;letter-spacing:1px}.episode-title p{font-size:10px}.comic-intro{padding:38px 25px 48px;font-size:12px}.comic-panel{margin-left:18px;margin-right:18px}.comic-panel.scene-a{height:115vw;max-height:500px}.comic-panel.scene-b{height:105vw;max-height:440px;margin-top:40px}.comic-narration{padding:25px 29px 40px;font-size:13px}.comic-quote{margin:0 22px 35px;padding:35px 17px}.comic-quote p{font-size:21px}.episode-end{padding:22px 22px 40px}.episode-end h3{font-size:19px}.episode-navigation button{font-size:11px}.toc{inset:76px 12px auto auto}html[data-theme=winter] .feature-shade{background:linear-gradient(90deg,#28131df2,#28131dbe 27%,#28131d40 62%,transparent),linear-gradient(0deg,#1d0e18fa,transparent 43%)}}
/* Preserve the original character proportions at every crop size. */
.portrait{background-size:200% auto;background-position:0 12%}.portrait.noel{background-position:100% 12%}
.feature-art{width:57%;height:100%;top:0;right:0;background-size:200% auto;background-position-y:24%}
.detail-banner .portrait{background-size:200% auto;background-position-y:30%}
.comic-panel .portrait{background-size:220% auto;background-position:2% 20%}.comic-panel .portrait.noel{background-position:98% 20%}
.comic-panel.scene-b .portrait{background-size:270% auto;background-position:8% 25%}.comic-panel.scene-b .portrait.noel{background-position:93% 25%}
@media(max-width:760px){.feature-art{width:66%;right:-4%;background-position-y:20%}}
@media(max-width:520px){.feature-art{width:84%;height:100%;right:-20%;background-position-y:0%}.product-cover .portrait{background-position-y:5%}.voice-photo{background-position-y:20%}.detail-banner .portrait{background-position-y:28%}}
/* Reference-based hacker: standalone portrait; Noel keeps the original atlas. */
.portrait.zero{background-image:url('assets/hacker-reference-v2.png');background-size:cover;background-position:center 15%}
.feature-art.zero{background-size:cover;background-position:center 18%}
.detail-banner .portrait.zero{background-size:cover;background-position:center 24%}
.comic-panel .portrait.zero{background-size:cover;background-position:center 12%}
.comic-panel.scene-b .portrait.zero{background-size:125% auto;background-position:50% 18%}
.episode-cover .portrait.zero{background-size:cover;background-position:center top}
.voice-photo.zero,.mini-avatar.zero{background-position:center 12%}
.product-card .cover-image.zero{filter:none;background-position:center 12%}
.webtoon.zero{--voice:#81e7e1}
.webtoon.zero .comic-panel{border-color:#305b61;background:#10292c}
.webtoon.zero .comic-quote{border-color:#305b61}
@media(max-width:520px){.feature-art.zero{background-position:center top}.comic-panel.scene-b .portrait.zero{background-size:125% auto;background-position:50% 16%}}
/* Single-story introduction: character dialogue and one question at a time. */
.story-opening{height:460px;position:relative;overflow:hidden;isolation:isolate}
.story-opening>.portrait{position:absolute;inset:0}
.opening-shade{position:absolute;inset:0;background:linear-gradient(0deg,#100d15 0%,#100d1588 35%,transparent 75%)}
.noel .opening-shade{background:linear-gradient(0deg,#170f13 0%,#170f1388 35%,transparent 75%)}
.opening-copy{position:absolute;bottom:30px;left:30px;right:30px;text-align:center}
.opening-copy small{font-size:8px;color:var(--voice);letter-spacing:1.5px}
.opening-copy h2{font-size:30px;white-space:pre-line;line-height:1.4;margin-top:16px}
.opening-copy p{font-size:11px;color:#d3bbdf;margin-top:15px}
.story-narration{text-align:center;padding:30px 30px 45px;font-size:13px;line-height:2.3;color:#c4b3d0}
.conversation-log{padding:0 26px}
.chat-exchange{margin-bottom:34px}
.npc-message{display:flex;gap:12px;align-items:flex-start}
.chat-avatar{width:42px;height:51px;display:block;border:1px solid #584263;border-radius:9px;flex-shrink:0}
.npc-message>div{flex:1;min-width:0}.npc-message small{color:var(--voice);font-size:10px;display:block;margin:2px 0 8px}
.npc-message p{background:#2b1d36;border:1px solid #50355e;border-radius:0 13px 13px 13px;font-size:13px;line-height:1.95;padding:16px 18px;color:#ecddf4;overflow-wrap:anywhere}
.zero .npc-message p{background:#14282c;border-color:#295057}.noel .npc-message p{background:#341e29;border-color:#66404f}
.user-message{display:flex;justify-content:flex-end;align-items:center;gap:10px;margin-top:17px;padding-left:54px}
.user-message p{background:#d4b3ee;color:#2c1439;padding:10px 17px;border-radius:13px 0 13px 13px;font-size:12px;overflow-wrap:anywhere}
.zero .user-message p{background:#a8e1de;color:#173337}.user-message button{font-size:9px;color:#b79cc9;white-space:nowrap;padding:5px 0}
.conversation-current{padding:0 26px 50px;scroll-margin-top:100px}.conversation-step{display:block;text-align:right;font-size:9px;color:#967fa5;margin-bottom:15px;letter-spacing:.5px}
#conversation-form{padding-left:54px;margin-top:22px}#conversation-form .solid{font-size:12px;margin-top:17px}
.unknown-choice{font-size:11px;border:1px solid #715183;color:#d1b5e0;border-radius:7px;padding:10px 15px;margin-bottom:8px;width:100%}
.conversation-current>.form-foot{padding-left:54px;font-size:9px;line-height:1.9}
.story-review-line{font-size:13px;color:#c7b1d3;line-height:2.1;margin:18px 0 25px;white-space:pre-line}
.birth-summary{border-top:1px solid #4b3459;border-bottom:1px solid #4b3459;padding:8px 0;margin:24px 0}
.birth-summary>div{display:flex;justify-content:space-between;gap:20px;padding:12px 0;font-size:12px}
.birth-summary dt{color:#a88fba}.birth-summary dd{margin:0;color:#e4d0ee;overflow-wrap:anywhere}.birth-summary dd button{font-size:9px;color:#a98abc;padding:3px 0 3px 12px}
.checkout-scene{padding:25px 30px 55px;text-align:center}.checkout-lock{color:var(--voice);font-size:60px;margin-bottom:20px}
.checkout-scene h2{font-size:25px;line-height:1.5}.checkout-scene .kicker{color:var(--voice);font-size:9px}
.ending-preview{text-align:left;background:#1c1325;border:1px solid #4b315b;border-radius:12px;padding:9px 19px;margin:25px 0}
.ending-preview>span{display:flex;align-items:center;gap:13px;padding:13px 0;color:#d1b9df;font-size:12px;border-bottom:1px solid #35213f}
.ending-preview>span:last-child{border:0}.ending-preview i{font-style:normal;font-size:9px;color:#9f7bb2}.ending-preview b{margin-left:auto;color:#866498;font-weight:400}
.checkout-card{text-align:left;padding:24px;border:1px solid #573c67;border-radius:12px;background:#22172c;margin:24px 0}
.checkout-card>small{font-size:9px;color:#a68cba}.checkout-card h3{font-size:17px;margin-top:9px}.checkout-card>p{color:#b299c4;font-size:10px;margin:10px 0 23px}
.checkout-card>div{display:flex;justify-content:space-between;align-items:center;font-size:11px;margin-top:14px;color:#b199c4}.checkout-card strong{font-size:14px;color:#ead7f8}
.checkout-disclosure{font-size:10px;color:#b19bc0;line-height:1.9;margin-top:16px}.checkout-back{margin:24px 0 0;font-size:11px}
.order-page{text-align:left}.order-page>.kicker,.order-page>h2,.order-page>.scene-review-copy{text-align:center}.order-heading{font-size:13px;margin:26px 0 10px;color:#ead7f8}.order-page .check{margin-top:22px}.order-status{min-height:18px;margin:12px 0;font-size:12px;color:#f2b8c6}.order-page .checkout-card strong{font-size:22px;color:var(--voice,var(--accent))}.order-method{display:grid;gap:6px;padding:16px 18px;border:1px solid #573c67;border-radius:12px;background:#22172c}.order-method strong{font-size:13px;color:#ead7f8}.order-method span{font-size:11px;line-height:1.7;color:#b19bc0}.order-steps{list-style:none;display:grid;gap:14px;margin:26px 0 0;padding:0}.order-steps li{display:grid;grid-template-columns:28px 1fr;gap:8px}.order-steps b{font-size:12px;color:var(--voice,var(--accent))}.order-steps strong{display:block;font-size:12px;color:#ead7f8}.order-steps span{display:block;margin-top:3px;font-size:11px;line-height:1.6;color:#b19bc0}.order-footer{display:grid;grid-template-columns:1fr 2fr;gap:10px}.order-footer button{min-height:48px;margin:0}#order-back{border:1px solid #573c67;border-radius:8px;background:none;color:#ead7f8;font:inherit;font-size:13px;cursor:pointer}.order-footer .solid,.pay-window .solid{justify-content:center;text-align:center}.order-footnote{margin-top:12px;font-size:10px;line-height:1.7;color:#8f7ea0}.pay-window{width:calc(100% - 40px);max-width:360px;padding:28px;text-align:center}.pay-window::backdrop{background:#000a}.pay-window h3{font-size:15px;margin-top:8px}.pay-window>strong{display:block;margin:14px 0;font-size:24px;color:var(--accent)}.pay-window>p:not(.kicker){margin-bottom:18px;font-size:11px;line-height:1.7;color:#b19bc0}.pay-window button:not(.solid){width:100%;margin-top:8px;padding:11px;border:1px solid #573c67;border-radius:8px;background:none;color:#ead7f8;font:inherit;font-size:12px;cursor:pointer}
.result-heading{padding:35px 28px 25px}.result-heading small{display:block;font-size:9px;letter-spacing:1.5px;color:var(--voice)}.result-heading>span{display:block;font-size:14px;color:#c1a4d1;margin-top:12px}
.comic-panel.result-panel{height:490px;margin-bottom:0}.result-copy{padding:35px 32px 45px}.result-copy h2{font-size:28px;line-height:1.5;margin-bottom:25px;letter-spacing:-1px}.result-copy p{font-size:13px;line-height:2.3;color:#cbb8d7}
.result-page-dots{display:flex;gap:7px;justify-content:center;margin:0 0 26px}.result-page-dots>span{width:6px;height:6px;background:#5d3e6e;border-radius:50%}.result-page-dots>.active{width:22px;border-radius:9px;background:var(--voice)}
@media(max-width:520px){.story-opening{height:113vw;max-height:460px;min-height:350px}.opening-copy{left:23px;right:23px;bottom:25px}.opening-copy h2{font-size:26px}.opening-copy p{font-size:10px}.story-narration{padding:25px 25px 35px;font-size:12px}.conversation-log{padding:0 20px}.conversation-current{padding:0 20px 40px}.npc-message{gap:9px}.chat-avatar{width:34px;height:43px}.npc-message p{padding:13px 14px;font-size:12px}.npc-message small{font-size:9px}.user-message{padding-left:43px}.user-message p{font-size:11px}.conversation-current>.form-foot,#conversation-form{padding-left:43px}.conversation-step{font-size:8px}.story-review-line{font-size:12px}.birth-summary>div{font-size:11px}.checkout-scene{padding:20px 22px 40px}.checkout-scene h2{font-size:22px}.checkout-card{padding:20px}.comic-panel.result-panel{height:110vw;max-height:490px}.result-copy{padding:28px 25px 36px}.result-copy h2{font-size:24px}.result-copy p{font-size:12px}}
.content-host{display:flex;align-items:center;gap:12px;border-top:1px solid #44314f;border-bottom:1px solid #44314f;padding:17px 0;margin:23px 0}.content-host small{display:block;color:#a48bb6;font-size:9px;margin-bottom:7px}.content-host strong{font-size:14px}
.coming-cover{background:radial-gradient(ellipse at 60% 25%,#4a234b,#17121e 72%)}.coming-cover.money{background:radial-gradient(ellipse at 60% 25%,#61532b,#17160e 72%)}.coming-cover.business{background:radial-gradient(ellipse at 60% 25%,#243954,#0f151f 72%)}.coming-cover.tarot{background:radial-gradient(ellipse at 60% 25%,#473373,#16111f 72%)}.coming-cover.reunion{background:radial-gradient(ellipse at 60% 25%,#2c3f66,#0e1220 72%)}.coming-symbol{position:absolute;left:0;right:0;text-align:center;top:18%;font-size:100px;color:#d5b6ec55;font-family:serif}.upcoming .cover-badge{font-size:8px;color:#beb0ca}.upcoming .product-info small{color:#8d809b}.coming-detail{height:160px;border:1px solid #493852;border-radius:10px;display:grid;place-items:center;margin:15px 0 24px}.coming-detail>span{font-size:70px;color:#d4bee5}.sample-selector{text-align:left;border:1px dashed #5e4270;border-radius:9px;padding:0 18px 18px;margin:24px 0}.sample-selector p{font-size:10px;line-height:1.9;color:#bda3cd}.sample-selector .field{margin-bottom:11px}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}}

.content-share{display:block;margin:12px 0 18px}
.saved-summary{margin:0 24px 24px;padding:24px;border:1px solid #305b61;border-radius:12px;background:#102025}.saved-summary h2{font-size:18px;margin-bottom:20px}.saved-summary dt{font-size:12px;font-weight:700;color:#80ddd2;margin-top:18px}.saved-summary dd{margin:7px 0 0;font-size:13px;line-height:1.9;color:#d5e2e1;overflow-wrap:anywhere}.saved-summary dt:first-child{margin-top:0}
.external-cover{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.external-cover-placeholder{position:absolute;inset:0;display:grid;place-items:center;background:radial-gradient(ellipse at 65% 25%,#34585b,#15121e 75%);color:#b1e3dd88;font-size:80px;font-weight:800}

.feature-controls button{padding:0;display:grid;place-items:center;flex-shrink:0;aspect-ratio:1}
.feature-controls button svg{display:block}
#daily-next{padding:0;display:grid;place-items:center;line-height:1;aspect-ratio:1}
#daily-next svg{display:block}
/* Character stories grow horizontally as characters are registered. */
#voices .voice-grid{display:flex;gap:17px;overflow-x:auto;scroll-snap-type:x mandatory;scroll-padding-inline:1px;padding:1px 1px 12px;overscroll-behavior-x:contain;scrollbar-width:thin;scrollbar-color:#514062 transparent}
#voices .voice-card{flex:0 0 calc((100% - 17px)/2);scroll-snap-align:start}
#voices .voice-photo{position:relative;overflow:hidden}
#voices .voice-photo .character-cover{object-position:50% 20%}
#voices .section-title>.subtle{margin-left:auto}
.character-controls{display:flex;gap:7px;flex-shrink:0}
.character-controls button{width:30px;height:30px;padding:0;border:1px solid #514062;border-radius:50%;display:grid;place-items:center;line-height:1;flex-shrink:0}
.character-controls button svg{display:block}
@media(max-width:600px){#voices .voice-card{flex-basis:90%}#voices .section-title>.subtle{display:none}}
/* Each authored title line occupies its own row. */
.cover-copy>strong>.cover-title-line{display:block;white-space:nowrap}
/* Catalog artwork and caption refinements. */
.product-cover .cover-shade{opacity:.9}
.product-cover .cover-copy>small,.product-cover .cover-copy>em{position:relative;left:3px}
.product-card[data-product="tarot"] .cover-copy>strong{font-size:clamp(20px,2.3vw,26px);letter-spacing:-1px}

/* Independently illustrated content covers */
.character-cover{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 22%;display:block}.coming-detail.has-character-art{position:relative;overflow:hidden;height:340px}.coming-detail.has-character-art .character-cover{object-position:50% 26%}.product-card.upcoming .character-cover{filter:none}

/* Preserve the upper-body duo crop without clipping either face. */
.product-cover.compatibility{background:#1b080d}.product-cover.compatibility .character-cover{object-fit:contain;object-position:center top}.coming-detail.compatibility.has-character-art{height:auto;aspect-ratio:1.15}.coming-detail.compatibility.has-character-art .character-cover{object-fit:contain;object-position:center}

.catalog-empty{grid-column:1/-1;padding:60px 20px;text-align:center;color:var(--muted);font-size:13px}.product-cover.marriage .character-cover{object-fit:contain;object-position:center top}.product-cover.marriage{background:#1b1821}.coming-detail.marriage.has-character-art{height:auto;aspect-ratio:1.05}.coming-detail.marriage.has-character-art .character-cover{object-fit:contain;object-position:center}
/* school-mate character (하람) */
.portrait.mate{background-image:url('assets/school/haram-ch-2.png');background-size:cover;background-position:50% 12%}
.webtoon.mate{--voice:#ffd37a;background:#17130d}
.webtoon.mate .comic-panel{border-color:#5b4a2a;background:#2a2114}
.webtoon.mate .comic-quote{border-color:#5b4a2a}
/* moon-reunion character (카엘) */
.portrait.moon{background-image:url('assets/moon/kael-cover.png');background-size:cover;background-position:50% 18%}
.webtoon.moon{--voice:#c9d8ff;background:#0e1220}
.webtoon.moon .comic-panel{border-color:#34436a;background:#161d33}
.webtoon.moon .comic-quote{border-color:#34436a}
/* 홈 카드: 어떤 운인지 보여 주는 해시태그 */
/* 오른쪽 위(왼쪽 위 배지와 같은 높이). 글자는 line-height 1로 상자 가운데에 맞춘다(한글 폰트는 기본 줄높이에서 아래로 처져 보인다). */
.cover-tags{position:absolute;top:12px;right:12px;left:auto;display:flex;flex-wrap:wrap;justify-content:flex-end;gap:4px;max-width:65%}.cover-tags>i{display:inline-flex;align-items:center;height:20px;font-style:normal;font-size:10px;line-height:1;font-weight:700;color:#f3e9ff;background:#1a1224b3;border:1px solid #d8c1f255;border-radius:20px;padding:0 8px 1px;backdrop-filter:blur(6px)}
@media(max-width:520px){.cover-tags{top:9px;right:9px;gap:3px}.cover-tags>i{height:16px;font-size:8px;padding:0 6px 1px}}
/* 정통사주 character (무진 법사). */
.portrait.mujin{background-image:url('assets/mujin/mujin-cover.webp');background-size:cover;background-position:50% 15%}
.webtoon.mujin{--voice:#ff9b8a;background:#170b0b}
.webtoon.mujin .comic-panel{border-color:#6e2a26;background:#2a1311}
.webtoon.mujin .comic-quote{border-color:#6e2a26}
/* money character (금고지기). 카드·상세 그림은 금고지기 표지, 본편 장면은 school 에셋을 임시로 쓴다. */
.portrait.keeper{background-image:url('assets/money/keeper-cover.webp');background-size:cover;background-position:45% 15%}
.webtoon.keeper{--voice:#f3cf6b;background:#161208}
.webtoon.keeper .comic-panel{border-color:#6b5520;background:#2a2010}
.webtoon.keeper .comic-quote{border-color:#6b5520}
