*{box-sizing:border-box;margin:0;padding:0}
html,body{width:100%;height:100%;overflow:hidden;background:#1d2b3a;font-family:"Pretendard","Apple SD Gothic Neo","Malgun Gothic",system-ui,sans-serif;color:#f4f1ea;-webkit-font-smoothing:antialiased;user-select:none}
#app{position:fixed;inset:0}
#app canvas{display:block;width:100%;height:100%;outline:none}
button{font:inherit;color:inherit;cursor:pointer;border:0;background:none}

.ui{transition:opacity .9s ease}
body.idle .ui, body.hideui .ui{opacity:0;pointer-events:none}
body.hideui #timerBadge:not(.hidden){opacity:.55}
.hidden{display:none!important}

/* intro */
#intro{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;background:radial-gradient(ellipse at 50% 60%,rgba(20,40,60,.25),rgba(10,18,28,.78));backdrop-filter:blur(2px);z-index:20;transition:opacity 1.2s ease}
#intro.gone{opacity:0;pointer-events:none}
.intro-card{text-align:center;padding:40px 44px;max-width:520px}
.intro-kicker{letter-spacing:.32em;font-size:11px;opacity:.65;margin-bottom:14px}
.intro-card h1{font-weight:300;font-size:46px;letter-spacing:.12em;margin-bottom:16px}
.intro-sub{line-height:1.8;opacity:.85;font-size:15px;margin-bottom:28px}
.intro-buttons{display:flex;gap:12px;justify-content:center;flex-wrap:wrap}
.intro-buttons button{padding:13px 26px;border-radius:999px;border:1px solid rgba(255,255,255,.35);font-size:15px;background:rgba(255,255,255,.06);transition:background .3s}
.intro-buttons button:hover{background:rgba(255,255,255,.16)}
.intro-buttons button.primary{background:#f4f1ea;color:#1d2b3a;border-color:#f4f1ea}
.intro-hint{margin-top:22px;font-size:12px;opacity:.55}
.intro-load{margin-top:8px;font-size:12px;opacity:.45}

/* hud */
#hud{position:fixed;left:22px;top:18px;z-index:5;pointer-events:none;text-shadow:0 1px 8px rgba(0,0,0,.45)}
#place{font-size:14px;letter-spacing:.06em;opacity:.92}
#placeName{font-weight:600;margin-right:10px}
#clock{opacity:.7}
#quote{margin-top:6px;font-size:13px;opacity:.7;max-width:420px;line-height:1.6;transition:opacity 2s}

#timerBadge{position:fixed;right:22px;top:18px;z-index:5;font-size:22px;font-weight:300;letter-spacing:.08em;text-shadow:0 1px 8px rgba(0,0,0,.5);font-variant-numeric:tabular-nums}

#minimap{position:fixed;right:18px;bottom:76px;width:220px;height:120px;border-radius:14px;background:rgba(18,28,38,.38);backdrop-filter:blur(6px);z-index:5;cursor:crosshair}

#dock{position:fixed;left:50%;bottom:16px;transform:translateX(-50%);display:flex;align-items:center;gap:2px;padding:6px;border-radius:999px;background:rgba(18,28,38,.42);backdrop-filter:blur(10px);z-index:6;white-space:nowrap}
#dock button{padding:8px 14px;border-radius:999px;font-size:13px;opacity:.82;transition:background .25s,opacity .25s}
#dock button:hover{opacity:1;background:rgba(255,255,255,.1)}
#dock button.on{background:rgba(244,241,234,.92);color:#1d2b3a;opacity:1}
#dock .sep{width:1px;height:18px;background:rgba(255,255,255,.2);margin:0 4px}

.panel{position:fixed;left:50%;bottom:72px;transform:translateX(-50%);width:300px;padding:18px 20px;border-radius:18px;background:rgba(18,28,38,.62);backdrop-filter:blur(12px);z-index:7;font-size:13px}
.panel-title{font-size:12px;letter-spacing:.2em;opacity:.6;margin-bottom:12px}
.panel label{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:9px 0}
.panel label.row{justify-content:flex-start}
.panel input[type=range]{width:150px;accent-color:#a9d3e6}
.panel-note{font-size:11px;opacity:.55;margin-top:12px;line-height:1.5}
#timerBig{font-size:46px;font-weight:200;text-align:center;letter-spacing:.06em;font-variant-numeric:tabular-nums;margin:4px 0 10px}
.timer-modes,.timer-ctrl{display:flex;gap:6px;justify-content:center;margin-top:8px}
.timer-modes button,.timer-ctrl button{padding:7px 12px;border-radius:999px;border:1px solid rgba(255,255,255,.22);font-size:12px}
.timer-modes button.on{background:rgba(255,255,255,.16)}
.timer-ctrl button.primary{background:#f4f1ea;color:#1d2b3a;border-color:#f4f1ea;padding:7px 22px}

#help{position:fixed;left:22px;bottom:22px;font-size:11px;opacity:.5;z-index:5;pointer-events:none;text-shadow:0 1px 6px rgba(0,0,0,.6)}
body.zen #help{display:none}

#joy{position:fixed;left:26px;bottom:90px;width:120px;height:120px;border-radius:50%;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.18);z-index:6;display:none;touch-action:none}
#joyKnob{position:absolute;left:38px;top:38px;width:44px;height:44px;border-radius:50%;background:rgba(255,255,255,.35)}
body.touch #joy{display:block}
body.touch #help{display:none}
body.zen #joy{display:none}

@media (max-width:640px){
  #dock{gap:0;padding:4px;bottom:10px;max-width:96vw;overflow-x:auto}
  #dock button{padding:7px 9px;font-size:12px}
  #minimap{width:150px;height:82px;bottom:64px;right:10px}
  .intro-card h1{font-size:36px}
  #quote{max-width:70vw}
}

#together{margin-top:5px;font-size:12px;opacity:.7;letter-spacing:.02em}
#toast{position:fixed;left:50%;bottom:84px;transform:translate(-50%,12px);max-width:min(520px,88vw);padding:12px 18px;border-radius:16px;background:rgba(18,28,38,.62);backdrop-filter:blur(10px);font-size:13px;line-height:1.65;text-align:center;opacity:0;pointer-events:none;transition:opacity .9s ease,transform .9s ease;z-index:8}
#toast.show{opacity:1;transform:translate(-50%,0)}
#toast b{display:block;font-size:14px;letter-spacing:.08em;margin-bottom:3px}
#toast span{opacity:.85}
body.hideui #toast{opacity:0}

#breath{position:fixed;left:50%;top:50%;width:220px;height:220px;margin:-110px 0 0 -110px;display:flex;align-items:center;justify-content:center;pointer-events:none;opacity:0;transition:opacity 1.5s;z-index:4}
#breath.on{opacity:1}
#breath .ring{position:absolute;inset:0;border-radius:50%;border:1.5px solid rgba(255,255,255,.55);background:radial-gradient(circle,rgba(255,255,255,.12),rgba(255,255,255,0) 70%);transition:transform .2s linear}
#breath .txt{font-size:14px;letter-spacing:.12em;text-shadow:0 1px 8px rgba(0,0,0,.5);opacity:.9}
#panelWish input{width:100%;padding:10px 12px;border-radius:10px;border:1px solid rgba(255,255,255,.25);background:rgba(255,255,255,.08);color:inherit;font:inherit;outline:none}
#btnSlowWalk{width:100%}

#panelMe{width:min(360px,92vw);max-height:62vh;overflow-y:auto}
.me-row{display:flex;align-items:flex-start;gap:10px;margin:8px 0}
.me-row>span{flex:0 0 44px;font-size:12px;opacity:.65;padding-top:5px}
.me-row>div{display:flex;flex-wrap:wrap;gap:5px}
.me-row button{padding:4px 9px;border-radius:999px;border:1px solid rgba(255,255,255,.2);font-size:12px}
.me-row button.sw{width:22px;height:22px;padding:0;border-radius:50%}
.me-row button.on{outline:2px solid #f4f1ea;outline-offset:1px;background-color:rgba(255,255,255,.16)}
