:root{font-family:DM Sans,sans-serif;color:#f7f4ed;background:#111c27;font-synthesis:none}*{box-sizing:border-box}html,body,#app{width:100%;height:100%;margin:0;overflow:hidden}button,input{font:inherit}button{cursor:pointer}#app{position:relative}#scene,#scene canvas{position:absolute;inset:0;width:100%;height:100%;display:block}#scene canvas{touch-action:none}.vignette{position:absolute;inset:0;pointer-events:none;background:linear-gradient(90deg,rgba(9,17,24,.34),transparent 31%,transparent 70%,rgba(9,17,24,.16)),linear-gradient(0deg,rgba(8,15,23,.4),transparent 30%);z-index:1}.glass{background:#111d26c2;border:1px solid rgba(255,255,255,.14);box-shadow:0 16px 48px #050d162b,inset 0 1px #ffffff14;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px)}.topbar{position:absolute;z-index:4;top:18px;left:22px;right:22px;height:72px;border-radius:16px;padding:0 24px;display:flex;align-items:center;justify-content:space-between}.brand{display:flex;gap:12px;align-items:center}.brand-mark{display:grid;place-items:center;width:36px;height:36px;border:1px solid rgba(242,189,112,.68);border-radius:11px;color:#efbd76;font-size:22px}.brand-kicker{font-size:9px;font-weight:700;letter-spacing:.24em;color:#d7bb91}.brand h1{font:700 25px/1 Fraunces,Georgia,serif;letter-spacing:-.035em;margin:3px 0 0}.brand-period{color:#edae68}.topbar-right{display:flex;align-items:center;gap:19px;font-size:11px;letter-spacing:.11em;font-weight:700}.live-pill{display:flex;align-items:center;gap:7px;color:#eacaa1}.live-dot,.event-light{height:7px;width:7px;border-radius:100%;background:#89d09a;box-shadow:0 0 10px #89d09a}.topbar-divider{width:1px;height:23px;background:#ffffff30}#clock{color:#fff9ec;font-variant-numeric:tabular-nums}.left-rail{position:absolute;z-index:3;top:118px;left:22px;width:277px;max-height:calc(100vh - 158px);display:flex;flex-direction:column}.eyebrow{font-size:10px;font-weight:700;letter-spacing:.22em;color:#ffe7bc;margin:0 0 10px 10px;text-shadow:0 1px 7px #12202a}.district{border-radius:17px;padding:18px 19px 16px}.district-top{display:flex;align-items:center;gap:7px;font-size:9px;letter-spacing:.19em;color:#cfcebf;font-weight:700}.district-icon{font-size:17px;color:#e7bd7a;line-height:1}.district-name{font:700 28px/1.1 Fraunces,Georgia,serif;letter-spacing:-.04em;margin:8px 0}.district p{margin:0;color:#cbd6d5;font-size:12px;line-height:1.55}.district-stats{display:flex;justify-content:space-between;gap:12px;border-top:1px solid rgba(255,255,255,.12);margin-top:15px;padding-top:13px}.district-stats div{display:flex;flex-direction:column;gap:3px}.district-stats strong{font-size:16px;letter-spacing:.02em;color:#fff4e4}.district-stats span{font-size:8px;letter-spacing:.14em;color:#9fb4b5;font-weight:700}.places-heading{display:flex;justify-content:space-between;margin-top:22px}.places-heading span{color:#aababa}.place-list{border-radius:17px;overflow:auto;padding:6px;min-height:0;scrollbar-width:thin;scrollbar-color:#5e7777 transparent}.place-button{display:flex;align-items:center;width:100%;gap:11px;border:0;background:transparent;color:#f9f6eb;text-align:left;padding:9px 10px;border-radius:10px;transition:background .2s}.place-button:hover,.place-button.active{background:#ffffff1f}.place-emoji{display:grid;place-items:center;width:32px;height:32px;flex:none;border-radius:9px;background:#ebbe7826;font-size:16px}.place-copy{display:flex;flex-direction:column;gap:2px;min-width:0}.place-copy strong{font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:600}.place-copy small{font-size:10px;color:#9fb7b6}.place-arrow{margin-left:auto;color:#a4b7af;font-size:13px}.rail-footnote{font-size:9px;letter-spacing:.1em;color:#c1cbc4;text-shadow:0 1px 6px #17222d;margin:10px 0 0 10px}.scene-controls{position:absolute;top:111px;left:50%;transform:translate(-50%);z-index:3;display:flex;align-items:center;padding:5px;border-radius:14px}.control{min-width:76px;height:47px;border:0;color:#b8c9c9;background:transparent;border-radius:10px;display:flex;gap:2px;flex-direction:column;justify-content:center;align-items:center;transition:background .2s,color .2s}.control span{font-size:18px;line-height:19px}.control small{font-size:9px;font-weight:700}.control:hover,.control.active{color:#fff9ef;background:#efbe7738}.control-divider{height:25px;width:1px;background:#ffffff24;margin:0 3px}.control.icon-only{min-width:52px;font-size:19px}.bottom-center{position:absolute;bottom:22px;left:50%;transform:translate(-50%);z-index:3;display:flex;align-items:center;flex-direction:column;gap:10px;width:min(470px,calc(100vw - 44px))}.hint{font-size:10px;letter-spacing:.13em;font-weight:700;text-shadow:0 2px 8px rgba(0,0,0,.8);white-space:nowrap}.hint span{color:#d6ac73;padding:0 6px}.timebar{height:64px;border-radius:16px;width:100%;padding:0 15px;display:flex;gap:13px;align-items:center}.timebar-icon{font-size:21px;color:#f4bc74}.timebar-icon.moon{color:#c8d5e7}.timebar-copy{display:flex;flex-direction:column;min-width:89px;gap:2px}.timebar-copy strong{font-size:9px;letter-spacing:.13em}.timebar-copy span{font-size:11px;color:#b8caca}.timebar input{flex:1;min-width:80px;accent-color:#e6b776;cursor:pointer}.right-rail{position:absolute;right:22px;top:118px;width:258px;z-index:3}.event-header{display:flex;gap:8px;align-items:center;padding:0 3px;margin:0 0 11px;font-size:10px;font-weight:700;letter-spacing:.15em;text-shadow:0 1px 6px #142530}.event-live{margin-left:auto;font-size:8px;color:#a4d6ae}.event-list{display:flex;flex-direction:column;gap:8px}.event{width:100%;border:1px solid rgba(255,255,255,.16);border-radius:13px;background:#0f1e26b8;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);padding:11px 12px;text-align:left;color:#f6f5eb;display:flex;gap:10px;box-shadow:0 8px 24px #0000001a;transition:background .2s,transform .2s;animation:event-in .45s ease both}.event:hover{background:#23353de0;transform:translate(-3px)}.event-emoji{font-size:18px}.event-text{font-size:11px;line-height:1.4}.event-text strong{color:#fff6e4;font-weight:700}.event-time{font-size:9px;color:#a1b8b7;margin-top:4px;letter-spacing:.05em}@keyframes event-in{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.detail{position:absolute;z-index:6;bottom:105px;right:22px;width:300px;border-radius:19px;padding:20px 20px 18px}.detail[hidden],.loading[hidden],.error[hidden]{display:none}.detail-close{position:absolute;right:14px;top:11px;border:0;background:none;color:#c3d1cf;font-size:23px}.detail-icon{font-size:28px}.detail-type{font-size:9px;letter-spacing:.2em;color:#e0b97e;font-weight:700;margin-top:12px}.detail h2{font:700 25px/1.1 Fraunces,Georgia,serif;margin:6px 0 8px}.detail p{font-size:12px;color:#cad5d2;line-height:1.55;margin:0 0 14px}.detail-meta{display:flex;gap:8px;flex-wrap:wrap}.detail-meta span{font-size:10px;padding:6px 8px;border-radius:7px;background:#ffffff1a;color:#e3ece6}.focus-button{margin-top:17px;border:0;border-radius:10px;background:#e6b875;color:#263038;font-weight:700;font-size:12px;width:100%;padding:10px 12px;display:flex;justify-content:space-between}.focus-button:hover{background:#f2cb91}.corner-note{position:absolute;z-index:3;right:24px;bottom:25px;color:#d7ded8;text-shadow:0 1px 7px #14232a;letter-spacing:.13em;font-size:9px;font-weight:700}.corner-note span{color:#e9be7a;padding:0 3px}.loading{position:absolute;z-index:12;inset:0;background:#172531;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;font:700 25px Fraunces,Georgia,serif;transition:opacity .6s}.loading-mark{color:#e7b879;font-size:44px;animation:twinkle 2s infinite}.loading small{font:500 11px DM Sans,sans-serif;letter-spacing:.12em;color:#a6b8b7;text-transform:uppercase}@keyframes twinkle{50%{opacity:.5;transform:scale(.85)}}.error{position:absolute;z-index:13;inset:0;display:grid;place-items:center;background:#172531;padding:30px;text-align:center}#app:has(.detail:not([hidden])) .right-rail{display:none}.concept-divider{margin:8px 8px 4px;padding:9px 4px 3px;border-top:1px solid rgba(255,255,255,.14);font-size:9px;font-weight:700;letter-spacing:.16em;color:#e7bf84}.place-button.concept .place-emoji{background:#e2b66938;color:#f6d4a0}.place-button.concept .place-copy small{color:#e0bf8a}.weather-menu{position:absolute;top:58px;right:4px;min-width:116px;padding:5px;border-radius:12px;display:grid;gap:2px}.weather-menu[hidden]{display:none}.weather-menu button{display:flex;align-items:center;gap:9px;width:100%;border:0;border-radius:7px;padding:8px 9px;text-align:left;color:#d5e1db;background:transparent;font-size:11px;font-weight:600}.weather-menu button span{font-size:15px;width:18px;text-align:center}.weather-menu button:hover,.weather-menu button.active{background:#ecc18038;color:#fff7e8}@media(max-width:1050px){.left-rail{width:225px}.district p{display:none}.right-rail{width:215px}.event:nth-child(n+4){display:none}.bottom-center{left:51%}.corner-note{display:none}}@media(max-width:760px){.topbar{top:10px;left:10px;right:10px;height:62px;padding:0 13px}.brand-mark{width:31px;height:31px;font-size:18px}.brand h1{font-size:21px}.brand-kicker{font-size:7px}.topbar-right{gap:7px}.live-pill{font-size:0}.live-dot{width:8px;height:8px}.topbar-divider{display:none}#clock{font-size:9px;white-space:nowrap}.left-rail{top:auto;bottom:89px;left:10px;width:175px;max-height:26vh}.left-rail>.eyebrow,.district,.rail-footnote{display:none}.places-heading{display:flex!important;margin:0 0 5px 4px;font-size:9px}.place-list{padding:3px}.place-button{padding:6px;gap:5px}.place-emoji{height:25px;width:25px;font-size:12px}.place-copy strong{font-size:10px}.place-copy small,.place-arrow{display:none}.scene-controls{top:82px;padding:3px}.control{min-width:62px;height:41px}.control span{font-size:15px}.control small{font-size:8px}.control.icon-only{min-width:44px}.right-rail{top:137px;right:10px;width:185px}.event-header{font-size:8px;gap:5px}.event-live{font-size:7px}.event{padding:7px;gap:6px}.event:nth-child(n+3){display:none}.event-emoji{font-size:14px}.event-text{font-size:9px}.event-time{font-size:8px}.bottom-center{left:50%;bottom:10px;width:calc(100vw - 20px)}.hint{display:none}.timebar{height:61px}.detail{left:10px;right:10px;bottom:88px;width:auto;max-width:400px}.corner-note{display:none}}@media(max-width:400px){.topbar-right #clock{font-size:8px}.brand h1{font-size:19px}.right-rail,.left-rail{width:150px}.control{min-width:55px}}@media(max-width:760px){.places-heading span{display:none}}
