:root{--bg:#e9efe9;--surface:rgba(255,255,255,.88);--surface-strong:rgba(255,255,255,.95);--ink:#162b44;--muted:#6f7d8b;--green:#5ecb98;--green-dark:#2e8f69;--navy:#18345a;--shadow:0 14px 40px rgba(18,39,60,.13)}
*{box-sizing:border-box}html,body{margin:0;padding:0;background:linear-gradient(180deg,#edf3ef,#e5ece6);font-family:system-ui,-apple-system,BlinkMacSystemFont,"Apple SD Gothic Neo","Pretendard","Noto Sans KR",sans-serif;color:var(--ink)}body{min-height:100dvh;padding:0 0 calc(92px + env(safe-area-inset-bottom));-webkit-font-smoothing:antialiased}button,input,dialog{font:inherit}button{cursor:pointer}img{display:block;max-width:100%}
.app-shell{width:min(100%,560px);margin:0 auto;padding:18px 14px 0}.topbar{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:14px}.brand-row{display:flex;align-items:center;gap:7px}.topbar h1{margin:0;font-size:30px;letter-spacing:-.06em;line-height:1.06}.topbar p{margin:6px 0 0;color:var(--muted);font-size:13px}.leaf{font-size:20px}.icon-btn{border:0;background:var(--surface);width:44px;height:44px;border-radius:16px;box-shadow:var(--shadow);color:var(--navy);font-size:26px;line-height:1}
.stats-row{display:grid;grid-template-columns:repeat(3,1fr);gap:9px;margin-bottom:14px}.stat-card{background:var(--surface);backdrop-filter:blur(18px);padding:12px 10px;border-radius:18px;box-shadow:var(--shadow);min-height:74px}.stat-card span{display:block;font-size:11px;color:var(--muted);margin-bottom:4px;letter-spacing:-.02em}.stat-card strong{font-size:20px;letter-spacing:-.05em}
.map-card{position:relative;border-radius:28px;overflow:hidden;background:#dfe6de;box-shadow:var(--shadow);aspect-ratio:9/16;margin-bottom:14px}.campus-map{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.map-shade{position:absolute;inset:0;background:linear-gradient(180deg,rgba(15,32,44,.15),rgba(15,32,44,.02) 30%,rgba(15,32,44,.03) 66%,rgba(15,32,44,.16))}.map-badge,.map-focus-btn{position:absolute;z-index:5}.map-badge{top:14px;right:14px;background:rgba(255,255,255,.88);backdrop-filter:blur(18px);padding:10px 12px;border-radius:18px;box-shadow:0 12px 30px rgba(12,26,42,.12);display:grid;gap:1px;text-align:right}.map-badge span{font-size:11px;color:var(--muted)}.map-badge strong{font-size:20px}.map-focus-btn{left:14px;bottom:14px;border:0;border-radius:16px;background:rgba(23,49,86,.82);color:#fff;padding:10px 13px;font-size:12px;backdrop-filter:blur(18px);box-shadow:0 14px 30px rgba(15,30,48,.22)}
.sites-layer{position:absolute;inset:0;z-index:4}.site-node{position:absolute;border:0;background:transparent;padding:0;margin:0;transform:translate(-50%,-50%)}.site-scene{position:relative;width:100%;height:100%;border-radius:14px;overflow:hidden;box-shadow:0 10px 22px rgba(18,39,60,.18);transition:.2s ease}.site-node.selected .site-scene{box-shadow:0 0 0 3px rgba(94,203,152,.5),0 12px 28px rgba(18,39,60,.22)}.site-node:active .site-scene{transform:scale(.98)}.scene-img{width:100%;height:100%;object-fit:cover}.lot-img{object-position:center center}.construct-img{object-position:35% 65%}.complete-img{object-position:center center}.site-tag{position:absolute;left:6px;top:6px;z-index:2;max-width:calc(100% - 12px);background:rgba(255,255,255,.92);color:#17293f;border-radius:999px;padding:4px 7px;font-size:9px;font-weight:900;line-height:1.1;box-shadow:0 6px 14px rgba(0,0,0,.1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.progress-badge{position:absolute;right:6px;bottom:6px;z-index:2;background:rgba(255,255,255,.95);color:#274264;border-radius:999px;padding:4px 7px;font-size:9px;font-weight:900;box-shadow:0 6px 14px rgba(0,0,0,.1)}.site-scene::after{content:"";position:absolute;left:0;right:0;bottom:0;height:22%;background:linear-gradient(180deg,transparent,rgba(6,16,26,.16))}
.focus-panel,.building-section{background:var(--surface);backdrop-filter:blur(18px);box-shadow:var(--shadow);border-radius:28px;padding:16px 14px;margin-bottom:14px}.building-summary{display:grid;grid-template-columns:72px 1fr auto;gap:12px;align-items:center}.building-summary img{width:72px;height:72px;border-radius:18px;object-fit:cover}.eyebrow{display:block;font-size:10px;color:var(--muted);font-weight:800;letter-spacing:.08em}.building-copy h2{margin:2px 0 4px;font-size:20px;letter-spacing:-.05em}.building-copy p{margin:0;color:var(--muted);font-size:12px;line-height:1.35}.building-progress-copy{text-align:right;display:grid;gap:3px}.building-progress-copy strong{font-size:16px;letter-spacing:-.03em}.building-progress-copy span,.progress-subtext{font-size:11px;color:var(--muted)}.progress-track{height:10px;border-radius:999px;background:#e8ece9;overflow:hidden;margin-top:14px}.progress-track i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--green),#8ce0ba);border-radius:inherit;transition:width .25s ease}.progress-subtext{margin:8px 2px 0}
.mode-tabs{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:16px}.mode-tab{border:0;border-radius:15px;padding:11px 12px;background:#eef2ef;color:var(--muted);font-weight:800}.mode-tab.active{background:var(--navy);color:#fff;box-shadow:0 10px 20px rgba(24,52,90,.18)}.timer-wrap{display:grid;grid-template-columns:52px 1fr 52px;gap:12px;align-items:center;margin-top:18px}.round-btn{border:0;border-radius:18px;background:#edf1ef;height:52px;font-size:28px;color:var(--navy);box-shadow:inset 0 0 0 1px rgba(22,43,68,.05)}.timer-center{text-align:center}#timerText{display:block;font-size:48px;font-weight:900;letter-spacing:-.06em;line-height:1}#timerHint{margin:8px 0 4px;font-size:12px;color:var(--muted);line-height:1.4}.timer-setting{margin:0;color:var(--green-dark);font-size:11px;font-weight:800}
.primary-actions{display:grid;grid-template-columns:90px 1fr;gap:10px;margin-top:18px}.secondary-btn,.start-btn{border:0;border-radius:18px;padding:14px 16px;font-weight:900}.secondary-btn{background:#eef2ef;color:var(--navy)}.start-btn{display:flex;justify-content:center;align-items:center;gap:10px;background:linear-gradient(180deg,#274b7c,#18345a);color:#fff;box-shadow:0 16px 28px rgba(24,52,90,.2)}.start-btn.running{background:linear-gradient(180deg,#e9867f,#d9656b)}.start-btn span{font-size:22px;line-height:1}
.section-title-row{display:flex;justify-content:space-between;gap:10px;align-items:end;margin-bottom:12px}.section-title-row h2{margin:2px 0 0;font-size:20px;letter-spacing:-.05em}.section-note{font-size:11px;color:var(--muted);text-align:right;max-width:42%}.building-list{display:flex;gap:10px;overflow-x:auto;padding:2px 2px 10px;scroll-snap-type:x mandatory;scrollbar-width:none}.building-list::-webkit-scrollbar{display:none}.building-card{flex:0 0 156px;background:rgba(255,255,255,.82);border:1.5px solid rgba(22,43,68,.08);border-radius:20px;padding:8px;box-shadow:0 7px 20px rgba(31,49,65,.08);scroll-snap-align:start;text-align:left}.building-card.selected{border-color:#5ecb98;box-shadow:0 0 0 3px rgba(94,203,152,.15),0 8px 20px rgba(31,49,65,.09)}.building-card img{width:100%;aspect-ratio:1.5;object-fit:cover;border-radius:12px}.building-card h3{margin:8px 2px 3px;font-size:14px;letter-spacing:-.04em}.card-sub{display:block;color:var(--muted);font-size:10px;margin:0 2px 6px}.card-meta{display:flex;justify-content:space-between;align-items:center;gap:8px;color:var(--muted);font-size:10px;margin:0 2px 4px}.mini-progress{height:6px;background:#e7eaeb;border-radius:999px;overflow:hidden;margin:6px 2px 3px}.mini-progress i{display:block;height:100%;background:var(--green);border-radius:inherit}.done-badge{display:inline-flex;align-items:center;gap:3px;color:var(--green-dark);font-weight:900}
.bottom-nav{position:fixed;z-index:30;left:50%;bottom:0;transform:translateX(-50%);width:min(100%,560px);padding:8px 18px calc(env(safe-area-inset-bottom) + 8px);display:grid;grid-template-columns:repeat(3,1fr);background:rgba(245,246,244,.92);border-top:1px solid rgba(22,43,68,.09);backdrop-filter:blur(20px)}.nav-item{border:0;background:transparent;color:#84909a;display:grid;justify-items:center;gap:2px;font-size:10px}.nav-item span{font-size:21px}.nav-item.active{color:var(--navy)}
.app-dialog{width:min(92vw,470px);border:0;border-radius:24px;padding:0;background:#fbfbf8;color:var(--ink);box-shadow:0 30px 80px rgba(16,34,48,.35)}.app-dialog::backdrop{background:rgba(12,27,41,.55);backdrop-filter:blur(4px)}.app-dialog form{padding:18px}.app-dialog header{display:flex;align-items:start;justify-content:space-between}.app-dialog h2{margin:2px 0 15px}.dialog-close{border:0;background:#edf0ef;border-radius:50%;width:34px;height:34px;font-size:23px;color:var(--navy)}.record-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.record-box{background:#f0f2ef;border-radius:15px;padding:13px}.record-box span{display:block;font-size:10px;color:var(--muted);margin-bottom:3px}.record-box strong{font-size:21px}.record-list{margin:14px 0 0;padding:0;list-style:none;max-height:240px;overflow:auto}.record-list li{display:flex;justify-content:space-between;gap:12px;padding:10px 3px;border-bottom:1px solid #e7e9e7;font-size:11px}.record-list small{display:block;color:var(--muted);margin-top:2px}.setting-row{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:13px 2px;border-bottom:1px solid #e7e9e7}.setting-row span{display:grid;gap:3px}.setting-row b{font-size:13px}.setting-row small{font-size:10px;color:var(--muted)}.setting-row input{width:22px;height:22px;accent-color:var(--green)}.danger-btn{width:100%;margin-top:18px;border:0;border-radius:14px;background:#fde8e5;color:#b44f46;padding:12px;font-weight:900}
.toast{position:fixed;z-index:50;left:50%;bottom:100px;transform:translate(-50%,20px);opacity:0;pointer-events:none;background:rgba(19,38,58,.94);color:white;padding:10px 14px;border-radius:13px;font-size:11px;box-shadow:0 12px 30px rgba(0,0,0,.22);transition:.25s ease;white-space:nowrap}.toast.show{opacity:1;transform:translate(-50%,0)}.completion-overlay{position:fixed;z-index:60;inset:0;display:grid;place-items:center;background:rgba(11,28,43,.5);backdrop-filter:blur(6px);opacity:0;pointer-events:none;transition:.25s ease}.completion-overlay.show{opacity:1;pointer-events:auto}.completion-card{width:min(84vw,360px);text-align:center;background:white;border-radius:25px;padding:26px 20px;box-shadow:0 30px 80px rgba(0,0,0,.3);transform:scale(.9);transition:.25s ease}.completion-overlay.show .completion-card{transform:scale(1)}.spark{font-size:42px}.completion-card strong{display:block;font-size:24px;margin:7px 0}.completion-card p{margin:0 0 17px;color:var(--muted);font-size:12px}.completion-card button{border:0;border-radius:14px;padding:12px 22px;background:var(--navy);color:white;font-weight:900}
@media (min-width:700px){body{padding-top:20px}.app-shell{border-radius:30px;background:rgba(255,255,255,.26);box-shadow:0 30px 90px rgba(42,57,70,.12)}.bottom-nav{bottom:18px;border-radius:18px;width:520px;border:1px solid rgba(22,43,68,.08)}}@media (prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important;animation:none!important}}
