:root{--parchment-50: #fbf3df;--parchment-100: #f3e6c4;--parchment-200: #e8d4a4;--parchment-300: #d6ba7e;--parchment-400: #b8965a;--ink: #3a2616;--ink-soft: #6b4f35;--ink-faint: rgba(58, 38, 22, .28);--seal: #7d231c;--font-display: "IM Fell English SC", "Zen Old Mincho", serif;--font-body: "Zen Old Mincho", "IM Fell English", "Yu Mincho", serif;--font-en: "IM Fell English", "Zen Old Mincho", serif;--gutter: 16px;--sidebar-w: 150px;--header-h: 64px}:root:lang(ko){--font-display: "IM Fell English SC", "Nanum Myeongjo", serif;--font-body: "Nanum Myeongjo", "IM Fell English", "Batang", serif;--font-en: "IM Fell English", "Nanum Myeongjo", serif}:root:lang(en){--font-body: "IM Fell English", "Zen Old Mincho", serif}*,*:before,*:after{box-sizing:border-box}html,body{height:100%;margin:0}html{-webkit-text-size-adjust:100%;text-size-adjust:100%}body{color:var(--ink);font-family:var(--font-body);background:radial-gradient(ellipse at 20% 10%,rgba(255,250,235,.7),transparent 60%),radial-gradient(ellipse at 80% 90%,rgba(160,110,50,.25),transparent 55%),radial-gradient(ellipse at center,var(--parchment-100) 40%,var(--parchment-300) 100%);overflow:hidden;overscroll-behavior:none;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit}.app{display:grid;grid-template-columns:var(--sidebar-w) 1fr;grid-template-rows:var(--header-h) 1fr;grid-template-areas:"header header" "floors stage";height:100dvh}.app-header{grid-area:header;min-width:0;display:flex;align-items:center;justify-content:space-between;gap:var(--gutter);padding:0 calc(var(--gutter) + 8px);border-bottom:1px solid var(--ink-faint);box-shadow:0 1px #fffaeb99}.app-brand{flex:1;display:flex;flex-direction:column;line-height:1.1;min-width:0}.app-brand-en{font-family:var(--font-display);font-size:24px;letter-spacing:.04em}.app-brand-ja{font-size:11px;letter-spacing:.3em;color:var(--ink-soft)}.app-floor{display:flex;align-items:baseline;gap:10px;white-space:nowrap}.app-floor-title{font-size:22px;font-weight:700}.app-floor-sub{font-family:var(--font-en);font-style:italic;font-size:15px;color:var(--ink-soft)}.app-floors{grid-area:floors;overflow-y:auto;padding:12px 10px 12px var(--gutter);border-right:1px solid var(--ink-faint)}.floor-selector{display:flex;flex-direction:column;gap:2px}.floor-tab{display:flex;flex-direction:column;align-items:flex-start;gap:1px;width:100%;padding:7px 10px 7px 14px;border:1px solid transparent;border-radius:3px;background:transparent;text-align:left;cursor:pointer;position:relative;transition:background-color .15s}.floor-tab:hover{background:#fffaeb73}.floor-tab:focus-visible{outline:2px solid var(--seal);outline-offset:1px}.floor-tab-label{font-size:16px;font-weight:700}.floor-tab-sub{font-family:var(--font-en);font-style:italic;font-size:12px;color:var(--ink-soft)}.floor-tab.is-active{background:var(--parchment-50);border-color:var(--ink-faint);box-shadow:0 1px 3px #3a26162e}.floor-tab.is-active:before{content:"";position:absolute;left:4px;top:9px;bottom:9px;width:3px;border-radius:2px;background:var(--seal)}.map-stage{grid-area:stage;position:relative;overflow:hidden;box-shadow:inset 0 0 40px #5a3c1959,inset 0 0 4px #5a3c1966}.map-svg{display:block;width:100%;height:100%;cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none}.map-svg.is-dragging{cursor:grabbing}.map-grain{pointer-events:none}.map-sheet{fill:var(--parchment-50);stroke:var(--ink-faint);stroke-width:2;vector-effect:non-scaling-stroke}.map-svg.is-magnified .layer-reference image{image-rendering:pixelated}.map-placeholder{font-family:var(--font-body);font-size:40px;fill:var(--ink-soft);opacity:.7}.zoom-controls{position:absolute;right:var(--gutter);bottom:var(--gutter);display:flex;flex-direction:column;align-items:stretch;width:56px;background:var(--parchment-50);border:1px solid var(--ink-faint);border-radius:4px;box-shadow:0 2px 8px #3a261638;overflow:hidden}.zoom-controls button{height:40px;border:0;background:transparent;font-size:18px;cursor:pointer}.zoom-controls button[data-act=fit]{font-size:13px;border-top:1px solid var(--ink-faint)}.zoom-controls button.zoom-labels{font-size:12px;line-height:1.1;padding:0 2px;border-top:1px solid var(--ink-faint);color:var(--ink-soft);text-decoration:line-through}.zoom-controls button.zoom-labels[aria-pressed=true]{color:var(--ink);text-decoration:none}.map-svg.hide-labels .map-label{display:none}.zoom-controls button:hover{background:var(--parchment-100)}.zoom-controls button:focus-visible{outline:2px solid var(--seal);outline-offset:-2px}.zoom-level{font-family:var(--font-en);font-size:12px;text-align:center;padding:2px 0;color:var(--ink-soft);border-top:1px solid var(--ink-faint);border-bottom:1px solid var(--ink-faint);font-variant-numeric:tabular-nums}.reference-panel{position:absolute;left:var(--gutter);bottom:var(--gutter);display:flex;flex-direction:column;gap:6px;padding:8px 12px;font-size:13px;background:#fbf3dff0;border:1px dashed var(--seal);border-radius:4px;box-shadow:0 2px 8px #3a261633}.reference-panel-title{cursor:pointer;list-style-position:inside;font-size:11px;letter-spacing:.15em;color:var(--seal);font-weight:700}.reference-toggle,.reference-opacity{display:flex;align-items:center;gap:6px}.reference-opacity input{width:110px;accent-color:var(--seal)}.reference-opacity output{width:3.2em;text-align:right;font-variant-numeric:tabular-nums}.reference-toggle input{accent-color:var(--seal)}@media(max-width:720px){:root{--header-h: 48px;--floorbar-h: 52px;--gutter: 12px}.app{grid-template-columns:minmax(0,1fr);grid-template-rows:calc(var(--header-h) + env(safe-area-inset-top)) minmax(0,1fr) calc(var(--floorbar-h) + env(safe-area-inset-bottom));grid-template-areas:"header" "stage" "floors"}.app-header{padding:env(safe-area-inset-top) calc(var(--gutter) + env(safe-area-inset-right)) 0 calc(var(--gutter) + env(safe-area-inset-left));gap:8px}.app-brand-en{font-size:17px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.app-brand-ja{display:none}.app-floor{gap:6px}.app-floor-title{font-size:17px}@media(max-width:520px){:root{--header-h: 76px}.app-header{flex-wrap:wrap;align-content:center;row-gap:4px}.app-brand{flex:1 0 100%;flex-direction:row;align-items:baseline;gap:10px}.app-brand-en{font-size:17px;overflow:visible}.app-brand-ja{display:inline;font-size:10px;letter-spacing:.2em;white-space:nowrap}.app-header .header-actions{flex:1 0 100%;justify-content:space-between;gap:4px}.app-header .lang-picker{padding:0 4px 0 6px}.app-header #characters-button{padding:4px 9px;gap:4px}}.app-floor-sub{display:none}.app-floors{display:flex;align-items:center;overflow-x:auto;overflow-y:hidden;padding:0 var(--gutter) env(safe-area-inset-bottom);border-right:0;border-top:1px solid var(--ink-faint);background:#f3e6c4eb;box-shadow:0 -2px 8px #3a26161f;scrollbar-width:none;overscroll-behavior-x:contain}.app-floors::-webkit-scrollbar{display:none}.floor-selector{flex-direction:row;gap:2px;margin:0 auto}.floor-tab{width:auto;min-width:48px;min-height:44px;flex:none;align-items:center;justify-content:center;padding:6px 10px}.floor-tab-label{font-size:15px;white-space:nowrap}.floor-tab-sub{display:none}.floor-tab.is-active:before{inset:auto 10px 3px;width:auto;height:3px}.zoom-controls{right:calc(var(--gutter) + env(safe-area-inset-right));bottom:var(--gutter);width:48px}.zoom-controls button{height:44px}.zoom-level{display:none}.reference-panel{left:calc(var(--gutter) + env(safe-area-inset-left));bottom:var(--gutter);max-width:calc(100% - 48px - var(--gutter) * 3);font-size:12px}.reference-opacity input{width:90px}}.map-shape{stroke-linejoin:miter}.shape-open{fill:#b8965a29;stroke:var(--ink-soft);stroke-width:1.5;stroke-dasharray:6 5}.shape-corridor{fill:#efe1bd;stroke:var(--ink-soft);stroke-width:1.5}.shape-room{fill:#f8eed4;stroke:var(--ink);stroke-width:3}.shape-stairs{fill:url(#stairs-hatch);stroke:var(--ink);stroke-width:2}.stairs-hatch-bg{fill:#f3e6c4}.stairs-hatch-line{stroke:var(--ink-soft);stroke-width:1.2}.shape-wall{fill:none;stroke:var(--ink);stroke-width:5;stroke-linecap:square}.map-label{font-family:var(--font-body);font-weight:500;fill:var(--ink);pointer-events:none;paint-order:stroke;stroke:#f6ecd3;stroke-width:3px;stroke-linejoin:round}.map-svg.hide-shapes .layer-map-shapes{display:none}.map-svg{--zoom: 1}.layer-names,.layer-events{pointer-events:none}.event-halloween{opacity:.85}.event-streamer{fill:none;stroke:#ee8a1e;stroke-width:2.4;stroke-linecap:round;opacity:.55}.event-pumpkin-body{fill:#e27a1c;stroke:#8a3f0c;stroke-width:.6}.event-pumpkin.is-big .event-pumpkin-body{fill:#d96c14;stroke-width:.9}.event-pumpkin-stem{fill:#4e6b25}.event-pumpkin-face{fill:#ffe27a;filter:drop-shadow(0 0 1.5px #ffcf40)}.event-bat{fill:#2b1d33;opacity:.8}.event-player{stroke:#fbf3df;stroke-width:.6;opacity:.9}.event-snitch{fill:#f2c230;stroke:#8a6a10;stroke-width:.4}.name-dot{fill:#3b2415}.name-leader{stroke:#3b2415;stroke-width:.9;stroke-dasharray:2 2}.name-tag.is-selected .name-dot{fill:var(--seal)}.name-tag-frame{fill:#fbf3dfe6;stroke:#3b2415;stroke-width:1.2}.name-tag-inner{fill:none;stroke:#3b2415;stroke-width:.6;stroke-opacity:.55}.map-name{font-family:var(--font-en);font-style:italic;font-size:14px;fill:var(--ink);text-anchor:middle;dominant-baseline:central}.name-tag.is-selected .name-tag-frame{stroke:var(--seal);stroke-width:1.8}.name-tag.is-selected .map-name{fill:var(--seal);font-weight:700}.crowd-badge{cursor:pointer}.crowd-badge-frame{fill:#f6ead0;stroke:#3b2415;stroke-width:.8}.crowd-badge.is-bare{opacity:.75}.crowd-badge.is-bare .crowd-badge-frame{fill:#fbf3df99;stroke:none}.crowd-badge-text{font-family:var(--font-en);font-style:italic;font-size:9px;fill:var(--ink);text-anchor:middle;dominant-baseline:central}.floor-tab-count{position:absolute;top:6px;right:8px;min-width:18px;padding:0 5px;border-radius:9px;background:var(--ink);color:var(--parchment-50);font-family:var(--font-body);font-size:11px;font-style:normal;line-height:18px;text-align:center}@media(max-width:720px){.floor-tab-count{top:2px;right:2px}}.map-clock{position:absolute;top:var(--gutter);right:var(--gutter);z-index:3;display:flex;flex-direction:column;align-items:flex-end;gap:1px;padding:5px 12px;border:1px solid var(--ink-faint);border-radius:10px;background:#fbf3dfeb;box-shadow:0 1px 4px #28190a26;color:var(--ink);cursor:pointer;line-height:1.2}.map-clock:hover{background:var(--parchment-50)}.map-clock-time{font-size:14px;font-weight:700;font-variant-numeric:tabular-nums}.map-clock-zone{color:var(--seal);font-size:11px;font-weight:700;letter-spacing:.04em}.has-dev-clock .map-clock{top:calc(var(--gutter) + 34px)}.dev-clock{position:absolute;top:10px;right:var(--gutter);padding:4px 10px;border:1px dashed var(--seal);border-radius:4px;background:#fbf3dff0;color:var(--seal);font-size:12px;font-weight:700;font-variant-numeric:tabular-nums;pointer-events:none}.layer-map-external{pointer-events:none}.castle-mass{fill:#5a3a22;fill-opacity:.07;fill-rule:evenodd;stroke:#5a3a22;stroke-opacity:.35;stroke-width:1.4;stroke-linejoin:round}.ink-dotted{fill:none;stroke:#3b2415;stroke-width:4.5;stroke-linecap:round;stroke-dasharray:.1 13}.void-well{fill:#5a3a22;fill-opacity:.05;stroke:#3b2415;stroke-width:2.2;stroke-opacity:.8;stroke-dasharray:10 3}.grand-stairs rect{fill:#f6ecd3;stroke:#3b2415;stroke-width:2.4}.grand-stairs .rail{stroke:#3b2415;stroke-width:1.8}.grand-stairs .steps line{stroke:#3b2415;stroke-width:1.2;stroke-opacity:.7}.grand-arrow{fill:none;stroke:#3b2415;stroke-width:2.6;stroke-linecap:round;stroke-linejoin:round}.greenhouses rect{fill:#7a8f6a;fill-opacity:.08;stroke:#3b2415;stroke-opacity:.5;stroke-width:2}.greenhouses .panes line{stroke:#3b2415;stroke-opacity:.25;stroke-width:1}.ghost-floor .ink-wall{fill:#5a3a22;fill-opacity:.26}.ink-wall{fill:#3b2415;fill-rule:nonzero}.ink-wall.wall-patch{fill:none;stroke:#3b2415;stroke-width:5.6;stroke-linecap:round;stroke-linejoin:round}.ghost-floor .ink-wall.wall-patch{fill:none;stroke:#5a3a22;stroke-opacity:.26}.ladder{fill:none;stroke:#3b2415;stroke-width:1.3;stroke-linecap:round}.ghost-floor .ladder{display:none}.trace-desks rect{fill:#b8894a;fill-opacity:.18;stroke:#5a3a22;stroke-width:1.1}.ghost-floor .trace-desks{display:none}.trace-shelves rect{fill:#b8894a;fill-opacity:.22;stroke:#5a3a22;stroke-width:1}.bath-water{fill:none;stroke:#5a3a22;stroke-width:1.6;stroke-linejoin:round}.ghost-floor .trace-shelves,.ghost-floor .bath-tub{display:none}.trace-tables rect{fill:none;stroke:#5a3a22;stroke-width:1.6}.stair-frame{fill:#f6ecd3;stroke:#3b2415;stroke-width:1.6}.stair-step{stroke:#3b2415;stroke-width:1.4}.stair-frame.is-down{fill:#cdb384}.stair-step.is-down{stroke-width:2}.map-label.is-vertical{writing-mode:vertical-rl;text-orientation:upright}.outside-panel{position:absolute;right:var(--gutter);top:var(--gutter);display:flex;flex-direction:column;align-items:flex-end;max-width:min(280px,calc(100% - var(--gutter) * 2 - 60px));z-index:2}.outside-panel[hidden]{display:none}.outside-toggle{padding:6px 12px;border:1px solid #3b2415;border-radius:3px;background:#fbf3dff0;box-shadow:inset 0 0 0 2px #fbf3dff0,inset 0 0 0 2.6px #3b241580,0 2px 6px #3a261633;font-size:13px;font-weight:700;cursor:pointer}.outside-toggle:after{content:" ▾";font-size:10px}.outside-toggle[aria-expanded=true]:after{content:" ▴"}.outside-list{list-style:none;margin:6px 0 0;padding:4px;background:#fbf3dff5;border:1px solid var(--ink-faint);border-radius:3px;box-shadow:0 2px 8px #3a261633;max-height:40vh;overflow-y:auto}.outside-list[hidden]{display:none}.outside-item{display:flex;flex-direction:column;align-items:flex-start;width:100%;padding:6px 8px;border:0;background:transparent;text-align:left;cursor:pointer}.outside-item:hover{background:var(--parchment-100)}.outside-name{font-family:var(--font-en);font-style:italic;font-size:14px}.outside-place{font-size:12px;color:var(--ink-soft)}.app.is-editing .outside-panel{display:none}.map-stage.has-dev-clock .outside-panel{top:calc(var(--gutter) + 34px)}.loading{position:fixed;inset:0;z-index:1000;display:grid;place-items:center;background:radial-gradient(ellipse at center,var(--parchment-50) 0%,var(--parchment-100) 60%,var(--parchment-200) 100%);color:var(--ink);transition:opacity .6s ease}.loading.is-done{opacity:0;pointer-events:none}.loading-inner{width:min(320px,calc(100vw - 64px));text-align:center}.loading-title{margin:0 0 6px;font-family:var(--font-display);font-size:26px;letter-spacing:.04em}.loading-text{margin:0 0 18px;font-family:var(--font-body);font-size:14px;color:var(--ink-soft);animation:loading-flicker 2.4s ease-in-out infinite}.loading-meter{height:12px;padding:2px;border:1.5px solid var(--ink);border-radius:7px 5px 6px;background:#fffaeb99;box-shadow:0 0 0 3px #3a261614}.loading-meter-fill{width:0;height:100%;border-radius:4px;background:repeating-linear-gradient(-45deg,var(--seal) 0 6px,#95322a 6px 12px);transition:width .25s ease-out}.loading-percent{margin:10px 0 0;font-family:var(--font-en);font-size:18px;color:var(--ink-soft);font-variant-numeric:tabular-nums}@keyframes loading-flicker{0%,to{opacity:1}50%{opacity:.55}}@media(prefers-reduced-motion:reduce){.loading-text{animation:none}}.floor-loading{position:absolute;left:50%;top:50%;z-index:20;width:min(260px,calc(100% - 48px));padding:14px 18px 10px;transform:translate(-50%,-50%);text-align:center;background:#fbf3dff0;border:1.5px solid var(--ink);border-radius:8px 6px 9px;box-shadow:0 6px 18px #3a26162e;pointer-events:none}.floor-loading[hidden]{display:none}.floor-loading .loading-text{margin-bottom:10px}.floor-loading .loading-percent{margin-top:6px;font-size:15px}.hall-benches rect{fill:#7854301f;stroke:#5a3a22;stroke-width:1.1}.statues path,.statues circle{fill:#efe4cc;stroke:#4a3020;stroke-width:1.6;stroke-linejoin:round;vector-effect:non-scaling-stroke}.toilets path{fill:none;stroke:#5a3a22;stroke-width:1.1;stroke-linecap:round;stroke-linejoin:round}.gr-lake{fill:none}.gr-waves{fill:none;stroke:#3b2415;stroke-opacity:.35;stroke-width:1.3;stroke-linecap:round}.gr-island,.gr-building,.gr-greenhouse,.gr-field,.gr-tower,.gr-houses path{fill:#f3e6c4;stroke:#3b2415;stroke-width:1.6;stroke-linejoin:round}.gr-greenhouse{fill:#7a8f6a;fill-opacity:.15}.gr-field{fill:#7a5a2a;fill-opacity:.1}.gr-pane{fill:none;stroke:#3b2415;stroke-opacity:.45;stroke-width:.9}.gr-forest{fill:#4f6b45;fill-opacity:.07;stroke:#3b2415;stroke-width:3.6;stroke-linecap:round;stroke-dasharray:.1 11}.gr-trees path,.gr-big-trees path{fill:#6f845f;fill-opacity:.16;stroke:#3b2415;stroke-width:1.2;stroke-linejoin:round}.gr-trees .trunk,.gr-big-trees .trunk{fill:none;stroke-width:1.4}.gr-rails{fill:none;stroke:#3b2415;stroke-width:1.2}.gr-road-edge{fill:none;stroke:#3b2415;stroke-width:9;stroke-linecap:round;stroke-linejoin:round}.gr-road{fill:none;stroke:#efe0bb;stroke-width:6.2;stroke-linecap:round;stroke-linejoin:round}.gr-path{fill:none;stroke:#3b2415;stroke-width:2.2;stroke-linecap:round;stroke-dasharray:7 6}.gr-rail{fill:none;stroke:#3b2415;stroke-width:1.4}.gr-rail-ties{fill:none;stroke:#3b2415;stroke-width:1.8}.gr-pitch{fill:#6f845f;fill-opacity:.14;stroke:#3b2415;stroke-width:1.4}.gr-hoops circle{fill:none;stroke:#3b2415;stroke-width:1.2}.gr-pumpkins circle{fill:#b8763a;fill-opacity:.5;stroke:#3b2415;stroke-width:.8}.gr-steps{fill:none;stroke:#3b2415;stroke-width:1.4}.gr-castle-base{fill:#f3e6c4}.hm-mountain{fill:none;stroke:#3b2415;stroke-width:2.2;stroke-linejoin:round}.hm-mountain-hatch{fill:none;stroke:#3b2415;stroke-opacity:.45;stroke-width:1.1;stroke-linecap:round}.hm-street-edge,.hm-lane-edge{fill:none;stroke:#3b2415;stroke-width:24;stroke-linecap:round;stroke-linejoin:round}.hm-lane-edge{stroke-width:13}.hm-street,.hm-lane{fill:none;stroke:#efe0bb;stroke-width:20.4;stroke-linecap:round;stroke-linejoin:round}.hm-lane{stroke-width:9.6}.hm-green{fill:#6f845f;fill-opacity:.12;stroke:#3b2415;stroke-width:2.4;stroke-linecap:round;stroke-dasharray:.1 7}.hm-well{fill:none;stroke:#3b2415;stroke-width:1.3}.hm-cottage,.hm-chimney,.hm-shack{fill:#f3e6c4;stroke:#3b2415;stroke-width:1.5;stroke-linejoin:round}.hm-shack{fill:#e2cfa6}.hm-thatch{fill:none;stroke:#7a5a2a;stroke-opacity:.6;stroke-width:.9}.hm-sign{fill:#c9a03a;stroke:#3b2415;stroke-width:.9}.hm-fence{fill:none;stroke:#3b2415;stroke-width:2.4;stroke-linecap:round;stroke-dasharray:.1 6}.hm-hedge{fill:#6f845f;fill-opacity:.06;stroke:#4f6b45;stroke-width:4;stroke-linecap:round;stroke-dasharray:.1 6}.hm-field-rows{fill:none;stroke:#7a5a2a;stroke-opacity:.3;stroke-width:1}.hm-stream{fill:none;stroke:#3b2415;stroke-width:1.6;stroke-opacity:.8;stroke-dasharray:14 4 3 4}.hm-bridge{fill:none;stroke:#3b2415;stroke-width:2;stroke-linecap:round}.hm-candles{display:none}.is-holiday .hm-candles{display:inline}.hm-candle{fill:#fff6c8}.hm-candle-glow{fill:#ffcf5a;opacity:.45;animation:hm-flicker 2.4s ease-in-out infinite}@keyframes hm-flicker{0%,to{opacity:.3}50%{opacity:.65}}@media(prefers-reduced-motion:reduce){.hm-candle-glow{animation:none}}.notice-panel{position:absolute;left:var(--gutter);top:var(--gutter);z-index:3;display:flex;flex-direction:column;gap:6px;max-width:min(320px,calc(100% - var(--gutter) * 3 - var(--clock-w, 120px)))}.notice-panel[hidden]{display:none}.notice-card{display:flex;align-items:stretch;border:1px solid #3b2415;border-radius:4px;background:#fbf3dff7;box-shadow:0 3px 10px #3a261640;animation:notice-in .4s ease-out}.notice-card.is-caught{border-color:var(--seal);box-shadow:inset 3px 0 0 var(--seal),0 3px 10px #3a261640}.notice-body{display:flex;flex:1;align-items:flex-start;gap:8px;padding:7px 4px 7px 10px;border:0;background:transparent;color:var(--ink);font-family:var(--font-body);font-size:13px;line-height:1.45;text-align:left;cursor:pointer}.notice-mark{flex:none;display:inline-grid;place-items:center;width:20px;height:20px;border-radius:50%;background:var(--seal);color:var(--parchment-50);font-size:12px;font-weight:700}.notice-card.is-detention .notice-mark{background:#4a3b2e;font-size:11px}.notice-close{flex:none;width:32px;border:0;background:transparent;color:var(--ink-soft);font-size:18px;cursor:pointer}@keyframes notice-in{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}@media(prefers-reduced-motion:reduce){.notice-card{animation:none}}.app.is-editing .notice-panel{display:none}.notice-card.is-feast .notice-mark,.notice-card.is-cup .notice-mark{background:#8a6a1f}.notice-card.is-exam .notice-mark,.notice-card.is-choice .notice-mark,.notice-card.is-match .notice-mark,.notice-card.is-matchResult .notice-mark{background:#b88a17}.notice-main{display:flex;flex:1;flex-direction:column;align-items:flex-start;padding-bottom:8px}.notice-join{margin-left:38px}.notice-card.is-holiday .notice-mark,.notice-card.is-during .notice-mark{background:#2f5d45}.notice-card.is-during.is-summer .notice-mark{background:#c27a17}.event-christmas{opacity:.85}.event-garland{fill:none;stroke:#4f6a48;stroke-width:3;stroke-linecap:round;opacity:.8}.event-garland-twist{fill:none;stroke:#8d9a70;stroke-width:1.1;stroke-dasharray:3 3;opacity:.85}.event-berry{fill:#8f3b31}.event-mistletoe{fill:#ece4cf;stroke:#9aa283;stroke-width:.4}.event-tree-body{fill:#566f4f;stroke:#3b4d37;stroke-width:.6}.event-cup{opacity:.9}.event-banner{stroke-width:1;stroke-linejoin:round}.event-banner.is-big{stroke-width:1.4}.event-ceiling{opacity:.45}.event-ceiling .event-garland{stroke-width:1.6}.event-frost{fill:#f7f4ec;stroke:#cfd8d4;stroke-width:.3}.event-snow{fill:#fffdf6;stroke:#b9a98b;stroke-width:.35}.event-tree-trunk{fill:#5e4532}.event-icicle{fill:none;stroke:#dfe6e2;stroke-width:1.2;stroke-linecap:round;filter:drop-shadow(0 0 .8px #f4efe2)}.event-candle{fill:#e9c77c;filter:drop-shadow(0 0 1.2px #d9a64e)}.event-hoop{fill:none;stroke:#8a5a2b;stroke-width:1.3;opacity:.85}.is-exam-hall .house-table,.is-exam-hall .house-benches{display:none}.event-exam-desks rect{fill:#b8894a;fill-opacity:.18;stroke:#5a3a22;stroke-width:1}.notice-choices{display:flex;gap:6px;flex:none}:root{--house-gryffindor: #8b1e1e;--house-gryffindor-2: #d4a017;--house-hufflepuff: #e0b12f;--house-hufflepuff-2: #2b2520;--house-ravenclaw: #1f3f76;--house-ravenclaw-2: #9a7648;--house-slytherin: #1f5c3b;--house-slytherin-2: #9aa3a8}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.lang-picker{position:relative;display:inline-flex;align-items:center;gap:4px;min-height:40px;padding:0 8px 0 10px;border:1px solid var(--ink-faint);border-radius:20px;background:var(--parchment-50)}.lang-picker:focus-within{outline:2px solid var(--seal);outline-offset:2px}.lang-select{appearance:none;border:0;background:transparent;font:inherit;font-size:14px;font-weight:700;color:inherit;padding:6px 2px;cursor:pointer;outline:none}.header-btn{display:inline-flex;align-items:center;gap:6px;min-height:40px;padding:6px 14px;border:1px solid var(--ink-faint);border-radius:20px;background:var(--parchment-50);font-size:14px;font-weight:700;cursor:pointer;white-space:nowrap}a.header-btn{box-sizing:border-box;color:inherit;text-decoration:none}.header-btn:hover{background:#fffaf0}.header-btn:focus-visible{outline:2px solid var(--seal);outline-offset:2px}.header-btn-count{min-width:20px;padding:0 6px;border-radius:10px;background:var(--seal);color:var(--parchment-50);font-size:12px;line-height:20px;text-align:center}.header-btn-count[hidden]{display:none}.sheet{width:min(560px,calc(100vw - 32px));max-height:min(820px,calc(100dvh - 48px));padding:0;border:1px solid var(--ink-faint);border-radius:8px;color:var(--ink);background:var(--parchment-50);box-shadow:0 12px 40px #28190a59;overflow:hidden;overflow:clip}.sheet[open]{display:flex}.sheet::backdrop{background:#28190a73}.sheet-inner,.cf{display:flex;flex-direction:column;flex:1;min-height:0;width:100%}.sheet-header{display:flex;align-items:center;gap:8px;padding:12px 12px 12px 20px;border-bottom:1px solid var(--ink-faint)}.sheet-title{flex:1;margin:0;font-size:19px}.sheet-count{color:var(--ink-soft);font-size:14px}.sheet-icon-btn{width:44px;height:44px;flex:none;border:0;border-radius:22px;background:transparent;font-size:26px;line-height:1;cursor:pointer;order:-1}.sheet-header>.sheet-icon-btn:last-child:not(:first-child){order:1}.sheet-icon-btn:hover{background:var(--parchment-100)}.sheet-fixed{flex:none;padding:12px 20px 10px;border-bottom:1px solid var(--ink-faint);background:var(--parchment-50)}.sheet-fixed .field-label:first-child{margin-top:0}.sheet-body{flex:1;min-height:0;overflow-y:auto;padding:16px 20px 24px;overscroll-behavior:contain}.sheet-footer{display:flex;gap:8px;justify-content:flex-end;padding:12px 16px calc(12px + env(safe-area-inset-bottom));border-top:1px solid var(--ink-faint);background:var(--parchment-100)}.btn{min-height:44px;padding:8px 18px;border:1px solid var(--ink-faint);border-radius:6px;background:var(--parchment-50);font-size:15px;font-weight:700;cursor:pointer}.btn:hover:not(:disabled){background:#fffaf0}.btn:disabled{opacity:.4;cursor:default}.btn:focus-visible,.chip:focus-visible,.house-option:focus-visible,.day-tab:focus-visible,.cf-step:focus-visible,.char-row:focus-visible,.sheet-icon-btn:focus-visible{outline:2px solid var(--seal);outline-offset:2px}.btn.is-primary{background:var(--seal);border-color:var(--seal);color:var(--parchment-50)}.btn.is-primary:hover:not(:disabled){background:#6a1d17}.btn.is-danger{color:var(--seal);border-color:#7d231c73}.btn.is-small{min-height:36px;padding:4px 12px;font-size:13px}.btn.is-wide{flex:1}.input{width:100%;min-height:44px;padding:8px 12px;border:1px solid var(--ink-faint);border-radius:6px;background:#fffdf6;color:var(--ink);font:inherit;font-size:16px}.input:focus{outline:2px solid var(--seal);outline-offset:0;border-color:transparent}.field-label{display:block;margin:18px 0 8px;font-size:14px;font-weight:700}.field-label:first-child{margin-top:0}.field-note{margin:8px 0 0;color:var(--ink-soft);font-size:13px;line-height:1.6}.field-note.is-lead{margin:0 0 8px;font-size:14px}.notice{margin:0 0 12px;padding:10px 12px;border-radius:6px;font-size:13px;line-height:1.6}.notice.is-warn{background:#b36a001f;color:#6e4200}.empty{padding:32px 8px;text-align:center}.empty-title{margin:0 0 4px;font-size:17px;font-weight:700}.house-gryffindor{--house: var(--house-gryffindor);--house-2: var(--house-gryffindor-2)}.house-hufflepuff{--house: var(--house-hufflepuff);--house-2: var(--house-hufflepuff-2)}.house-staff{--house: #4a3b2e;--house-2: #b8963e}.house-ravenclaw{--house: var(--house-ravenclaw);--house-2: var(--house-ravenclaw-2)}.house-slytherin{--house: var(--house-slytherin);--house-2: var(--house-slytherin-2)}.house-swatch{width:14px;height:28px;flex:none;border-radius:3px;background:linear-gradient(to bottom,var(--house) 60%,var(--house-2) 60%)}.house-picker{display:grid;grid-template-columns:1fr 1fr;gap:8px}.house-option{display:flex;align-items:center;gap:10px;min-height:52px;padding:8px 12px;border:1px solid var(--ink-faint);border-radius:6px;background:#fffdf6;font-size:15px;font-weight:700;text-align:left;cursor:pointer}.house-option[aria-checked=true]{border:2px solid var(--house);padding:7px 11px;background:color-mix(in srgb,var(--house) 10%,#fffdf6)}.char-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.char-row{display:flex;align-items:center;gap:12px;width:100%;min-height:60px;padding:10px 12px;border:1px solid var(--ink-faint);border-radius:6px;background:#fffdf6;text-align:left;cursor:pointer}.char-row:hover{background:#fff}.char-text{display:flex;flex-direction:column;flex:1;min-width:0}.char-name{font-family:var(--font-en);font-size:18px;overflow-wrap:anywhere}.char-meta{color:var(--ink-soft);font-size:12px}.char-chevron{color:var(--ink-soft);font-size:22px}.cf-steps{display:flex;gap:2px;margin:0;padding:6px 8px;overflow-x:auto;list-style:none;border-bottom:1px solid var(--ink-faint);background:var(--parchment-100);scrollbar-width:none}.cf-steps>li{flex:none}.cf-step{display:flex;align-items:center;gap:5px;min-height:34px;padding:2px 8px;border:0;border-radius:17px;background:transparent;color:var(--ink-soft);white-space:nowrap;cursor:pointer}.cf-step-no{width:22px;height:22px;border:1px solid var(--ink-faint);border-radius:11px;font-size:12px;line-height:20px;text-align:center}.cf-step-label{font-size:12px}.cf-step.is-active{color:var(--ink);font-weight:700}.cf-step.is-active .cf-step-no{background:var(--seal);border-color:var(--seal);color:var(--parchment-50)}.cf-step.is-done .cf-step-no{background:var(--parchment-300)}.cf-error{margin:12px 0 0;color:var(--seal);font-weight:700;font-size:14px}.cf-error:empty{display:none}.cf-delete{margin-top:32px}.day-tabs{display:grid;grid-template-columns:repeat(5,1fr);gap:4px;margin-bottom:12px}.day-tab{display:flex;flex-direction:column;align-items:center;min-height:48px;padding:4px;border:1px solid var(--ink-faint);border-radius:6px;background:#fffdf6;font-size:16px;font-weight:700;cursor:pointer}.day-tab[aria-selected=true]{background:var(--ink);border-color:var(--ink);color:var(--parchment-50)}.day-tab-count{font-size:11px;font-weight:500;opacity:.75}.slot-list{display:flex;flex-direction:column;gap:8px;margin-bottom:12px}.slot{padding:10px 12px;border:1px solid var(--ink-faint);border-radius:6px;background:#fffdf6}.slot.is-double{border-left:4px solid var(--seal)}.slot-head{display:flex;align-items:baseline;gap:8px;margin-bottom:6px}.slot-no{font-weight:700}.slot-time{color:var(--ink-soft);font-size:13px;font-variant-numeric:tabular-nums}.slot-double{margin:6px 0 0;color:var(--seal);font-size:12px;font-weight:700}.slot-lunch{padding:2px 12px;color:var(--ink-soft);font-size:12px;text-align:center}.dest{margin-top:10px}.dest-label{display:block;margin-bottom:6px;font-size:12px;color:var(--ink-soft)}.dest-add{width:auto;min-height:36px;padding:4px 8px;font-size:14px}.chips{display:flex;flex-wrap:wrap;gap:6px}.chip{display:inline-flex;align-items:center;gap:6px;min-height:40px;padding:6px 14px;border:1px solid var(--ink-faint);border-radius:20px;background:#fffdf6;font-size:14px;cursor:pointer}.chip.is-selected{background:var(--ink);border-color:var(--ink);color:var(--parchment-50)}.chip-x{font-size:15px;opacity:.8}.switch.is-disabled{opacity:.45;cursor:not-allowed}.switch{position:relative;display:flex;align-items:center;gap:12px;min-height:52px;cursor:pointer;font-size:15px;font-weight:700}.switch-input{position:absolute;top:0;left:0;margin:0;opacity:0;width:1px;height:1px}.switch-track{position:relative;width:52px;height:30px;flex:none;border-radius:15px;background:var(--parchment-300);transition:background-color .15s}.switch-track:after{content:"";position:absolute;top:3px;left:3px;width:24px;height:24px;border-radius:12px;background:#fff;box-shadow:0 1px 3px #0000004d;transition:transform .15s}.switch-input:checked+.switch-track{background:var(--seal)}.switch-input:checked+.switch-track:after{transform:translate(22px)}.switch-input:focus-visible+.switch-track{outline:2px solid var(--seal);outline-offset:2px}@media(max-width:720px){.sheet{width:100vw;max-width:none;height:100dvh;max-height:none;margin:0;border:0;border-radius:0;padding-top:env(safe-area-inset-top)}.sheet-body{padding:14px 16px 24px}.header-btn{min-height:36px;padding:4px 12px;font-size:13px}.lang-picker{min-height:36px;padding:0 6px 0 8px}.lang-picker .header-icon{display:none}.lang-select{font-size:13px}}@media(prefers-reduced-motion:reduce){.switch-track,.switch-track:after{transition:none}}.list-tools{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}.list-footer{flex-direction:column;align-items:stretch;gap:10px;padding-top:10px;overflow-x:clip}.list-footer .list-tools{flex-wrap:nowrap;min-width:0;margin:0;padding:0 0 2px;overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:none}.list-footer .list-tools::-webkit-scrollbar{display:none}.list-footer .list-tools .btn{flex:0 0 auto;min-height:38px;padding:6px 14px;font-size:14px;white-space:nowrap}.cf-manage{display:flex;flex-wrap:wrap;gap:8px;margin-top:32px}.notice.is-ok{background:#2e7d4f1f;color:#1f5a37}.transfer-text{min-height:110px;font-family:ui-monospace,Consolas,monospace;font-size:13px;line-height:1.4;word-break:break-all;resize:vertical}.transfer-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}.transfer-status:empty{display:none}.transfer-names{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.transfer-names li{display:flex;align-items:center;gap:8px;font-family:var(--font-en);font-size:16px}.transfer-names .house-swatch{height:20px;width:10px}.transfer-mode{display:flex;flex-direction:column;gap:8px;margin-top:16px}.transfer-option{display:flex;gap:10px;align-items:flex-start;padding:10px 12px;border:1px solid var(--ink-faint);border-radius:6px;background:#fffdf6;cursor:pointer}.transfer-option input{margin-top:4px;accent-color:var(--seal)}.transfer-option span{display:flex;flex-direction:column}.transfer-option .field-note{margin:2px 0 0}.header-actions{display:flex;align-items:center;gap:8px;flex:none}.header-icon{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round}.header-icon .dot{fill:currentColor}.header-btn.is-icon{width:40px;padding:0;justify-content:center}.search-sheet{align-self:flex-start;margin-top:10vh}.search-header{padding:10px 10px 10px 16px}.search-header .input{flex:1}.search-results{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.info-card{position:absolute;top:max(12px,var(--notice-bottom, 0px));left:12px;z-index:2;width:min(320px,calc(100% - 24px));padding:12px 12px 12px 16px;border:1px solid var(--ink-faint);border-left:5px solid var(--house, var(--ink));border-radius:8px;background:#fbf3dff7;box-shadow:0 4px 16px #28190a40}.info-card[hidden]{display:none}.info-head{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}.info-name{margin:2px 0 0;font-family:var(--font-en);font-style:italic;font-size:22px;font-weight:400;line-height:1.15;overflow-wrap:anywhere}.info-house{margin:2px 0 0;color:var(--ink-soft);font-size:13px}.info-close{order:1;width:40px;height:40px;margin:-6px -4px 0 0;font-size:22px}.info-rows{display:grid;grid-template-columns:auto 1fr;gap:4px 10px;margin:10px 0 0;font-size:14px}.info-rows dt{color:var(--ink-soft)}.info-rows dd{margin:0;font-weight:700}.info-rows dd.is-event{color:var(--seal)}.info-event{position:relative;display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;margin-left:6px;padding:0;border:1px solid var(--seal);border-radius:11px;background:#7d231c14;color:var(--seal);font-size:12px;line-height:1;vertical-align:-3px;cursor:pointer}.info-event:after{content:"";position:absolute;inset:-10px}.info-event:hover,.info-event:focus-visible{background:#7d231c2e}.info-event-wrap{position:relative;display:inline-block}.info-event-tip{position:absolute;bottom:calc(100% + 6px);left:50%;z-index:2;padding:3px 10px;border-radius:6px;background:var(--ink);color:var(--parchment-50);font-size:12px;font-weight:700;white-space:nowrap;transform:translate(-50%);box-shadow:0 2px 6px #28190a40;pointer-events:none}.info-event-tip[hidden]{display:none}.info-event-tip:after{content:"";position:absolute;top:100%;left:50%;border:5px solid transparent;border-top-color:var(--ink);transform:translate(-50%)}.info-note{margin:8px 0 0;color:#6e4200;font-size:12px}.info-note:empty{display:none}.info-actions{margin-top:10px}.map-hint{position:absolute;left:50%;top:calc(var(--gutter) + 36px);transform:translate(-50%);width:max-content;max-width:min(420px,calc(100% - 140px));margin:0;padding:10px 14px;border:1px solid var(--ink-faint);border-radius:8px;background:#fbf3dff2;color:var(--ink-soft);font-size:13px;line-height:1.6;text-align:center;box-shadow:0 2px 8px #28190a26;pointer-events:none}.map-hint[hidden]{display:none}.about-body p{margin:0 0 10px;font-size:14px;line-height:1.8}.about-hero{padding:10px 0 6px;text-align:center}.about-body .about-hero-en{margin:0;font-family:var(--font-display);font-size:28px;line-height:1.2;letter-spacing:.04em}.about-body .about-hero-ja{margin:2px 0 0;color:var(--ink-soft);font-size:12px;letter-spacing:.3em}.about-rule{position:relative;display:block;width:180px;height:1px;margin:14px auto 16px;background:linear-gradient(90deg,transparent,var(--seal) 30%,var(--seal) 70%,transparent)}.about-rule:after{content:"";position:absolute;top:-4px;left:50%;width:7px;height:7px;background:var(--parchment-50);border:1px solid var(--seal);transform:translate(-50%) rotate(45deg)}.about-body .about-lead{max-width:30em;margin:0 auto;font-size:15px;text-align:left}.about-section{margin-top:26px}.about-section h3{display:flex;align-items:center;gap:10px;margin:0 0 10px;font-size:15px;letter-spacing:.06em}.about-section h3:after{content:"";flex:1;height:1px;background:var(--ink-faint)}.about-credit{padding:8px 12px;border-left:3px solid var(--seal);background:var(--parchment-100);font-family:var(--font-en);font-style:italic}.about-links{display:grid;gap:8px;margin-top:12px}.about-link{display:flex;align-items:center;gap:12px;min-height:52px;padding:8px 14px;border:1px solid var(--parchment-300);border-radius:10px;background:var(--parchment-50);color:var(--ink);text-decoration:none;transition:background .15s,border-color .15s}.about-link:hover,.about-link:focus-visible{border-color:var(--seal);background:var(--parchment-100)}.about-link-label{flex:0 0 auto;min-width:5.5em;color:var(--seal);font-size:12px;font-weight:700;letter-spacing:.04em}.about-link-main{display:flex;flex:1;flex-direction:column;min-width:0}.about-link-title{font-size:15px;font-weight:700}.about-link-sub{overflow:hidden;color:var(--ink-soft);font-family:var(--font-en);font-size:13px;text-overflow:ellipsis;white-space:nowrap}.about-link-arrow{flex:0 0 auto;color:var(--ink-soft);font-size:14px}.about-fan{padding:14px 16px 6px;border:1px dashed var(--parchment-400);border-radius:10px;background:#f3e6c473}.about-fan h3:after{display:none}.about-fan p{color:var(--ink-soft);font-size:13px}.about-body .about-fonts{margin:22px 0 4px;color:var(--ink-soft);font-size:12px;line-height:1.6;text-align:center}@media(max-width:720px){.header-actions{gap:6px}.header-btn-label{display:none}#search-button{width:36px;padding:0;justify-content:center}.header-btn.is-icon{width:36px}.app-floor{display:none}.search-sheet{margin-top:0}.info-card{top:auto;bottom:12px;left:12px;width:calc(100% - 84px)}.map-hint{max-width:calc(100% - 32px)}}.field-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.field-row>div{min-width:0}.cf-template{margin-bottom:12px}.cf-template .field-note{margin-top:4px}.cf-template select+select{margin-top:6px}.tally{margin-bottom:10px;border:1px dashed var(--ink-faint);border-radius:6px;background:#fffdf699;font-size:13px}.tally-summary{padding:6px 10px;color:var(--ink-soft);cursor:pointer;list-style-position:inside}.tally[open] .tally-summary{border-bottom:1px dashed var(--ink-faint)}.tally-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:2px 14px;margin:0;padding:6px 10px 8px;list-style:none}.tally-item{display:flex;justify-content:space-between;gap:8px}.tally-count{font-weight:700;font-variant-numeric:tabular-nums}.slot.is-night{border-style:dashed;background:#3a26160a}.slot.is-night.is-on{border-style:solid;border-left:4px solid var(--ink)}.slot.is-night .field-note{margin:6px 0 0}.chip-note{font-size:11px;opacity:.75}.appt-spot{font-size:14px}.appt-members{display:flex;flex-direction:column;gap:6px;margin:0 0 12px;padding:0;list-style:none}.appt-member{display:flex;align-items:center;gap:10px;min-height:52px;padding:8px 12px;border:1px solid var(--ink-faint);border-radius:6px;background:#fffdf6;cursor:pointer}.appt-member.is-busy{opacity:.55;cursor:not-allowed}.appt-check{width:20px;height:20px;accent-color:var(--seal)}.sheet.guide-sheet{width:min(460px,calc(100vw - 32px));height:auto;max-height:min(640px,calc(100dvh - 48px));margin:auto;border-radius:10px}.guide-body{font-size:15px;line-height:1.75}.guide-list{margin:0;padding-left:1.2em}.guide-list li+li{margin-top:10px}.guide-warn{margin:16px 0 4px;padding:10px 12px;border:1.5px solid var(--seal);border-radius:6px;background:#7d231c12;color:var(--seal);font-weight:700}.guide-dots{display:flex;gap:6px;margin-right:auto}.guide-dots span{width:7px;height:7px;border-radius:50%;background:var(--ink-faint)}.guide-dots span.is-on{background:var(--ink)}.btn.is-guide{gap:6px;border-style:dashed;border-color:var(--seal);background:transparent;color:var(--seal)}.guide-mark{display:inline-grid;place-items:center;width:18px;height:18px;border-radius:50%;background:var(--seal);color:var(--parchment-50);font-size:12px;font-weight:700;line-height:1}.tt-body{padding-left:10px;padding-right:10px}.tt-crest{display:flex;align-items:center;justify-content:center;gap:10px;color:var(--ink)}.tt-crest-name{font-family:var(--font-display);font-size:22px;letter-spacing:.14em;text-transform:uppercase}.tt-crest.house-gryffindor .tt-crest-name{color:#7a1f1a}.tt-crest.house-slytherin .tt-crest-name{color:#1f4d33}.tt-crest.house-ravenclaw .tt-crest-name{color:#23395e}.tt-crest.house-hufflepuff .tt-crest-name{color:#6e5412}.tt-crest-orn{font-size:18px;opacity:.7}.tt-crest-orn.is-right{transform:scaleX(-1)}.tt-who{display:flex;justify-content:center;gap:10px;margin:0 2px 10px;color:var(--ink-soft);font-size:12px}.tt-who-name{font-family:var(--font-en);font-style:italic;color:var(--ink)}.tt-grid{display:grid;grid-template-columns:26px repeat(2,minmax(0,1fr)) 16px repeat(4,minmax(0,1fr));grid-template-rows:32px repeat(5,minmax(50px,auto));gap:3px}.tt-corner{border-radius:4px}.tt-day{display:grid;place-items:center;border-radius:4px;background:#3a261614;font-weight:700;font-size:13px}.tt-day.is-today{background:var(--seal);color:var(--parchment-50)}.tt-period{display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--ink-soft);font-size:11px;line-height:1.2}.tt-period-no{font-size:13px;font-weight:700;color:var(--ink)}.tt-period-time{font-size:10px;font-variant-numeric:tabular-nums}.tt-period.is-lunch{font-size:10px}.tt-lunch{display:grid;place-items:center;align-self:stretch;min-height:0;border-radius:3px;background:repeating-linear-gradient(0deg,rgba(58,38,22,.08) 0 4px,transparent 4px 8px);color:var(--ink-soft);font-size:11px;letter-spacing:.2em}.tt-lunch-text{writing-mode:vertical-rl}:root:lang(en) .tt-lunch{font-size:10px;letter-spacing:.05em}.tt-cell{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-width:0;padding:4px 2px;border:1px solid rgba(58,38,22,.22);border-radius:5px;background:#fffdf6;color:var(--ink);font-family:var(--font-body);line-height:1.2;cursor:pointer}.tt-cell-name{font-size:12px;font-weight:700;overflow-wrap:anywhere;text-align:center}.tt-cell-note{font-size:9px;opacity:.7}.tt-cell.is-free{border-style:dashed;background:transparent;color:var(--ink-soft)}.tt-cell.is-free .tt-cell-name{font-weight:400;font-size:11px}.tt-cell.is-night.is-empty{border-color:transparent;background:#3a26160a;cursor:default}.tt-cell.is-today:not(.is-empty){box-shadow:inset 0 0 0 1px var(--seal)}.tt-cell.is-now{box-shadow:inset 0 0 0 2.5px var(--seal)}.subj-transfiguration{background:#e6dcef}.subj-charms{background:#dbe8f0}.subj-potions{background:#dde8d6}.subj-herbology{background:#e8eecf}.subj-dada{background:#f0d9d5}.subj-history{background:#ece3cf}.subj-astronomy{background:#d9def0}.subj-divination{background:#eddcf0}.subj-muggle-studies{background:#f3e6cc}.subj-care{background:#e0ebd3}.subj-runes{background:#e9dfc9}.subj-arithmancy{background:#d9e8e6}.subj-alchemy{background:#efe0cf}.subj-flying{background:#e2ecd9}.tt-detail{display:flex;align-items:center;gap:8px;min-height:2.6em;margin:12px 2px 0;padding:8px 10px;border-radius:6px;background:#3a26160d;color:var(--ink-soft);font-size:13px}.tt-tabs{display:flex;gap:6px;margin:0 0 12px;padding-bottom:4px;overflow-x:auto;scrollbar-width:none}.tt-tab{display:inline-flex;flex:none;align-items:center;gap:6px;min-height:36px;padding:4px 12px;border:1px solid var(--ink-faint);border-radius:18px;background:#fffdf6;font-family:var(--font-en);font-size:14px;white-space:nowrap;cursor:pointer}.tt-tab[aria-selected=true]{border-color:var(--ink);background:var(--ink);color:var(--parchment-50)}.lineup{margin:0 0 16px;padding:12px;border:1px solid rgba(184,138,23,.55);border-radius:8px;background:#fff4cd99}.lineup-title{margin:0 0 4px;font-size:15px}.lineup-team{margin-top:10px}.lineup-house{display:flex;align-items:center;gap:8px;margin:0 0 4px;font-weight:700}.lineup-pos{margin:6px 0}.holiday-section{margin:0 0 18px}.holiday-title{margin:0 0 4px;font-size:15px}.holiday-ignore.is-now{margin:0 0 18px;padding:12px;border:1px solid rgba(47,93,69,.4);border-radius:8px;background:#dfeee280}.holiday-list{margin:8px 0 0;padding:0;list-style:none}.holiday-row{display:flex;align-items:center;gap:10px;padding:8px 4px;border-bottom:1px solid rgba(58,38,22,.12)}.holiday-row .char-meta{margin-left:auto}.holiday-row .holiday-return{flex:none}.holiday-list+.holiday-title{margin-top:22px}.list-row{cursor:default;padding:6px 8px;gap:6px}.list-row-text{display:flex;align-items:center;gap:8px;flex:1;min-width:0;min-height:48px;padding:0 4px;border:0;background:none;text-align:left;cursor:pointer;color:inherit}.eye-btn{display:inline-flex;align-items:center;justify-content:center;flex:none;width:44px;height:44px;border:1px solid var(--ink-faint);border-radius:50%;background:var(--parchment-50);color:var(--ink);cursor:pointer}.eye-btn.is-off{color:var(--ink-soft);background:transparent;border-style:dashed}.eye-icon{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round}.list-only{flex:none;white-space:nowrap}.list-only-row{display:flex;justify-content:space-between;align-items:center;gap:8px;margin:-4px 0 10px}.list-sort{width:auto;flex:none;min-height:0;padding:4px 28px 4px 10px;font-size:.85rem}.char-row.is-hidden{opacity:.55}.list-row.is-hidden{opacity:1}.list-row.is-hidden .list-row-text{opacity:.55}.list-filter{margin-bottom:10px}.chip.is-off:not(.is-selected){border-style:dashed;color:var(--ink-soft)}.list-row-text.is-static{cursor:default}.list-row.is-unlisted{border-style:dashed}.char-name.is-plain{font-family:inherit;font-size:16px}.list-sort-bar{display:flex;justify-content:flex-end;margin:-4px 0 8px}.char-list.is-sorting{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}.char-list.is-sorting .list-row{min-height:56px;padding-left:14px}.sort-handle{display:inline-flex;align-items:center;justify-content:center;flex:none;width:44px;height:44px;font-size:24px;color:var(--ink-soft);cursor:grab;touch-action:none}.char-list.is-sorting li.is-dragging{position:relative;z-index:2}.char-list.is-sorting li.is-dragging .char-row{box-shadow:0 6px 18px #28190a40;background:#fff}.char-list.is-sorting.is-dragging .sort-handle{cursor:grabbing}@media(max-width:700px){.list-filter{flex-wrap:nowrap;overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:none;margin-left:-20px;margin-right:-20px;padding:0 20px 2px;scroll-padding:0 20px}.list-filter::-webkit-scrollbar{display:none}.list-filter .chip{flex:none;white-space:nowrap}}.tt-teach-tally{margin:0 0 8px;text-align:center;font-size:13px;color:var(--ink-soft)}.char-list.is-sorting .list-row-text{align-items:flex-start;justify-content:center}.tt-tab.is-hidden{opacity:.5}.tt-tab.is-hidden[aria-selected=true]{opacity:.75}.snap-tags{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0 6px}.snap-tag{font-family:inherit}.tt-actions{display:flex;justify-content:center;gap:10px;margin-top:12px}.tt-save{padding:6px 16px;min-height:0;font-size:13px}.cf-tt-grid{margin-top:10px}.cf-tt-grid .tt-cell .tt-cell-name{font-size:11px}.cf-cell-editor{display:grid;gap:8px;margin-top:10px;padding:10px 12px;border:1px solid var(--ink-faint);border-radius:8px;background:#fffdf6}.cf-cell-title{margin:0;font-weight:700}.cf-cell-editor .btn.is-small{justify-self:start}.cf-tools .cf-template,.cf-more-body{padding:4px 10px 10px}.cf-more{margin-top:14px}.cf-more-now{margin-left:8px;color:var(--seal);font-size:12px}.dest-fav{margin-top:8px}.promo-body p{margin:0 0 12px;line-height:1.75}.promo-lead{font-weight:700}.promo-strip{display:flex;gap:10px;overflow-x:auto;scroll-snap-type:x mandatory;margin:4px -4px;padding:4px 4px 10px;-webkit-overflow-scrolling:touch}.promo-shot-btn{flex:none;scroll-snap-align:start;padding:0;border:1px solid rgba(58,38,22,.25);border-radius:8px;background:none;cursor:zoom-in;overflow:hidden}.promo-shot{display:block;height:220px;width:auto}.promo-hint{margin-top:-4px!important}.promo-footer{display:flex;flex-direction:column;gap:8px}.promo-footer .btn{text-align:center;text-decoration:none}.promo-zoom{width:100vw;height:100dvh;max-width:none;max-height:none;margin:0;padding:16px;border:0;background:transparent;cursor:zoom-out}.promo-zoom[open]{display:grid;place-items:center}.promo-zoom::backdrop{background:#140c06d1}.promo-zoom img{max-width:100%;max-height:100%;border-radius:8px}.sheet.promo-sheet,.sheet.promo-sheet[open]{--promo-w: min(340px, calc(100vw - 64px) );width:var(--promo-w);max-width:none;height:auto;max-height:min(520px,62dvh);margin:18dvh 0 auto calc((100vw - var(--promo-w)) / 2);border:1px solid var(--ink-faint);border-radius:10px;padding-top:0}.promo-sheet .sheet-header{padding-top:10px;padding-bottom:10px}.promo-sheet .sheet-title{font-size:17px}.promo-sheet .promo-body{padding:12px 16px 14px;font-size:13.5px}.promo-sheet .promo-body p{margin-bottom:8px;line-height:1.65}.promo-sheet .promo-shot{height:130px}.promo-sheet .promo-footer{flex-direction:row;gap:8px;padding:10px 16px}.promo-sheet .promo-footer .btn{flex:1;width:auto;min-height:40px;padding:6px 8px;font-size:14px}.promo-sheet .promo-footer .btn.is-primary{flex:1.6;white-space:nowrap}@media(hover:hover)and (pointer:fine){.list-footer .list-tools{flex-wrap:wrap;overflow-x:visible}.cf-steps,.tt-tabs{scrollbar-width:thin}}.has-scroll-hint{position:relative}.scroll-hint{position:sticky;z-index:2;display:none;flex:0 0 0;align-self:stretch;width:0;min-width:0;padding:0;border:0;background:none;cursor:pointer}.scroll-hint.is-left{left:0;margin-right:calc(var(--hint-gap, 0px) * -1)}.scroll-hint.is-right{right:0;margin-left:calc(var(--hint-gap, 0px) * -1)}.more-left>.scroll-hint.is-left,.more-right>.scroll-hint.is-right{display:block}.scroll-hint-mark{position:absolute;top:0;bottom:0;display:flex;align-items:center;width:30px;color:var(--seal);font-size:24px;font-weight:700;line-height:1;pointer-events:auto}.scroll-hint.is-left .scroll-hint-mark{left:0;justify-content:flex-start;padding-left:1px;background:linear-gradient(to right,var(--hint-bg, #fbf3df) 40%,rgba(251,243,223,0))}.scroll-hint.is-right .scroll-hint-mark{right:0;justify-content:flex-end;padding-right:1px;background:linear-gradient(to left,var(--hint-bg, #fbf3df) 40%,rgba(251,243,223,0))}.cf-steps,.sheet-footer{--hint-bg: var(--parchment-100)}.app-floors{--hint-bg: rgb(243, 230, 196)}@media(max-width:720px){.notice-panel{max-height:calc(100% - var(--gutter) - 210px);overflow-y:auto;overscroll-behavior:contain}}.tt-cell.has-issue{position:relative}.tt-cell.has-issue:after{content:"⚠";position:absolute;top:-7px;right:-5px;display:grid;place-items:center;width:18px;height:18px;border-radius:50%;background:#c9822a;color:#fff;font-family:system-ui,sans-serif;font-size:11px;line-height:1;box-shadow:0 1px 3px #00000040}.cf-issue{padding:8px 10px;border:1px solid #d9a35a;border-radius:8px;background:#fdf1dc;font-size:13px;line-height:1.6}.cf-issue strong{color:#8a4a12}.cf-issue ul{margin:4px 0 0;padding-left:1.2em}.cf-assist{margin-top:16px;padding:10px 12px;border:1px solid var(--ink-faint);border-radius:10px;background:#fffdf6}.info-name-btn{padding:0;border:0;background:none;color:inherit;font:inherit;text-align:left;cursor:default}.info-name-btn.has-more{cursor:pointer;text-decoration:underline dotted rgba(58,38,22,.45);text-decoration-thickness:1.5px;text-underline-offset:5px}.info-pop{position:absolute;top:calc(100% + 8px);left:10px;z-index:3;width:min(300px,calc(100% - 20px));padding:9px 12px;border-radius:10px;background:var(--ink);color:var(--parchment-50);font-size:13px;line-height:1.6;box-shadow:0 6px 18px #28190a59;pointer-events:none;animation:info-pop-in .18s ease-out}.info-pop[hidden]{display:none}.info-pop:after{content:"";position:absolute;bottom:100%;left:24px;border:7px solid transparent;border-bottom-color:var(--ink)}.info-pop-name{display:block;font-size:12px;opacity:.75}@keyframes info-pop-in{0%{opacity:0;transform:translateY(6px)}}@media(max-width:720px){.info-pop{top:auto;bottom:calc(100% + 8px)}.info-pop:after{top:100%;bottom:auto;border-top-color:var(--ink);border-bottom-color:transparent}}.tt-detail-text{flex:1;min-width:0}.tt-go{flex:none}.tt-go[hidden]{display:none}
