@charset "UTF-8";
:root{color-scheme:dark;--bg:#100e1b;--panel:#1b1728;--line:#ffffff16;--text:#f3edf8;--muted:#aaa0b8;--accent:#ccb1f2;--gold:#f3d89b}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:30px}body{margin:0;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,"Hiragino Kaku Gothic ProN","Yu Gothic",Meiryo,sans-serif;line-height:1.7}button,a{-webkit-tap-highlight-color:transparent}a{color:inherit;text-decoration:none}button{font:inherit;cursor:pointer}button:focus-visible,a:focus-visible{outline:2px solid var(--gold);outline-offset:5px}[hidden]{display:none!important}.ambient{position:absolute;inset:0 0 auto;height:900px;background:radial-gradient(ellipse at 15% 0%,#69529324,transparent 65%);pointer-events:none}.town-header{position:relative;max-width:1320px;margin:auto;padding:24px 38px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.brand{display:flex;gap:12px;align-items:center;font-weight:700;letter-spacing:.06em;font-size:14px}.brand img{object-fit:contain}.town-header nav{display:flex;gap:27px;align-items:center;color:#c8bfd5;font-size:13px}.nav-live{border:1px solid #bd98e94d;border-radius:30px;padding:8px 18px;background:#b58ce410}main{position:relative;max-width:1200px;margin:auto;padding:0 36px}.town-intro{display:flex;align-items:center;justify-content:space-between;padding:65px 0 40px;gap:35px}.eyebrow,.overline{font-size:10px;letter-spacing:.2em;font-weight:700;color:var(--accent);margin:0 0 14px}.town-intro h1{font-family:"Yu Mincho","Hiragino Mincho ProN",serif;font-size:clamp(32px,4vw,48px);line-height:1.55;letter-spacing:.12em;margin:0 0 18px;font-weight:600}.intro-copy{color:var(--muted);font-size:13px;line-height:2.1;margin:0}.intro-seal{border:1px solid #b69bdf38;border-radius:50%;height:172px;width:172px;flex-shrink:0;display:flex;flex-direction:column;align-items:center;justify-content:center;position:relative;margin-right:26px;box-shadow:0 0 0 9px #bd9ee405,0 0 0 10px #bd9ee414}.intro-seal strong{font-family:"Yu Mincho",serif;font-size:29px;letter-spacing:.2em;margin:5px 0;color:var(--gold)}.intro-seal span{font-size:10px;letter-spacing:.06em;color:var(--muted)}.panorama-section{border:1px solid #b79bda36;border-radius:22px;overflow:hidden;background:#1c1928;box-shadow:0 22px 70px #0002}.scene-top{padding:20px 28px;display:flex;justify-content:space-between;align-items:center;gap:16px}.scene-top .overline{font-size:9px;margin:0;color:#bfb1ca}.scene-top h2{font-family:"Yu Mincho",serif;font-size:23px;letter-spacing:.12em;margin:2px 0 0;font-weight:600}.view-switch{display:flex;background:#0d0b16;border-radius:30px;padding:4px;border:1px solid var(--line)}.view-switch button{color:var(--muted);border:0;background:none;padding:5px 19px;border-radius:30px;font-size:12px}.view-switch button[aria-pressed=true]{color:#251c34;background:#ded2eb}.landscape{position:relative;background:#ddd1ad;aspect-ratio:1200/560;isolation:isolate}.landscape svg{display:block;width:100%;height:100%}.scene-caption{position:absolute;left:22px;right:22px;bottom:13px;display:flex;justify-content:space-between;color:#fff;font-size:10px;letter-spacing:.14em;text-shadow:0 1px 4px #172d27}.scene-caption span:last-child{opacity:.65}.scene-empty{position:absolute;inset:0;display:flex;flex-direction:column;gap:10px;align-items:center;justify-content:center;background:#100e1b65;backdrop-filter:blur(3px);padding:20px;text-align:center}.scene-empty strong{font-family:"Yu Mincho",serif;font-size:22px}.scene-empty span{font-size:12px}.town-summary{padding:26px 28px;display:grid;grid-template-columns:1fr 1.2fr 2fr;gap:24px}.town-summary>div+div{border-left:1px solid var(--line);padding-left:26px}.town-summary span{display:block;font-size:11px;color:var(--muted)}.town-summary strong{font-size:26px;font-weight:500;letter-spacing:.03em}.growth>div{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}.growth strong{font-size:12px;color:#e2cee8}progress{appearance:none;border:0;border-radius:20px;height:6px;width:100%;display:block;overflow:hidden;background:#ffffff0b}progress::-webkit-progress-bar{background:#ffffff0b;border-radius:20px}progress::-webkit-progress-value{background:linear-gradient(90deg,#9f80be,#e5c9e6);border-radius:20px}progress::-moz-progress-bar{background:#c7a9df;border-radius:20px}.sync-row{display:flex;justify-content:space-between;gap:15px;align-items:center;padding:12px 28px;border-top:1px solid var(--line);font-size:10px;color:var(--muted);line-height:1.7}.sync-row button{border:0;background:transparent;color:var(--accent);font-size:11px;white-space:nowrap}.sync-row button:disabled{opacity:.45;cursor:wait}.town-section{margin-top:65px}.section-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:25px;margin-bottom:24px}.section-heading .eyebrow{margin-bottom:7px}.section-heading h2,.lower-grid h2{font-family:"Yu Mincho",serif;letter-spacing:.07em;font-size:23px;font-weight:500;margin:0}.section-heading>p{font-size:11px;line-height:1.8;color:var(--muted);margin:0 0 4px}.facility-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:17px}.facility{position:relative;background:linear-gradient(135deg,#29233488,#171420);border:1px solid var(--line);border-radius:16px;padding:25px;overflow:hidden}.facility-number{font-size:9px;letter-spacing:.16em;color:var(--muted)}.facility-symbol{position:absolute;right:18px;top:19px;width:50px;height:50px;border-radius:50%;background:#d4ba8f0b;color:#ebd4a2;text-align:center;font-size:29px;line-height:50px}.smith .facility-symbol{color:#e5aa8e;background:#e5aa8e0b}.lab .facility-symbol{color:#bfb0f2;background:#bfb0f20b}.facility h3{font-size:21px;font-weight:500;letter-spacing:.06em;margin:24px 0 7px}.facility p{font-size:11px;color:var(--muted);margin:0 0 24px}.facility>strong{font-size:13px;font-weight:500;color:#e9ddf3}.level-dots{display:flex;gap:5px;margin:12px 0 15px}.level-dots span{width:28px;height:4px;border-radius:4px;background:#ffffff12}.level-dots span.on{background:#c1a4d7}.facility-effect{color:var(--muted);font-size:11px}.lower-grid{display:grid;grid-template-columns:1fr 1fr;gap:23px;margin-top:25px}.resource-panel,.quest-panel{border:1px solid var(--line);border-radius:16px;padding:26px;background:#191522}.lower-grid h2{font-size:19px}.lower-grid .eyebrow{font-size:9px;margin-bottom:8px}.resource-list{margin:24px 0 19px}.resource-list>div{display:flex;align-items:center;justify-content:space-between;padding:9px 0;border-bottom:1px solid var(--line)}.resource-list dt{font-size:12px;color:#cdc3d6;display:flex;gap:12px;align-items:center}.resource-icon{color:var(--gold);font-size:21px;width:23px;text-align:center}.resource-list dd{font-size:17px;font-variant-numeric:tabular-nums;margin:0}.small-copy{font-size:10px;color:var(--muted);margin:0}.quest-name{font-size:22px;margin:26px 0 2px;color:var(--gold);letter-spacing:.04em}#questProgress{font-size:12px;color:var(--muted);margin:0 0 15px}.quest-panel .small-copy{margin-top:24px}.resident-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.resident{display:flex;align-items:flex-start;gap:15px;padding:21px 17px;border-top:1px solid #bda0d532}.portrait{height:55px;width:48px;flex-shrink:0;border-radius:25px 25px 12px 12px;background:linear-gradient(140deg,#c78d75,#463044);color:#f3e1c8;display:grid;place-items:center;font-family:"Yu Mincho",serif;font-size:25px;border:1px solid #fff2}.portrait.iron{background:linear-gradient(140deg,#78928b,#263844)}.portrait.luna{background:linear-gradient(140deg,#8c7cb5,#332445)}.resident>div>span{font-size:9px;color:var(--muted)}.resident h3{font-size:19px;font-weight:500;margin:2px 0 8px}.resident small{font-size:10px;color:var(--muted);margin-left:5px}.resident p{font-size:10px;color:var(--muted);margin:0 0 12px}.arrival{font-size:10px;color:var(--gold);font-weight:500}.resident.absent .portrait{filter:grayscale(1);opacity:.5}.resident.absent .arrival{color:var(--muted)}.closing{display:flex;align-items:center;gap:21px;padding:28px 0;margin:58px 0 35px;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.closing img{object-fit:contain}.closing p{font-family:"Yu Mincho",serif;font-size:20px;margin:0 0 5px}.closing span{font-size:11px;color:var(--muted)}.closing>a{margin-left:auto;padding:10px 18px;border:1px solid #bda0d55c;border-radius:30px;font-size:11px;white-space:nowrap;background:#bda0d50b}.town-footer{max-width:1200px;margin:0 auto;padding:10px 36px 36px;display:flex;justify-content:space-between;font-size:10px;color:var(--muted)}.sample-note{background:#55432177;border:1px solid #e6c37577;border-radius:12px;padding:15px 20px;margin-top:25px;font-size:12px;color:#f5dfab}.sample-controls{display:inline-flex;gap:8px;margin-left:14px}.sample-controls button{border:1px solid #c8ad7444;border-radius:20px;background:#0003;color:#f5dfab;padding:4px 12px;font-size:11px}@media(max-width:850px){.town-header{padding:18px 24px}.town-header nav{gap:18px}.intro-seal{margin-right:5px;height:145px;width:145px}.section-heading{display:block}.section-heading>p{margin-top:10px}.facility{padding:19px}.resident-grid{grid-template-columns:1fr}.resident{padding:20px}.resident p{font-size:12px}.resident>div>span,.resident .arrival{font-size:11px}.closing p{font-size:16px}.closing>a{font-size:10px}}@media(max-width:580px){main{padding:0 18px}.town-header{padding:16px 18px}.brand{font-size:11px;gap:7px}.brand img{width:30px;height:30px}.town-header nav{gap:13px;font-size:11px}.town-header nav>a:nth-child(2),.town-header nav>a:nth-child(3){display:none}.nav-live{padding:6px 12px}.town-intro{padding:36px 0 28px;gap:15px;align-items:flex-start}.town-intro h1{font-size:30px;letter-spacing:.06em}.intro-copy{font-size:11px}.eyebrow{font-size:8px;letter-spacing:.12em}.intro-seal{height:78px;width:78px;margin:16px 4px 0 0;box-shadow:0 0 0 5px #bd9ee414}.intro-seal strong{font-size:17px;letter-spacing:.08em}.intro-seal span{font-size:7px}.intro-seal span:last-child{display:none}.scene-top{padding:16px}.scene-top h2{font-size:18px}.view-switch button{padding:4px 12px;font-size:10px}.landscape{aspect-ratio:1.5;overflow:hidden}.landscape svg{width:143%;max-width:none;margin-left:-21.5%}.scene-caption{left:12px;right:12px;font-size:8px}.town-summary{grid-template-columns:1fr 1fr;padding:20px;gap:16px}.town-summary>div+div{padding-left:20px}.town-summary strong{font-size:23px}.town-summary .growth{grid-column:1/-1;border:0;padding:8px 0 0}.growth strong{font-size:11px}.sync-row{padding:12px 16px;align-items:flex-start}.scene-empty strong{font-size:17px}.scene-empty span{font-size:10px}.town-section{margin-top:40px}.section-heading h2{font-size:21px}.facility-grid,.lower-grid{grid-template-columns:1fr}.facility{padding:22px}.facility h3{margin-top:15px}.facility p{margin-bottom:15px}.facility-symbol{width:70px;height:70px;font-size:36px;line-height:70px;right:22px;top:25px}.lower-grid{gap:16px;margin-top:16px}.resident-grid{gap:0}.closing{flex-wrap:wrap;gap:14px;margin-top:32px}.closing img{width:54px;height:68px}.closing p{font-size:15px}.closing span{font-size:10px}.closing>a{margin:0 0 0 68px}.town-footer{padding:8px 18px 25px;font-size:9px}.sample-controls{display:flex;flex-wrap:wrap;margin:10px 0 0}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}

.town-walker{animation:town-stroll 9s ease-in-out infinite alternate}@keyframes town-stroll{from{transform:translate(-4px,0)}to{transform:translate(5px,-2px)}}@media(prefers-reduced-motion:reduce){.town-walker{animation:none}}

.people-focus-button{border:1px solid #ccb1f255;background:#ccb1f20d;color:#e5d6f3;border-radius:22px;padding:8px 14px;font-size:11px;white-space:nowrap}.people-focus-button[aria-pressed=true]{background:#eadcc4;color:#35283b;border-color:#eadcc4}.scene-top>div:first-child{margin-right:auto}.scene-top{flex-wrap:wrap}.town-crowd{pointer-events:none}.town-walker{paint-order:stroke fill}@media(max-width:580px){.scene-top{gap:10px}.people-focus-button{font-size:10px;padding:6px 11px}.scene-caption{gap:12px}.scene-caption span:last-child{max-width:145px;text-align:right;letter-spacing:0;font-size:8px}.resident .portrait{width:58px;height:66px;font-size:30px}.resident{gap:18px}.resident h3{font-size:22px}.resident .arrival{font-size:12px}}
