@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@400;500;600;700;800&family=Noto+Serif+SC:wght@500;600;700;800&display=swap');
:root{--blue:#458fff;--ink:#0f2248;--muted:#8493af;--line:#dfebfc;--shadow:0 10px 28px rgba(61,113,177,.07);font-family:'Noto Sans SC','PingFang SC','Microsoft YaHei',sans-serif;color:var(--ink);background:#edf5ff}*{box-sizing:border-box}body{margin:0}button,input,textarea,select{font:inherit}button{cursor:pointer}button:disabled{opacity:.55;cursor:wait}#app{min-height:100vh}.page{min-height:100vh;background:linear-gradient(180deg,#e5f2ff,#f7fbff 38%,#eff7ff);padding-bottom:30px}.wrap{max-width:910px;margin:auto;padding:0 22px}.icon{display:inline-grid;place-items:center;width:25px;height:25px;flex:none}.icon svg{width:100%;height:100%;fill:none;stroke:currentColor;stroke-width:1.85;stroke-linecap:round;stroke-linejoin:round}.icon.large{width:32px;height:32px}.top{height:68px;display:flex;align-items:center}.back,.round{border:0;background:rgba(255,255,255,.75);width:46px;height:46px;border-radius:15px;color:#22385d;display:grid;place-items:center}.hero{height:230px;position:relative;display:flex;align-items:center;overflow:hidden}.hero:before{content:'';position:absolute;inset:0;background:url('/static/assets/create-world.png') center 38%/cover}.hero:after{content:'';position:absolute;inset:0;background:linear-gradient(90deg,#eaf4ff 0%,rgba(234,244,255,.96) 29%,rgba(234,244,255,.27) 76%,transparent)}.hero-copy{position:relative;z-index:1}.hero h1,.review-hero h1{font:800 clamp(33px,5vw,53px) 'Noto Serif SC',serif;margin:0 0 10px;letter-spacing:.04em}.hero p,.review-hero p{font-size:18px;color:#7284a2;margin:0}.hero-quote{position:absolute;z-index:1;right:3%;top:32px;font:600 18px/1.7 'Noto Serif SC',serif;color:#4895fa;transform:rotate(-8deg)}.section{background:rgba(255,255,255,.96);border:1px solid #e2edfc;border-radius:27px;padding:23px 26px;margin:0 0 17px;box-shadow:var(--shadow)}.section-head{display:flex;align-items:center;gap:13px;margin-bottom:17px}.section-head>.icon{color:var(--blue)}.section-head h2{font-size:21px;margin:0}.section-head p{font-size:13px;color:var(--muted);margin:2px 0 0}.push{margin-left:auto}.link{border:0;background:none;color:#3188ff;font-weight:700;white-space:nowrap}.outline-wrap{position:relative;border:1.5px solid #dce7f7;background:#f9fbff;border-radius:22px;padding:15px 18px 38px}.outline-wrap textarea{display:block;width:100%;height:180px;border:0;resize:vertical;outline:0;background:transparent;color:#17325b;font-size:16px;line-height:1.7}.outline-wrap textarea::placeholder{color:#a6b3c7}.counter{position:absolute;right:18px;bottom:10px;color:#a4aec0;font-size:13px}.options{display:grid;grid-template-columns:repeat(3,1fr);gap:11px}.option{border:1.5px solid transparent;background:#f2f5fa;color:#263a5c;border-radius:16px;padding:14px 7px;font-size:17px;font-weight:700;text-align:center}.option.selected{background:linear-gradient(135deg,#e7f1ff,#f4f9ff);border-color:#3589ff;color:#2179f2}.option small{display:block;color:#8f9db5;font-size:12px;font-weight:400;margin-top:4px}.option.selected small{color:#61a0f4}.template{display:flex;gap:15px;align-items:center;background:#f9fbff;border:1px solid #dfeafa;border-radius:18px;padding:12px}.template img{width:72px;height:60px;object-fit:cover;border-radius:12px}.template strong{flex:1}.primary{border:0;border-radius:21px;background:linear-gradient(110deg,#418afa,#70aeff);color:#fff;font-size:19px;font-weight:800;padding:17px 22px;box-shadow:0 10px 22px #3b89fa35}.primary.wide{width:100%}.primary:hover{filter:brightness(1.04)}.secondary{border:1.5px solid #6fabff;border-radius:20px;background:#fff;color:#2e80f3;font-size:17px;font-weight:800;padding:15px 22px}.fine{text-align:center;color:#8192ad;font-size:13px;margin:12px 0 24px}.field{display:grid;gap:7px;color:#5b6b85;font-size:13px;font-weight:700}.field input,.field textarea,.field select{width:100%;background:#f9fbff;color:#233b61;border:1.5px solid #dce7f8;border-radius:14px;padding:11px 13px;outline:0}.field textarea{min-height:88px;resize:vertical;line-height:1.6}.field input:focus,.field textarea:focus,.field select:focus{border-color:#5d9efa;box-shadow:0 0 0 3px #dcecff}.fields{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.save-row,.world-row,.person-row{display:flex;align-items:center;gap:13px;background:#fff;border:1.4px solid #e1ebfa;border-radius:17px;padding:13px;margin:9px 0}.save-row .grow,.world-row .grow,.person-row .grow{flex:1;min-width:0}.save-row strong,.world-row strong,.person-row strong{display:block;font-size:17px}.save-row small,.world-row small,.person-row small{display:block;color:#8192aa;line-height:1.4;margin-top:4px;font-size:13px}.save-row button{border:0;background:#4c93fb;color:white;border-radius:13px;padding:9px 14px}.world-icon,.avatar{width:47px;height:47px;border-radius:14px;display:grid;place-items:center;background:#eaf4ff;color:#4c8fea;flex:none}.avatar{font:800 23px 'Noto Serif SC',serif}.metric{color:#f26d92;font-weight:800;white-space:nowrap}.metric.blue{color:#428afa}.review-hero{height:240px;background:url('/static/assets/create-world.png') right 35%/cover;position:relative}.review-hero:before{content:'';position:absolute;inset:0;background:linear-gradient(90deg,#eaf4ff 0%,rgba(234,244,255,.93) 40%,rgba(234,244,255,.15) 100%)}.review-hero .wrap{position:relative}.review-hero h1{margin-top:14px}.review-hero p{max-width:560px;line-height:1.6}.review-body{margin-top:-10px;position:relative}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:11px}.stat{background:#fff8e9;border-radius:17px;padding:15px;display:flex;align-items:center;gap:12px}.stat:nth-child(4n+2){background:#eafaf4}.stat:nth-child(4n+3){background:#fff0f4}.stat:nth-child(4n){background:#edf6ff}.stat .icon{width:46px;height:46px;border-radius:15px;background:#ffffffac;color:#eba921;padding:8px}.stat:nth-child(4n+2) .icon{color:#2fba86}.stat:nth-child(4n+3) .icon{color:#ef6d93}.stat:nth-child(4n) .icon{color:#438cfa}.stat b{display:block;font-size:24px;margin-top:2px}.stat strong{font-size:15px}.editbox{display:none;border-top:1px solid #e4edf9;margin-top:16px;padding-top:15px}.editbox.open{display:block}.edititem{border:1px solid #e3ecf8;border-radius:16px;padding:13px;margin:10px 0}.edititem .field{margin:8px 0}.edit-actions{display:flex;justify-content:space-between;margin-top:12px}.edit-actions button{border:0;background:#ebf4ff;color:#347fec;border-radius:11px;padding:9px 12px}.edit-actions button.danger{background:#fff0f0;color:#b95560}.review-footer{position:sticky;bottom:0;background:linear-gradient(180deg,#eff7ffb8,#eff7ff 25%);padding:15px 0 calc(15px + env(safe-area-inset-bottom));z-index:10}.review-footer .wrap{display:flex;gap:13px}.review-footer button{flex:1}.notice{background:#eaf4ff;color:#547ca9;border-radius:16px;padding:13px 16px;line-height:1.65;margin:12px 0}.notice.error{background:#fff0ee;color:#a44944}.notice.warn{background:#fff6e8;color:#946937}.notice.success{background:#e7f8ee;color:#368262}.play{min-height:100vh;padding-bottom:calc(102px + env(safe-area-inset-bottom));background:linear-gradient(#e7f3ff,#f8fbff 28%,#eaf4ff)}.play-inner{max-width:840px;margin:auto;padding:0 20px}.play-head{height:82px;display:flex;gap:10px;align-items:center}.play-title{flex:1;text-align:center}.play-title strong{font:700 27px 'Noto Serif SC',serif;letter-spacing:.1em;display:block}.play-title small{color:#8291aa;font-size:13px}.scene{height:330px;border-radius:26px;overflow:hidden;position:relative;background:#c3ddf7;box-shadow:var(--shadow)}.scene img{width:100%;height:100%;object-fit:cover}.scene:after{content:'';position:absolute;inset:50% 0 0;background:linear-gradient(transparent,#1c334b85)}.scene span{position:absolute;bottom:20px;left:24px;z-index:1;color:#fff;font-size:18px;text-shadow:0 2px 8px #233b50}.story{padding-top:17px}.story-bubble{background:#fff;border:1px solid #e4edfa;border-radius:25px;padding:22px 27px;margin-bottom:14px;line-height:1.85;font-size:18px;white-space:pre-wrap;box-shadow:0 5px 18px #598bcc0a}.story-bubble.player{background:#e7f1ff;margin-left:15%;color:#32669a}.choices{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:18px 0}.choice{background:#fff;border:1px solid #e3edfa;border-radius:22px;padding:14px;text-align:left;min-height:95px;color:#26436d}.choice .icon{color:#4c97fb;display:block;margin-bottom:6px}.choice strong{display:block;font-size:16px}.choice small{color:#8da0ba;font-size:12px}.composer{display:flex;align-items:center;gap:10px;background:#fff;border:1px solid #e0ebfa;border-radius:23px;padding:9px 11px 9px 17px;margin:17px 0;box-shadow:var(--shadow)}.composer>.icon{color:#529bfc}.composer textarea{flex:1;min-width:0;border:0;resize:vertical;outline:0;min-height:52px;max-height:160px;padding:8px 0;color:#203b61;background:none}.composer textarea::placeholder{color:#a2aec2}.composer button{border:0;background:#4e98fa;color:#fff;border-radius:50%;width:52px;height:52px;display:grid;place-items:center;flex:none}.bottom{position:fixed;z-index:30;bottom:0;left:0;right:0;background:#fffffff2;border-top:1px solid #e0e9f6;padding:7px 0 calc(7px + env(safe-area-inset-bottom));box-shadow:0 -5px 20px #5b8fbd16;backdrop-filter:blur(15px)}.bottom>div{max-width:840px;margin:auto;display:grid;grid-template-columns:repeat(4,1fr)}.bottom button{border:0;background:none;color:#8392aa;display:grid;justify-items:center;gap:4px;padding:7px;font-size:13px}.bottom button.active{color:#3b8cfa;font-weight:800}.bottom .icon{width:28px;height:28px}.bottom button.active:after{content:'';width:44px;height:3px;background:#3b8cfa;border-radius:3px}.module{background:#fff;border:1px solid #e4edfa;border-radius:25px;padding:20px;margin:15px 0;box-shadow:var(--shadow)}.module h2{margin:0 0 15px;font-size:22px}.tabs{display:flex;gap:7px;margin:12px 0}.tabs button{flex:1;border:1px solid #e3ebf7;border-radius:13px;background:#f5f8fd;color:#7487a4;padding:11px 5px;font-weight:700}.tabs button.active{background:#e8f3ff;border-color:#a5caff;color:#2c7bdf}.empty{padding:25px;text-align:center;color:#8c9ab0;background:#f6faff;border-radius:16px;line-height:1.7}.thread,.conversation{border:1px solid #e5edf8;border-radius:16px;padding:15px;margin:10px 0}.thread h3{margin:0 0 6px}.thread p{line-height:1.7;color:#546781}.thread small,.conversation small{color:#8b9bb2}.message{padding:10px 13px;border-radius:14px;background:#edf5ff;margin:8px 12% 8px 0;line-height:1.6}.message.player{margin:8px 0 8px 12%;background:#dcecff}.message small{display:block}.inline{display:flex;gap:8px;margin-top:12px}.inline input,.inline textarea{flex:1;min-width:0;border:1px solid #dce8f8;border-radius:13px;padding:10px}.inline button{border:0;background:#4b93f9;color:#fff;border-radius:13px;padding:10px 15px}.comment{border-left:3px solid #d7e7ff;padding:9px 12px;margin:7px 0;background:#f8fbff}.ancient{background:#e5edf0;color:#263548}.ancient-banner{height:260px;margin:-82px -20px 15px;padding:105px 26px 20px;position:relative;background:url('/static/assets/changan.png') center 48%/cover}.ancient-banner:before{content:'';position:absolute;inset:0;background:linear-gradient(90deg,#ecede2b9,transparent 83%)}.ancient-banner h1,.ancient-banner p{position:relative;font-family:'Noto Serif SC',serif;margin:0}.ancient-banner h1{font-size:42px}.ancient-banner p{margin-top:7px}.ancient .module{background:#fffaf0;border-color:#e7d9bd;border-radius:9px}.ancient .tabs button.active{background:#f8efdb;border-color:#d6bb8d;color:#835b35}.ancient .bottom button.active{color:#244d73}.ancient .bottom button.active:after{background:#244d73}.ancient-links{display:grid;grid-template-columns:repeat(2,1fr);gap:11px}.ancient-links button{border:1px solid #e8d8bb;background:#fff9ec;border-radius:9px;text-align:left;padding:17px;color:#31445a}.ancient-links strong{display:block;font:700 22px 'Noto Serif SC',serif;margin:8px 0}.ancient-links small{color:#958b7d}.tag{display:inline-block;border-radius:6px;padding:3px 7px;background:#e7f0ff;color:#4b79ae;font-size:12px}.ancient .tag{background:#ead7b7;color:#885d38}.loading{padding:28px;text-align:center;color:#5c8fc6}.loading:before{content:'✦';display:block;font-size:34px;animation:pulse 1.3s infinite}@keyframes pulse{50%{opacity:.25;transform:scale(.8)}}@media(max-width:650px){.wrap{padding:0 16px}.hero{height:195px}.hero h1{font-size:35px}.hero p{font-size:15px}.hero-quote{display:none}.section{padding:17px;border-radius:23px;margin-bottom:13px}.section-head h2{font-size:18px}.section-head p{font-size:11px}.section-head>.icon{width:27px;height:27px}.outline-wrap textarea{height:143px;font-size:15px}.options{gap:7px}.option{padding:12px 4px;font-size:15px}.option small{font-size:10px}.review-hero{height:220px}.review-hero h1{font-size:36px}.stats{grid-template-columns:repeat(2,1fr)}.stat{padding:11px}.stat .icon{width:41px;height:41px}.world-row,.person-row{padding:10px;gap:9px}.metric{font-size:13px}.fields{grid-template-columns:1fr}.review-footer .primary,.review-footer .secondary{font-size:15px;padding:13px 8px}.play-inner{padding:0 12px}.play-head{height:75px}.play-title strong{font-size:22px}.scene{height:235px;border-radius:20px}.story-bubble{font-size:16px;padding:18px 19px;border-radius:21px}.choices{gap:8px}.choice{min-height:85px;padding:10px;border-radius:17px}.choice strong{font-size:14px}.choice small{font-size:10px}.ancient-banner{margin:-75px -12px 15px;height:230px;padding-top:95px}.ancient-banner h1{font-size:35px}}@media(max-width:380px){.choices{grid-template-columns:1fr}.choice{min-height:65px}.section-head p{display:none}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important}}
.messages{display:grid;gap:12px;margin:18px 0}.message{max-width:83%;padding:12px 16px;border:1px solid var(--line);border-radius:20px;background:#fff;box-shadow:var(--shadow)}.message.player{justify-self:end;background:#e7f1ff;border-color:#d7e8ff}.message p{margin:0 0 6px;white-space:pre-wrap;line-height:1.65}.message small{color:var(--muted)}.forum-actions{display:flex;gap:10px;margin:12px 0 18px}.forum-actions .secondary{font-size:14px;padding:10px 16px}.forum-form{display:grid;gap:10px;padding:16px;background:#f5f9ff;border-radius:18px;margin:12px 0}.forum-form input,.forum-form textarea,.thread textarea{width:100%;padding:12px;border:1px solid var(--line);border-radius:12px;background:white;outline:none}.forum-form textarea,.thread textarea{min-height:90px;resize:vertical}.forum-form .primary{font-size:15px;padding:10px}.thread-list{display:grid;gap:13px}.thread{border:1px solid var(--line);background:linear-gradient(150deg,#fff,#f8fbff);border-radius:20px;padding:18px;box-shadow:var(--shadow)}.thread-meta{color:var(--muted);font-size:12px}.thread h3{font-size:18px;margin:7px 0}.thread p{white-space:pre-wrap;line-height:1.7;margin:0 0 12px}.comments{display:grid;gap:9px;margin-top:10px}.comment{display:grid;gap:3px;background:#f3f7fe;border-radius:13px;padding:10px 12px;font-size:14px}.comment strong{color:#3982e9}.thread .secondary{font-size:13px;padding:9px 13px;justify-self:start}.ancient .message.player{background:#f4ead5;border-color:#e7d8b9}.ancient .forum-form,.ancient .comment{background:#f6edda}.ancient .thread{background:linear-gradient(150deg,#fff9eb,#f7ead2);border-color:#ead9b7}
.save-actions{display:flex;flex-wrap:wrap;gap:9px;margin:12px 0}.save-actions .secondary{font-size:13px;padding:10px 13px}.snapshots{margin:14px 0}.danger{border:1px solid #f1b7bb;border-radius:16px;background:#fff6f7;color:#b94a55;padding:12px 18px;margin:10px 0 0 10px}.module>input{width:100%;padding:12px 14px;border:1px solid var(--line);border-radius:13px}
.play:not(.ancient) .ancient-links button{background:#f4f8ff;border-color:#dfebfb;border-radius:19px;color:#23456f}.play:not(.ancient) .ancient-links .icon{color:#4c95ff}.play:not(.ancient) .ancient-links small{color:#8396b7}
.ancient .terminal-tabs{background:rgba(255,250,237,.92);border:1px solid #e7dbc5;border-radius:12px;margin-bottom:15px}.ancient .terminal-tabs button{font-family:'Noto Serif SC',serif}.ancient-paper{display:grid;grid-template-columns:74px 1fr;min-height:215px;background:linear-gradient(140deg,#fff8e8,#f3e5c9);border:1px solid #decbaa;border-radius:15px;box-shadow:0 8px 18px #8566371f;overflow:hidden}.paper-rail{border-right:1px solid #d6be94;display:grid;place-items:center;padding:12px;font:700 23px/1.45 'Noto Serif SC',serif;letter-spacing:.12em;writing-mode:vertical-rl}.paper-rail span{display:block;border:1px solid #d6be94;padding:10px 5px}.paper-body{padding:26px 22px;background:linear-gradient(90deg,transparent 55%,#f1dfb858)}.paper-body small{color:#9f7652}.paper-body h2{font:800 28px/1.4 'Noto Serif SC',serif;margin:11px 0}.paper-body p{line-height:1.8;color:#665a4b;margin:0}.paper-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;margin:14px 0}.paper-card{min-height:120px;text-align:left;border:1px solid #e1cda8;border-radius:13px;background:linear-gradient(150deg,#fff9ed,#f2e6cc);padding:17px;color:#34435b}.paper-card .icon{color:#a17942}.paper-card strong{display:block;font:700 23px 'Noto Serif SC',serif;margin:5px 0}.paper-card small{color:#8c7e67}.rumor-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.rumor-card{text-align:left;min-height:103px;border:1px solid #e1cda8;border-radius:11px;background:#fff8e7;padding:12px;color:#3d4553}.rumor-card strong{display:block;font:700 17px 'Noto Serif SC',serif}.rumor-card small{display:block;margin-top:8px;color:#887d6d;line-height:1.5}@media(max-width:600px){.rumor-grid{grid-template-columns:1fr 1fr}.rumor-card:last-child{grid-column:1/-1}.paper-body h2{font-size:23px}}
.recap{background:#eaf3ff;border:1px solid #d6e9ff;border-radius:17px;padding:15px;margin:0 0 16px}.recap strong{color:#2875d6}.recap p{line-height:1.7;margin:8px 0}.recap small{color:var(--muted)}.ancient .recap{background:#f5ead3;border-color:#e7d6b4}
.paper-briefs{margin-top:16px;border-top:1px solid #dccba8}.paper-brief{display:flex;gap:13px;align-items:center;border-bottom:1px solid #e5d7bd;padding:8px 0}.paper-brief span{flex:none;background:#ead6b7;color:#855a3b;border-radius:6px;padding:4px 7px;font-size:12px}.paper-brief p{font-size:13px;margin:0;line-height:1.5}.ancient .rumor-grid{grid-template-columns:repeat(3,1fr)}@media(max-width:600px){.ancient .rumor-grid{grid-template-columns:repeat(3,1fr)}.ancient .rumor-card:last-child{grid-column:auto}.rumor-card{min-width:0}.rumor-card strong{font-size:14px}.rumor-card small{font-size:11px}}
.usage-line{color:#6b83a5;font-size:13px;padding:0 2px 10px}.ancient .usage-line{color:#88745c}
.question-card{margin:12px 0 18px;padding:0 0 15px;border-bottom:1px solid #e8effa}.question-card:last-child{border-bottom:0;margin-bottom:0;padding-bottom:0}.question-card .notice{margin-bottom:12px}.question-card .field textarea{min-height:78px;background:#fff}.question-status{display:block;margin-top:7px;color:#7892b5;font-size:12px}

/* Read-only relationships */
.relations-hint{color:#8191a9;font-size:14px;line-height:1.6;margin:0 0 18px}
.connection-card{background:linear-gradient(150deg,#fff,#f7fbff);border:1px solid #e2ecfa;border-radius:22px;padding:18px;margin:13px 0;box-shadow:0 8px 24px #2d68ad0a}
.connection-head{display:flex;align-items:center;gap:13px}.connection-head .avatar{width:52px;height:52px;border-radius:17px}
.connection-copy{min-width:0}.connection-copy strong{display:block;font-size:19px}.connection-copy small{display:block;margin-top:4px;color:#7c8da6;font-size:13px;line-height:1.5}
.connection-profile{color:#596d8a;line-height:1.75;margin:15px 0 18px;white-space:pre-wrap}
.relation-bars{display:grid;grid-template-columns:1fr 1fr;gap:22px;border-top:1px solid #eaf0f8;padding-top:17px}
.relation-meter-label{display:flex;justify-content:space-between;align-items:center;font-size:13px;font-weight:700;color:#62758f;margin-bottom:8px}
.relation-meter-label strong{font-size:16px}.affection .relation-meter-label strong{color:#1eaa6b}.intimacy .relation-meter-label strong{color:#df5369}
.relation-track{height:11px;border-radius:999px;background:#e8edf3;overflow:hidden}.relation-fill{display:block;height:100%;border-radius:inherit;transition:width .4s ease}
.affection .relation-fill{background:linear-gradient(90deg,#79d99f,#24ab6a)}.intimacy .relation-fill{background:linear-gradient(90deg,#ff9da9,#e84d69)}
.ancient .connection-card,.early-modern .connection-card{background:#fffaf0;border-color:#e5d7bb}.early-modern .relation-track,.ancient .relation-track{background:#e9dfcf}

/* Three era communication launchers */
.terminal-view .play-inner{max-width:100%;padding:0}.terminal-view .play-head{display:none}.terminal-shell{min-height:calc(100vh - 84px);padding:27px 20px 115px}
.terminal-shell.iphone{background:radial-gradient(circle at 28% 7%,#d3eaff,transparent 36%),linear-gradient(140deg,#eef6ff,#d9eafb 70%,#edf7ff);display:flex;justify-content:center;align-items:flex-start}
.iphone-frame{width:min(440px,100%);padding:9px;background:linear-gradient(135deg,#344157,#0b1527 35%,#68788c 68%,#101b2c);border:2px solid #283546;border-radius:52px;box-shadow:0 25px 65px #26436942,0 5px 15px #14283b38;position:relative}
.iphone-frame:before,.iphone-frame:after{content:'';position:absolute;left:-4px;width:3px;background:#627286;border-radius:3px}.iphone-frame:before{top:128px;height:48px}.iphone-frame:after{top:190px;height:61px}
.iphone-screen{min-height:750px;border-radius:41px;position:relative;overflow:hidden;background:#f8fbff;color:#10254b;padding:0 18px 55px;isolation:isolate}
.iphone-home:before{content:'';position:absolute;inset:0;background:url('/static/assets/classroom.png') center/cover;opacity:.53;z-index:-2}.iphone-home:after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,#eef7ffb8 0%,#f8fbff6e 28%,#eaf5ffb8 63%,#e6f1ffed 100%);z-index:-1}
.iphone-status{height:53px;display:flex;align-items:flex-start;padding:15px 11px 0;gap:7px;font:700 14px -apple-system,BlinkMacSystemFont,'Noto Sans SC',sans-serif;position:relative;z-index:3}
.iphone-status strong{margin-right:auto}.dynamic-island{position:absolute;top:10px;left:50%;transform:translateX(-50%);width:112px;height:28px;background:#07131f;border-radius:25px;box-shadow:inset 0 1px 2px #465264}.phone-signals{font-size:13px;letter-spacing:-1px;margin-left:auto}.phone-battery{width:22px;height:11px;border:1.8px solid #14243a;border-radius:3px;margin-top:2px;position:relative}.phone-battery:before{content:'';position:absolute;inset:2px;background:#152840;border-radius:1px}.phone-battery:after{content:'';position:absolute;right:-4px;top:3px;width:2px;height:4px;background:#152840;border-radius:1px}
.terminal-content{position:relative;z-index:1}.phone-greeting{padding:38px 8px 24px;text-shadow:0 1px 6px #fff}.phone-greeting small{color:#426d9c;font-weight:700;letter-spacing:.08em}.phone-greeting h1{font:800 48px 'Noto Serif SC',serif;margin:4px 0}.phone-greeting p{font-size:14px;color:#5f7998;margin:0}
.launcher-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.launcher-card{min-width:0;display:flex;align-items:center;gap:11px;text-align:left;border:1px solid #ffffffd9;background:#fffffff0;border-radius:21px;padding:12px 10px;color:#14294d;box-shadow:0 7px 21px #557fab1c;transition:transform .18s,box-shadow .18s}.launcher-card:hover{transform:translateY(-2px);box-shadow:0 12px 24px #507fa32d}.launcher-card:focus-visible{outline:3px solid #3e90ff;outline-offset:3px}
.launcher-icon{width:58px;height:58px;display:grid;place-items:center;flex:none;border-radius:17px;box-shadow:inset 0 1px 1px #fff9,0 5px 12px #547ba52a;color:#fff}.launcher-icon .icon{width:31px;height:31px}.app-events .launcher-icon{background:linear-gradient(140deg,#78afe9,#3b70bc)}.app-dm .launcher-icon{background:linear-gradient(140deg,#92dfbd,#2da783)}.app-forum .launcher-icon{background:linear-gradient(140deg,#acaaff,#7167db)}.app-notifications .launcher-icon{background:linear-gradient(140deg,#ffb4bd,#f36b87)}.app-album .launcher-icon{background:linear-gradient(140deg,#ffdda0,#dfaa57)}.app-memo .launcher-icon{background:linear-gradient(140deg,#a9d7fa,#4b91d9)}
.launcher-text{min-width:0;flex:1}.launcher-text strong{display:block;font-size:17px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.launcher-text small{display:block;color:#8191aa;line-height:1.35;margin-top:4px;font-size:11px}.launcher-chevron{width:13px;height:13px;color:#a0afc1}
.iphone-dock{margin:43px 3px 0;padding:13px;display:flex;justify-content:space-around;border:1px solid #fff8;border-radius:23px;background:#ffffff99;backdrop-filter:blur(14px);box-shadow:0 4px 14px #567ea028}.iphone-dock span{width:42px;height:42px;border-radius:14px;background:#ffffffbd;display:grid;place-items:center;color:#518ee1;font-size:20px}
.home-indicator{position:absolute;bottom:11px;left:50%;transform:translateX(-50%);width:116px;height:5px;border-radius:5px;background:#1f2a39;opacity:.8}
.app-detail-head{height:58px;display:flex;align-items:center;gap:12px;border-bottom:1px solid #dbe7f7;margin-bottom:14px}.app-detail-head strong{font-size:18px}.app-back{border:0;background:transparent;color:#3287ed;font-size:14px;font-weight:700;padding:9px 3px}.iphone .module{padding:16px;margin:11px 0;border-radius:20px}.iphone .module h2{font-size:18px}.iphone .empty{padding:18px}.iphone .tabs{overflow:auto}.iphone .tabs button{white-space:nowrap}.iphone .composer{padding:6px}.iphone .composer button{width:42px;height:42px}.iphone .composer textarea{font-size:13px}
.archive-ancient,.archive-modern{max-width:940px;margin:0 auto}.archive-ancient{background:linear-gradient(#1b2d3a40,#1b2d3a11),url('/static/assets/changan.png') center top/cover fixed;color:#2d2720}.archive-modern{background:linear-gradient(#e8d5bda8,#f3e3cfa8),url('/static/assets/create-world.png') center top/cover fixed;color:#302d2a}.early-modern.terminal-view{background:#d5c5af}.ancient.terminal-view{background:#243a45}
.archive-masthead{text-align:center;padding:34px 10px 30px;margin-bottom:18px;position:relative}.archive-masthead:before{content:'';position:absolute;inset:0;background:#fff9eac9;border:1px solid #cfb994;box-shadow:0 8px 25px #33281f22;border-radius:12px;z-index:0}.archive-masthead>*{position:relative}.archive-masthead small{display:block;letter-spacing:.13em;color:#8f7153}.archive-masthead h1{font:800 clamp(43px,8vw,70px) 'Noto Serif SC',serif;letter-spacing:.17em;margin:8px 0;color:#283646}.archive-masthead p{font:500 16px 'Noto Serif SC',serif;margin:0;color:#715f4a}.archive-modern .archive-masthead h1{color:#6d2725;letter-spacing:.1em}.archive-ancient .archive-masthead{padding-top:54px}.archive-ancient .archive-masthead:before{background:#fff5ddc4}
.archive-modern .launcher-card,.archive-ancient .launcher-card{min-height:155px;padding:24px;border:2px solid #d4bea0;border-radius:9px;background:linear-gradient(145deg,#fff9ecf2,#efdec2ed);box-shadow:0 5px 0 #97795e55,0 12px 25px #3f302629}.archive-modern .launcher-card{border-color:#9f846b;background:linear-gradient(145deg,#faebd4ef,#e3c69fe8)}.archive-modern .launcher-icon,.archive-ancient .launcher-icon{background:linear-gradient(145deg,#ede0c7,#cab08a);color:#594126;border:1px solid #be9e73;box-shadow:none}.archive-modern .launcher-icon{background:#6c4d3f;color:#fff;border-color:#745744}.archive-modern .launcher-text strong{color:#782e2a;font-family:'Noto Serif SC',serif;font-size:25px}.archive-ancient .launcher-text strong{color:#282b2b;font-family:'Noto Serif SC',serif;font-size:25px}.archive-modern .launcher-text small,.archive-ancient .launcher-text small{color:#766656;font-size:13px}.archive-modern .launcher-chevron,.archive-ancient .launcher-chevron{color:#947650}.launcher-foot{text-align:center;color:#fff9e9;font:600 16px 'Noto Serif SC',serif;margin:30px 0}.archive-modern .launcher-foot{color:#614438}
.archive-modern .terminal-content,.archive-ancient .terminal-content{max-width:820px;margin:auto}.archive-modern .app-detail-head,.archive-ancient .app-detail-head{background:#fff8e9eb;border:1px solid #d8c49e;border-radius:8px;padding:0 16px;margin-bottom:15px}.archive-modern .app-back,.archive-ancient .app-back{color:#835a3e}.archive-modern .module,.archive-ancient .module{background:#fff9ecf2;border:1px solid #dfcaaa;border-radius:9px}.archive-modern .module h2,.archive-ancient .module h2{font-family:'Noto Serif SC',serif}
.notification-item{display:flex;gap:12px;align-items:flex-start;padding:13px 0;border-bottom:1px solid #e8edf5}.notification-item:last-child{border-bottom:0}.notification-item>.icon{color:#4e93ea}.notification-item strong,.notification-item small{display:block}.notification-item small{color:#788ba6;line-height:1.55;margin-top:4px}.album-grid{display:grid;gap:12px}.album-card{border:1px solid #e5edf8;border-radius:15px;overflow:hidden;background:#fff}.album-card img{width:100%;height:135px;object-fit:cover}.album-card div{padding:12px}.album-card p{font-size:13px;color:#667b99;line-height:1.6;margin:6px 0 0}.memo-card{border-left:4px solid #8db7eb;background:#f4f8ff;padding:13px 15px;border-radius:5px 12px 12px 5px;margin:10px 0}.memo-card p{color:#5c7291;line-height:1.65;margin:6px 0 0;white-space:pre-wrap}
@media(max-width:650px){.relation-bars{gap:15px}.terminal-shell{padding:0 0 104px}.terminal-shell.iphone{background:#e9f4ff}.iphone-frame{width:100%;border:0;border-radius:0;padding:0;box-shadow:none;background:none}.iphone-frame:before,.iphone-frame:after{display:none}.iphone-screen{border-radius:0;min-height:calc(100vh - 79px);padding:0 15px 46px}.iphone-status{padding-top:14px}.phone-greeting{padding-top:28px}.phone-greeting h1{font-size:43px}.launcher-grid{gap:10px}.launcher-card{padding:10px 7px;gap:7px;border-radius:18px}.launcher-icon{width:47px;height:47px;border-radius:13px}.launcher-icon .icon{width:27px;height:27px}.launcher-text strong{font-size:14px}.launcher-text small{font-size:10px}.launcher-chevron{display:none}.archive-ancient,.archive-modern{padding:12px 12px 110px}.archive-masthead{padding:26px 10px}.archive-ancient .archive-masthead{padding-top:35px}.archive-modern .launcher-card,.archive-ancient .launcher-card{min-height:135px;padding:13px;flex-direction:column;align-items:flex-start;gap:7px}.archive-modern .launcher-text strong,.archive-ancient .launcher-text strong{font-size:20px}.archive-modern .launcher-icon,.archive-ancient .launcher-icon{width:40px;height:40px}.archive-modern .launcher-text small,.archive-ancient .launcher-text small{font-size:11px}}
@media(max-width:380px){.relation-bars{grid-template-columns:1fr}.launcher-card{flex-direction:column;align-items:flex-start;min-height:116px}.launcher-text small{display:none}.archive-modern .launcher-text small,.archive-ancient .launcher-text small{display:block}}

/* Story stays within the viewport: only the conversation moves. */
.play.story-view{height:100dvh;min-height:0;overflow:hidden;padding-bottom:0}
.story-view .play-inner{height:calc(100dvh - 78px - env(safe-area-inset-bottom));min-height:0;display:flex;flex-direction:column;padding:0 20px}
.story-view .play-head{height:79px;min-height:79px;position:relative;z-index:2;background:#eef6ff;box-shadow:0 1px 0 #dbe8f8}
.story-scroll{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:19px 7px 30px;scrollbar-color:#bfd4ed transparent}
.story-opening{font-size:18px;line-height:2;white-space:pre-wrap;letter-spacing:.01em;padding:10px 14px 22px;color:#253c61;border-bottom:1px solid #d9e6f4}
.story-entry{padding:20px 14px 24px;border-bottom:1px solid #d9e6f4}
.story-entry.player{padding-bottom:12px;border-bottom:0}
.story-speaker{display:block;font-size:12px;font-weight:800;letter-spacing:.08em;color:#5f91d1;margin-bottom:9px}
.story-entry.player .story-speaker{color:#7c91ad}.story-entry.player .story-text{color:#637999;font-size:15px;border-left:3px solid #98bbeb;padding-left:13px}
.story-text{font-size:18px;line-height:1.9;white-space:pre-wrap;color:#1b2f50}
.story-composer{flex:none;margin:0 0 12px;border-radius:18px;box-shadow:0 6px 18px #4171a522}
.story-view .choices{margin:22px 5px}.story-view .choice{box-shadow:0 3px 10px #6793c017}
.stat-feedback{background:#fff;border:1px solid #e5ecf7;border-radius:22px;padding:20px 22px;margin:25px 0 0;box-shadow:0 8px 22px #7598c019}
.stat-feedback h3{font-size:19px;color:#4c88ed;margin:0 0 14px;font-weight:800}
.stat-feedback-row{padding:14px 0;border-top:1px solid #e5e8ee}.stat-feedback-line{display:flex;align-items:center;gap:13px;flex-wrap:wrap}.stat-feedback-line strong{font-size:16px;margin-right:12px;min-width:72px}.stat-feedback-line b{font-size:19px}.stat-before,.stat-arrow{color:#929caf;font-size:17px}.stat-feedback-line em{font-style:normal;border-radius:12px;padding:5px 10px;font-weight:800;min-width:44px;text-align:center}.stat-delta.flat{background:#e8e9ef;color:#738096}.stat-delta.up{background:#e3f6ee;color:#26976b}.stat-delta.down{background:#ffeaed;color:#d44d65}.stat-feedback-row p,.stat-no-data{margin:8px 0 0;color:#76859e;font-size:14px;line-height:1.7}
.major-overlay{position:fixed;z-index:100;inset:0;background:#1e365a52;backdrop-filter:blur(13px);-webkit-backdrop-filter:blur(13px);display:flex;align-items:center;justify-content:center;padding:25px}
.major-dialog{width:min(460px,100%);border:1px solid #fff;background:#fffffff2;border-radius:28px;box-shadow:0 28px 70px #1a315f55;padding:27px;color:#18345b;text-align:center}
.major-dialog>.icon{color:#4b91f7;width:44px;height:44px;margin:0 auto 10px}.major-dialog>small{display:block;color:#6083b2;font-weight:800;letter-spacing:.08em}.major-dialog h2{font:800 27px/1.4 'Noto Serif SC',serif;margin:10px 0 13px}.major-dialog p{color:#5d7190;line-height:1.75;margin:0 0 24px}.major-actions{display:flex;gap:10px}.major-actions button{flex:1;font-size:16px;padding:12px}.major-dialog .major-note{font-size:11px;line-height:1.5;color:#98a5b8;letter-spacing:0;margin-top:17px}
.ancient .story-view,.early-modern .story-view{background:#f3eddf}.ancient.story-view .play-head,.early-modern.story-view .play-head{background:#f9f3e6}.ancient .story-opening,.ancient .story-entry,.early-modern .story-opening,.early-modern .story-entry{border-color:#e0d3bd}.ancient .story-speaker,.early-modern .story-speaker{color:#986e3d}
/* The modern launcher now has three actual app icons. The status/header remain fixed. */
.iphone .launcher-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:20px 8px;margin-top:12px}
.iphone .launcher-card{border:0;background:transparent;box-shadow:none;padding:4px 1px;display:grid;justify-items:center;align-content:start;text-align:center;gap:8px;min-height:122px}
.iphone .launcher-card:hover{box-shadow:none;transform:scale(1.04)}
.iphone .launcher-icon{width:75px;height:75px;border-radius:21px}.iphone .launcher-icon .icon{width:37px;height:37px}
.iphone .launcher-text strong{font-size:13px;text-shadow:0 1px 4px #fff}.iphone .launcher-text small,.iphone .launcher-chevron{display:none}
.terminal-shell.iphone{height:calc(100dvh - 76px - env(safe-area-inset-bottom));min-height:0;overflow:hidden;padding-bottom:13px}
.iphone-frame{height:100%;max-height:870px}.iphone-screen{height:100%;min-height:0;display:flex;flex-direction:column}.iphone-status{flex:none}.iphone .terminal-content{flex:1;min-height:0;overflow-y:auto;scrollbar-color:#c5d7eb transparent;padding-bottom:22px}.iphone .home-indicator{z-index:5;background:#1f2a39}
.iphone.terminal-dm .terminal-content{display:flex;flex-direction:column;overflow:hidden}.iphone.terminal-dm .app-detail-head{flex:none}.iphone.terminal-dm .module{flex:1;min-height:0;display:flex;flex-direction:column;margin-bottom:0}.iphone.terminal-dm .tabs{flex:none}.iphone.terminal-dm .messages{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain}.iphone.terminal-dm .composer{flex:none;margin-bottom:0}
@media(max-width:650px){.story-view .play-inner{height:calc(100dvh - 70px - env(safe-area-inset-bottom));padding:0 12px}.story-view .play-head{height:70px;min-height:70px}.story-scroll{padding:13px 1px 22px}.story-opening,.story-text{font-size:16px}.story-entry{padding:16px 10px 20px}.story-opening{padding:7px 10px 20px}.story-composer{margin-bottom:9px}.stat-feedback{padding:16px;margin-top:20px}.stat-feedback-line{gap:8px}.stat-feedback-line strong{min-width:58px;font-size:14px}.stat-feedback-line b{font-size:16px}.stat-feedback-row p{font-size:13px}.terminal-shell.iphone{height:calc(100dvh - 69px - env(safe-area-inset-bottom));padding:0}.iphone-frame{max-height:none}.iphone-screen{min-height:0}.iphone .launcher-grid{gap:17px 8px}.iphone .launcher-icon{width:68px;height:68px;border-radius:18px}.iphone .launcher-card{min-height:108px}.iphone .launcher-text strong{font-size:12px}}
@media(max-width:380px){.iphone .launcher-card{flex-direction:initial;align-items:center}.stat-feedback-line strong{width:100%;margin-bottom:2px}}
.play.terminal-view{height:100dvh;min-height:0;overflow:hidden;padding-bottom:0}
.terminal-view .play-inner{height:calc(100dvh - 78px - env(safe-area-inset-bottom))}
@media(max-width:650px){.terminal-view .play-inner{height:calc(100dvh - 70px - env(safe-area-inset-bottom))}}
/* Modern conversations follow the supplied iMessage layout. */
.iphone.terminal-dm .iphone-frame{width:min(1110px,100%);max-height:900px;padding:0;border:1px solid #dce5f4;border-radius:31px;background:#f8faff;box-shadow:0 16px 46px #32609d2c}
.iphone.terminal-dm .iphone-screen{border-radius:30px;padding:0;background:linear-gradient(125deg,#f4f9ff,#fafaff 55%,#f5f0ff)}
.iphone.terminal-dm .iphone-status,.iphone.terminal-dm .home-indicator{display:none}
.iphone.terminal-dm .terminal-content{display:block;overflow:hidden;padding:0}
.imessage-app{height:100%;min-height:0;display:grid;grid-template-columns:96px minmax(0,1fr)}
.imessage-rail{border-right:1px solid #dce3ed;padding:18px 7px;display:flex;flex-direction:column;align-items:center;gap:14px;overflow-y:auto;background:linear-gradient(180deg,#eef6ff99,#ffffff66)}
.imessage-contact{position:relative;width:70px;height:70px;flex:none;padding:0;border:0;background:transparent;display:grid;place-items:center}
.imessage-avatar,.imessage-head-avatar{display:grid;place-items:center;border-radius:50%;font-weight:800;color:white;border:4px solid #f8faff;box-shadow:0 3px 12px #7691be3d}
.imessage-avatar{width:62px;height:62px;font-size:26px}.imessage-head-avatar{width:65px;height:65px;font-size:26px;flex:none}
.imessage-avatar.peach,.imessage-head-avatar.peach{background:#e3a369}.imessage-avatar.blue,.imessage-head-avatar.blue{background:#95b3eb}.imessage-avatar.mint,.imessage-head-avatar.mint{background:#91ddc4}.imessage-avatar.rose,.imessage-head-avatar.rose{background:#eaa4bd}.imessage-avatar.lilac,.imessage-head-avatar.lilac{background:#aaa7e8}
.imessage-contact.active .imessage-avatar{box-shadow:0 0 0 3px #d4e5ff,0 3px 12px #7691be3d}.imessage-active-dot{position:absolute;right:-2px;top:33px;background:#518bff;width:10px;height:10px;border-radius:50%}
.imessage-pane{min-width:0;min-height:0;display:flex;flex-direction:column;padding:0 22px 20px}
.imessage-head{height:107px;min-height:107px;display:flex;align-items:center;gap:14px;border-bottom:1px solid #dbe3ec}.imessage-back,.imessage-profile{border:0;background:transparent;color:#7b879d;white-space:nowrap}.imessage-back{font-size:16px;margin-right:8px}.imessage-profile{font-size:13px;margin-left:auto}.imessage-identity{min-width:0}.imessage-identity strong{display:block;font-size:24px;color:#17253e;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.imessage-identity small{display:block;font-size:13px;color:#49a276;margin-top:5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.imessage-messages{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:22px 18px 18px 4px;scrollbar-color:#c1c8d7 transparent}
.imessage-row{display:flex;flex-direction:column;align-items:flex-start;margin:0 10% 22px 0}.imessage-row.player{align-items:flex-end;margin:0 0 22px 10%}
.imessage-bubble{max-width:100%;padding:15px 18px;border-radius:26px 26px 26px 8px;background:#fff;color:#1b2945;font-size:16px;line-height:1.7;white-space:pre-wrap;box-shadow:0 5px 18px #405b8a0d}
.imessage-row.player .imessage-bubble{border-radius:26px 26px 8px 26px;background:linear-gradient(135deg,#4b83fa,#8a6af4);color:#fff}
.imessage-row small{color:#8994a8;margin:7px 7px 0;font-size:12px}.imessage-empty{text-align:center;color:#9ba8bb;padding:35px 8px}
.imessage-composer{flex:none;display:flex;align-items:flex-end;gap:10px;border:1.5px solid #dbe2ed;background:#fff;border-radius:31px;padding:7px 8px 7px 18px;margin:0 5px}.imessage-composer textarea{flex:1;min-width:0;min-height:37px;max-height:120px;resize:vertical;border:0;outline:0;background:transparent;padding:8px 0 3px;color:#183257;font-size:16px}.imessage-composer textarea::placeholder{color:#9ba4b8}.imessage-send{border:0;border-radius:50%;background:linear-gradient(140deg,#87a9ff,#aa85f2);color:#fff;width:38px;height:38px;flex:none;font-size:24px;font-weight:800;line-height:1}
@media(max-width:650px){.iphone.terminal-dm .iphone-frame{width:100%;height:100%;max-height:none;border:0;border-radius:0;box-shadow:none}.iphone.terminal-dm .iphone-screen{border-radius:0}.imessage-app{grid-template-columns:65px minmax(0,1fr)}.imessage-rail{padding:11px 3px;gap:9px}.imessage-contact{width:51px;height:51px}.imessage-avatar{width:48px;height:48px;font-size:20px;border-width:3px}.imessage-active-dot{right:-2px;top:24px;width:8px;height:8px}.imessage-pane{padding:0 11px 13px}.imessage-head{height:75px;min-height:75px;gap:7px}.imessage-back{font-size:12px;margin-right:0}.imessage-head-avatar{width:42px;height:42px;font-size:17px;border-width:3px}.imessage-identity strong{font-size:17px}.imessage-identity small{font-size:10px;margin-top:2px}.imessage-profile{font-size:10px}.imessage-messages{padding:16px 4px}.imessage-bubble{font-size:14px;padding:11px 13px}.imessage-composer{margin:0}.imessage-composer textarea{font-size:14px}}
/* The create-home hero no longer uses the large castle artwork. */
.hero{background:radial-gradient(circle at 76% 28%,#c8e3ff 0,transparent 30%),linear-gradient(135deg,#f8fbff,#deeeff)}
.hero:before{background:none}.hero:after{background:linear-gradient(90deg,#f2f8ffdf,transparent 85%)}
.play-head:after{content:'';width:46px;flex:none}

/* Character sheet and the three narration length choices share the game palette. */
.bottom>div{grid-template-columns:repeat(5,minmax(0,1fr))}
.bottom button{min-width:0;white-space:nowrap}
.attribute-hero{display:flex;flex-direction:column;align-items:center;text-align:center;padding:35px 18px 30px;margin:10px 0 18px;border:1px solid #d8e9fc;border-radius:27px;background:linear-gradient(145deg,#fff,#e8f3ff);box-shadow:var(--shadow)}
.attribute-mark{width:76px;height:76px;display:grid;place-items:center;border-radius:23px;background:linear-gradient(135deg,#d7eaff,#f6fbff);color:#418dfa;box-shadow:inset 0 0 0 1px #c7defa,0 8px 20px #4a90e22c;margin-bottom:15px}
.attribute-mark .icon{width:43px;height:43px}
.attribute-hero small{color:#548ee0;letter-spacing:.28em;font-weight:800}
.attribute-hero h1{font:800 34px 'Noto Serif SC',serif;margin:5px 0 2px}
.attribute-hero p{margin:0;color:#8191aa}
.attribute-panel .relations-hint{text-align:left}
.attribute-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px}
.attribute-card{background:#f7fbff;border:1px solid #e1edfb;border-radius:19px;padding:17px;min-width:0}
.attribute-card-head{display:flex;align-items:center;gap:10px}.attribute-card-head strong{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis}.attribute-card-head b{font-size:22px;white-space:nowrap}
.attribute-card-icon{width:42px;height:42px;display:grid;place-items:center;border-radius:13px;color:#428dfa;background:#e7f2ff;flex:none}
.attribute-card:nth-child(4n+2) .attribute-card-icon{color:#2ead83;background:#e8f8f1}.attribute-card:nth-child(4n+3) .attribute-card-icon{color:#e56f9a;background:#fff0f5}.attribute-card:nth-child(4n) .attribute-card-icon{color:#dcaa35;background:#fff7e6}
.attribute-meter{height:8px;border-radius:8px;background:#e3ebf6;overflow:hidden;margin:15px 0 7px}.attribute-meter span{display:block;height:100%;border-radius:8px;background:linear-gradient(90deg,#6fb0ff,#3985f0)}
.attribute-card:nth-child(4n+2) .attribute-meter span{background:#42c997}.attribute-card:nth-child(4n+3) .attribute-meter span{background:#f47ca6}.attribute-card:nth-child(4n) .attribute-meter span{background:#e6bd56}
.attribute-card small{color:#8a9ab2}.length-options{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;margin:12px 0 20px}
.length-choice{display:grid;gap:3px;text-align:center;border:1.5px solid #e2eafa;background:#f6f9ff;border-radius:16px;padding:14px 5px;color:#234069}.length-choice strong{font-size:17px}.length-choice small{font-size:11px;color:#8696ad;white-space:nowrap}
.length-choice.selected{border-color:#4d95ff;background:#eaf4ff;color:#2277e8;box-shadow:0 3px 12px #6aa8ee20}
.play .module>.field{margin:13px 0}.play .module>.primary{margin-top:8px}
.ancient .attribute-hero,.early-modern .attribute-hero{border-color:#d6c39d;background:linear-gradient(145deg,#fffaf0,#eae0cb)}
.ancient .attribute-mark,.early-modern .attribute-mark{background:#f1e6cd;color:#96703d;box-shadow:inset 0 0 0 1px #d8c49e}
.ancient .attribute-card,.early-modern .attribute-card{background:#fffaf0;border-color:#e4d4b6}
.ancient .length-choice,.early-modern .length-choice{background:#faf3e5;border-color:#dccaa8;color:#654e36}.ancient .length-choice.selected,.early-modern .length-choice.selected{background:#f5e6c8;border-color:#ad8850}
@media(max-width:650px){.bottom button{font-size:11px;padding:6px 2px}.bottom .icon{width:25px;height:25px}.attribute-grid{grid-template-columns:1fr}.attribute-hero{padding:25px 15px}.length-choice{padding:12px 2px}.length-choice strong{font-size:15px}.length-choice small{font-size:10px}}

/* The sign-in page is part of the game, with the same quiet blue visual language. */
.login-page{min-height:100dvh;display:grid;place-items:center;padding:25px;background:radial-gradient(circle at 80% 9%,#b9ddff 0,transparent 33%),radial-gradient(circle at 13% 82%,#d4e7ff 0,transparent 31%),linear-gradient(150deg,#eff7ff,#f8fbff 55%,#e9f3ff)}
.login-shell{width:min(100%,440px);background:#ffffffed;border:1px solid #dceafb;border-radius:30px;padding:42px 37px 30px;box-shadow:0 24px 65px #6a9bd02b;text-align:center}
.login-mark{width:76px;height:76px;display:grid;place-items:center;margin:0 auto 17px;border-radius:23px;background:linear-gradient(145deg,#dceeff,#f6fbff);color:#408cf4;box-shadow:inset 0 0 0 1px #c9e2ff,0 9px 24px #579bea2d}
.login-mark .icon{width:42px;height:42px}.login-eyebrow{color:#6295d7;font-weight:800;letter-spacing:.16em}.login-shell h1{font:800 36px 'Noto Serif SC',serif;letter-spacing:.08em;margin:8px 0 5px}.login-description{color:#8795ad;margin:0 0 28px}
.login-form{text-align:left;display:grid;gap:9px}.login-form label{font-size:14px;font-weight:800;color:#263c61;margin-top:8px}.login-form input{width:100%;border:1.5px solid #dce8f8;background:#f8fbff;color:#183250;border-radius:16px;padding:15px 17px;outline:0;font-size:16px}.login-form input:focus{border-color:#559cf7;box-shadow:0 0 0 4px #e7f3ff}.login-form input::placeholder{color:#a5b1c3}
.login-form button{margin-top:13px}.login-error{min-height:20px;margin:1px 0 0;color:#ce4e65;font-size:13px}.login-foot{display:block;color:#a0acc0;margin-top:23px}
@media(max-width:550px){.login-page{padding:18px}.login-shell{padding:35px 23px 28px;border-radius:26px}.login-shell h1{font-size:32px}}
