:root{--paper:#fbfaf7;--ink:#34463c;--muted:#92978b;--sage:#56715b;--line:#e7e8df;--serif:'Noto Serif KR',Georgia,serif;--sans:'Noto Sans KR',sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:14px;-webkit-font-smoothing:antialiased}button,a,input,textarea,select{-webkit-tap-highlight-color:transparent}button,input,textarea,select{font:inherit}button{color:inherit;cursor:pointer}button{border:0;background:none}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible,[tabindex]:focus-visible{outline:2px solid #8b9b70;outline-offset:4px}svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}.icon-defs{position:absolute;width:0;height:0}.topbar{height:82px;border-bottom:1px solid var(--line);display:flex;align-items:center;padding:0 35px;gap:35px;background:#fcfbf8}.brand{display:flex;align-items:center;gap:13px;text-decoration:none;color:var(--ink)}.brand-mark{display:grid;place-items:center;width:34px;height:43px;border:1px solid #c1c9b9;border-radius:18px 18px 4px 4px}.brand-mark svg{width:24px;height:30px}.brand strong{font-family:var(--serif);font-size:25px;font-weight:600;letter-spacing:4px}.brand-en{font-size:9px;letter-spacing:2.8px;color:#7e897a;margin-left:3px}.top-caption{font-size:12px;letter-spacing:.8px;color:#93988d;border-left:1px solid #dfe1d8;padding-left:30px}.text-button{display:flex;align-items:center;justify-content:center;gap:8px;font-size:12px;color:#6e7d6b;padding:8px 0}.topbar>.text-button{margin-left:auto}.topbar>.text-button svg{width:17px}.layout{display:grid;grid-template-columns:265px minmax(0,1fr) 218px;min-height:calc(100dvh - 82px)}.sidebar{padding:37px 23px 24px 30px;display:flex;flex-direction:column;border-right:1px solid var(--line)}.eyebrow{font-size:9px;letter-spacing:1.9px;color:#8d9685;font-weight:600}.intro h1{font-family:var(--serif);font-size:26px;font-weight:500;line-height:1.75;letter-spacing:-1.2px;margin:19px 0 14px}.intro p{color:#969b91;font-size:11px;line-height:2.1;letter-spacing:-.2px}.navigation{display:flex;flex-direction:column;gap:9px;margin:33px -7px 32px}.nav-item{width:100%;display:flex;text-align:left;gap:14px;align-items:center;padding:16px 14px;border-radius:7px;transition:background .2s}.nav-item>svg{color:#9aa18e;width:20px}.nav-item>span{font-size:13px;letter-spacing:-.3px}.nav-item small{display:block;color:#a2a69a;font-size:10px;margin-top:5px;font-weight:400}.nav-item:hover{background:#f0f1e9}.nav-item.active{background:#edf0e6;color:#52684c}.nav-item.active>svg{color:#657c57}.nav-dot{margin-left:auto;width:5px;height:5px;border-radius:50%;background:#789069}.sidebar-bottom{margin-top:auto}.daily-line{display:flex;gap:10px;align-items:center;font-family:var(--serif);font-size:11px;color:#8b9680}.daily-line svg{width:13px}.sidebar-bottom p{font-size:10px;color:#adb1a5;margin:9px 0 28px}.small-brand{font-size:10px;color:#a5ac9d;letter-spacing:1px}.small-brand span{padding:0 8px}.sanctuary{min-height:760px;position:relative;overflow:hidden;background:radial-gradient(ellipse at 45% 42%,#f9f7ed 0%,#eeeede 65%,#e8eadd 100%);transition:background 1s}.scene-heading{position:absolute;z-index:2;top:34px;left:34px;pointer-events:none}.scene-heading .eyebrow{letter-spacing:1.3px;font-size:9px}.live-dot{display:inline-block;width:5px;height:5px;background:#879772;border-radius:50%;margin:0 5px 1px 0}.scene-heading h2{font-family:var(--serif);font-size:28px;font-weight:500;letter-spacing:-.7px;margin:13px 0 9px}.scene-heading p{font-size:11px;color:#8c9480;margin:0}.scene-tools{position:absolute;right:26px;top:33px;z-index:3;display:flex;gap:8px}.round-button{width:35px;height:35px;display:grid;place-items:center;border:1px solid #dfe3d6;border-radius:50%;background:#fafaf18c;transition:background .2s}.round-button:hover{background:#fff}.round-button svg{width:17px;height:17px;color:#8b957d}#scene{position:absolute;inset:110px -3% 112px;touch-action:none}#scene canvas{display:block;width:100%;height:100%;cursor:grab;outline:none}#scene canvas:active{cursor:grabbing}#loading{height:100%;display:flex;flex-direction:column;justify-content:center;align-items:center;color:#8b967b;font-size:12px}.loading-cross{font-size:34px;animation:breathe 2s infinite}.scene-note{position:absolute;top:163px;left:34px;color:#9ea58e;font-family:var(--serif);font-size:11px;display:flex;align-items:center;gap:10px;pointer-events:none}.note-line{width:20px;height:1px;background:#bcc3aa}.visitor{position:absolute;left:30px;bottom:129px;display:flex;align-items:center;gap:9px}.visitor-face{height:38px;width:38px;display:grid;place-items:center;border-radius:50%;background:#d9ddc7;border:3px solid #f6f5e9}.visitor-face>span{width:18px;height:22px;border-radius:9px 9px 6px 6px;background:linear-gradient(#745f4a 0 28%,#ebcfaa 28% 70%,#7f926b 70%)}.visitor strong{font-size:10px;font-weight:500;color:#68755d}.visitor strong span{display:inline-block;font-size:8px;background:#e2e5d6;padding:1px 4px;border-radius:3px;margin-left:4px}.visitor small{display:block;font-size:9px;color:#949e84;margin-top:4px}.scene-help{position:absolute;bottom:101px;width:100%;text-align:center;color:#9fa68e;font-size:9px;letter-spacing:.2px}.scene-help span{padding:0 7px}.toolbar{position:absolute;bottom:35px;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:5px;padding:9px;background:#fcfcf5eb;border:1px solid #fff;border-radius:10px;box-shadow:0 7px 30px #4d62420b;white-space:nowrap}.toolbar button{display:flex;gap:8px;align-items:center;padding:9px 12px;font-size:11px;border-radius:6px}.toolbar button:hover,.toolbar button.selected{background:#e8edde}.toolbar svg{width:18px;height:18px;color:#778667}.toolbar small{font-size:8px;color:#a4aa97}.toolbar-divider{height:20px;width:1px;background:#e5e8db}.quiet-clock{position:absolute;bottom:10px;left:0;width:100%;text-align:center;font-size:8px;color:#9ca58d}.quiet-clock b{font-weight:400;font-variant-numeric:tabular-nums;margin-left:5px}.clock-dot{display:inline-block;width:4px;height:4px;border-radius:50%;background:#aab699;margin-right:4px}.reflection{padding:40px 25px 23px;display:flex;flex-direction:column;border-left:1px solid var(--line)}.reflection-top>.eyebrow{font-size:8px;letter-spacing:2px}.reflection-top>svg{display:block;width:18px;height:27px;color:#a4af95;margin:35px 0 22px}.reflection h3{font-family:var(--serif);font-size:19px;line-height:1.9;font-weight:400;letter-spacing:-.9px;margin:0 0 20px}.reflection-top p{font-size:11px;line-height:2.2;color:#979f90}.leaf-line{font-size:25px;color:#b2bca2;margin:22px 0}.candle-card{background:#f2f1e8;padding:24px 14px 15px;text-align:center;border-radius:60px 60px 9px 9px;margin-top:auto}.candle-card h4{font-family:var(--serif);font-size:13px;font-weight:500;margin:18px 0 9px}.candle-card p{font-size:10px;line-height:1.9;color:#99a08d}.candle-card button{margin:13px auto 0;font-size:10px}.candle-card button svg{width:15px}.css-candle{height:59px;position:relative;margin:auto;width:38px}.css-candle span{position:absolute;bottom:0;left:9px;width:20px;height:37px;background:linear-gradient(90deg,#dfd9be,#fcf4d9,#e6ddc0);border-radius:2px 2px 4px 4px}.css-candle i{position:absolute;left:15px;top:0;width:9px;height:18px;border-radius:80% 20% 60% 40%;background:#e3b86d;box-shadow:0 0 23px 9px #e8c67533;transform:rotate(12deg);animation:flicker 3s infinite alternate}.private-note{display:flex;align-items:center;justify-content:center;gap:7px;font-size:9px;color:#adb2a4;margin-top:23px}.private-note svg{width:13px;height:13px}.panel-backdrop{position:fixed;inset:0;background:#283b3026;backdrop-filter:blur(3px);z-index:10}.activity-panel{position:fixed;right:20px;top:20px;bottom:20px;width:440px;max-width:calc(100% - 30px);background:#fcfbf6;border:1px solid #fff;border-radius:17px;box-shadow:0 20px 100px #21362626;z-index:11;padding:26px 30px;overflow-y:auto;animation:slide-in .25s ease-out}.panel-top{display:flex;justify-content:space-between;align-items:center}.activity-panel h2{font-family:var(--serif);font-weight:500;font-size:29px;margin:26px 0 12px;letter-spacing:-1px}.panel-lead{font-size:12px;line-height:1.9;color:#8c9685;margin-bottom:27px}.activity-panel label{display:block;font-size:12px;margin:20px 0 9px}.activity-panel input,.activity-panel textarea,.activity-panel select{width:100%;background:#f5f5ed;border:1px solid #dfe4d6;border-radius:6px;padding:12px;color:#455640;font-size:12px}.activity-panel textarea{resize:vertical;min-height:130px;line-height:1.9}.primary{background:#5b7154;color:#fff;width:100%;border-radius:7px;padding:14px 20px;font-size:12px;margin:19px 0 10px;transition:background .2s}.primary:hover{background:#415a3b}.secondary{border:1px solid #dce1d2;padding:11px 15px;border-radius:7px;font-size:11px}.secondary:hover{background:#edf0e5}.secondary:disabled{opacity:.4;cursor:default}.button-row{display:flex;gap:9px}.button-row>*{flex:1}.panel-fine{font-size:10px;color:#9ca38f;line-height:1.9}.panel-fine a{color:#6d825d}.prayer-text{white-space:pre-line;font-family:var(--serif);font-size:16px;line-height:2.2;padding:25px 23px;border-radius:8px;background:#eff1e6;margin:18px 0}.prayer-tabs{display:flex;gap:6px;margin-bottom:20px}.chip{font-size:11px;padding:8px 13px;border:1px solid #e0e4d5;border-radius:20px}.chip.active{background:#5b7154;color:#fff;border-color:#5b7154}.record{border-top:1px solid #e5e8dc;padding:17px 0;display:flex;align-items:flex-start;gap:11px}.record svg{width:16px;color:#9caa85}.record p{font-size:12px;line-height:1.8;margin:0;white-space:pre-wrap;overflow-wrap:anywhere}.record small{font-size:9px;color:#a6ad99}.record>button{font-size:10px;color:#a2aa94;margin-left:auto;flex-shrink:0}.record-body{min-width:0}.section-label{font-size:11px;letter-spacing:.3px;margin:25px 0 15px}.mass-steps{display:flex;gap:5px;margin:22px 0}.mass-steps button{height:5px;border-radius:4px;background:#dfe4d3;flex:1;padding:0}.mass-steps button.done{background:#738664}.step-label{font-size:10px;color:#82926e;letter-spacing:1px}.mass-title{font-family:var(--serif);font-size:23px;font-weight:500}.mass-description{font-size:12px;line-height:2;color:#8a967d}.mass-posture{display:inline-flex;gap:7px;font-size:10px;align-items:center;background:#ecf0e1;padding:7px 10px;border-radius:6px;margin:8px 0}.mass-posture svg{width:15px}.mass-counter{font-size:10px;color:#a4ad97;text-align:center;margin:14px 0}.large-candle{transform:scale(1.8);margin:40px auto 35px;height:65px}.candle-confirm{text-align:center;font-size:12px;line-height:2;color:#879575}.rosary-ring{height:180px;width:220px;margin:25px auto 12px;position:relative}.bead{position:absolute;width:20px;height:20px;border-radius:50%;background:#d2d9c4;border:3px solid #e3e7d9;transition:background .2s,box-shadow .2s}.bead.done{background:#718563;border-color:#a2b18e}.bead.current{box-shadow:0 0 0 4px #b6c59f65}.rosary-count{text-align:center;font-family:var(--serif);font-size:25px;position:absolute;inset:62px 0 auto}.rosary-count small{font-size:11px;color:#9aa48b}.timer-options{display:flex;gap:8px}.timer-options button{flex:1}.timer-display{font-family:var(--serif);font-size:36px;text-align:center;margin:20px;font-variant-numeric:tabular-nums}.toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%,20px);background:#44573e;color:#f9f9f1;border-radius:8px;font-size:12px;padding:13px 24px;max-width:90%;text-align:center;z-index:20;opacity:0;pointer-events:none;transition:opacity .2s,transform .2s}.toast.show{opacity:1;transform:translate(-50%,0)}[hidden]{display:none!important}.night .sanctuary{background:radial-gradient(ellipse at 45% 40%,#66767c,#34484e)}.night .scene-heading h2{color:#e3e3cb}.night .scene-heading p,.night .scene-note,.night .scene-help,.night .quiet-clock{color:#bbc4ae}.night .scene-heading .eyebrow{color:#cad0b6}.night .visitor strong,.night .visitor small{color:#e2e4cd}.night .visitor strong span{color:#647254}.night .scene-tools button{background:#aab6a622;border-color:#aab6a644}.night .scene-tools svg{color:#c7d1ba}.fallback-scene{position:absolute;inset:20% 20%;display:flex;flex-direction:column;justify-content:center;align-items:center;border:1px solid #b7c4a1;border-radius:140px 140px 0 0;background:#f9f4e3;text-align:center;font-family:var(--serif)}.fallback-scene svg{width:60px;height:80px;color:#ac9471}.fallback-scene p{font-size:12px;line-height:2;color:#899577;padding:20px}.help-item{display:flex;gap:16px;padding:18px 0;border-bottom:1px solid #e6e9dc}.help-item svg{color:#8b9d76;width:22px}.help-item strong{font-size:12px;font-weight:500}.help-item p{font-size:11px;line-height:1.9;color:#949d87;margin:5px 0}.storage-warning{padding:10px;background:#f5e7cf;color:#7a6746;font-size:11px;border-radius:5px}.zero-state{font-size:11px;line-height:2;color:#a4ad95;padding:18px 0}@keyframes breathe{50%{opacity:.3}}@keyframes flicker{50%{transform:rotate(-5deg) scale(.93)}100%{transform:rotate(12deg) scale(1.07)}}@keyframes slide-in{from{opacity:0;transform:translateX(25px)}to{opacity:1;transform:translateX(0)}}
@media(min-width:1550px){.layout{grid-template-columns:290px minmax(0,1fr) 245px}.sidebar{padding:45px 30px 30px 40px}.sanctuary{min-height:calc(100dvh - 82px)}.reflection{padding:45px 30px}.intro h1{font-size:28px}#scene{inset:95px -1% 90px}}
@media(max-width:1150px){.layout{grid-template-columns:235px minmax(0,1fr)}.reflection{display:none}.sidebar{padding-left:23px;padding-right:20px}.intro h1{font-size:24px}.brand-en{display:none}.sanctuary{min-height:calc(100dvh - 82px)}}
@media(max-width:700px){.topbar{height:65px;padding:0 20px;gap:15px}.brand strong{font-size:22px}.brand-mark{width:27px;height:35px}.top-caption{display:none}.topbar .text-button{font-size:10px}.layout{display:flex;flex-direction:column;min-height:calc(100dvh - 65px)}.sidebar{order:2;padding:0;border:0;position:relative}.intro,.sidebar-bottom{display:none}.navigation{display:grid;grid-template-columns:repeat(5,1fr);margin:0;gap:0;padding:8px;background:#fcfbf7;border-top:1px solid #e1e5d7}.nav-item{padding:9px 2px;gap:7px;flex-direction:column;justify-content:center;text-align:center}.nav-item>span{font-size:9px;white-space:nowrap}.nav-item small,.nav-dot{display:none}.nav-item>svg{width:20px;height:20px}.sanctuary{order:1;min-height:calc(100dvh - 145px);height:calc(100dvh - 145px);flex:1}.scene-heading{top:25px;left:24px}.scene-heading h2{font-size:25px;margin-top:11px}.scene-heading p{font-size:10px}.scene-tools{right:17px;top:22px;gap:5px}.round-button{width:32px;height:32px}.scene-note{top:131px;left:24px;font-size:10px}#scene{inset:100px -10% 106px}.toolbar{padding:6px;gap:0;bottom:29px;border-radius:8px}.toolbar button{padding:10px 9px;font-size:10px;gap:6px}.toolbar svg{width:16px}.toolbar small{font-size:7px}.scene-help{font-size:8px;bottom:90px}.visitor{bottom:115px;left:21px}.visitor-face{width:31px;height:31px}.visitor strong{font-size:9px}.visitor small{font-size:8px}.activity-panel{top:10px;bottom:10px;right:10px;width:420px;max-width:calc(100% - 20px);padding:22px 25px}.activity-panel h2{font-size:26px}.scene-help span{padding:0 3px}.quiet-clock{bottom:8px}.toast{bottom:100px;font-size:11px}.topbar>.text-button span{display:none}}
@media(max-height:760px) and (min-width:701px){.sanctuary{min-height:650px}.sidebar{padding-top:25px}.navigation{margin-top:20px;gap:4px}.nav-item{padding:12px}.intro h1{font-size:24px}.reflection{padding-top:30px}.reflection-top>svg{margin-top:20px}.reflection-top p{line-height:1.8}.leaf-line{margin:10px 0}.candle-card{padding-top:18px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}
/* Keep the room and its controls in view on short laptop displays. */
@media(min-width:701px){.layout{height:calc(100dvh - 82px);min-height:0}.sanctuary{height:100%;min-height:0}.sidebar,.reflection{min-height:0;overflow-y:auto}.intro h1{font-size:24px;letter-spacing:-1.5px;white-space:nowrap}.navigation{margin-top:25px;gap:5px}.sidebar-bottom{padding-top:15px}.reflection-top p{color:#7b8672}.scene-help{color:#7f8b70}}
.intro p,.nav-item small{color:#838d7b}.scene-heading p{color:#758366}.prayer-text{word-break:keep-all;overflow-wrap:anywhere}.activity-panel .secondary svg{width:15px;height:15px;vertical-align:middle;margin-right:4px}
@media(max-width:700px){#scene{left:0;right:0}}

.toolbar button:disabled{opacity:.42;cursor:not-allowed}.toolbar button:disabled:hover{background:transparent;transform:none}
