:root{font-family:"DM Sans","Noto Sans KR",sans-serif;color:#17332e;background:#f6f8f5;font-synthesis:none;text-rendering:optimizeLegibility;--green:#146b56;--deep:#0d2925;--muted:#7e8d88;--line:#e7ece8;--mint:#e7f4ec}
*{box-sizing:border-box}body{margin:0;min-width:320px}.topbar{height:70px;padding:0 max(24px,calc((100vw - 1120px)/2));display:flex;align-items:center;justify-content:space-between;background:#fff;border-bottom:1px solid #edf0ed}.brand{display:flex;gap:10px;align-items:center;font-size:15px;font-weight:800;color:var(--deep);text-decoration:none;letter-spacing:-.04em}.brand-mark{display:grid;place-items:center;background:var(--green);border-radius:9px;color:white;width:30px;height:30px;font-size:16px;font-weight:700}.topbar-note{font-size:12px;color:#71827c;display:flex;align-items:center;gap:7px}.live-dot{width:7px;height:7px;border-radius:50%;background:#40b77c;box-shadow:0 0 0 3px #e5f5eb}.shell{max-width:1120px;margin:0 auto;padding:38px 24px 64px}.hero{min-height:270px;border-radius:22px;background:#123a33;position:relative;overflow:hidden;color:white;padding:42px 48px;display:flex;align-items:center}.hero-copy{position:relative;z-index:2;max-width:560px}.eyebrow{margin:0 0 11px;font-family:"DM Sans",sans-serif;color:#71d6a5;font-size:10px;letter-spacing:.17em;font-weight:700}.hero h1{font-size:34px;letter-spacing:-.07em;line-height:1.38;margin:0;font-weight:800}.hero h1 span{color:#83deb1}.hero-description{font-size:13px;color:#bdd0c9;margin:14px 0 0;letter-spacing:-.03em}.hero-art{position:absolute;inset:0 0 0 52%;overflow:hidden;opacity:.97}.sun{position:absolute;top:37px;right:96px;width:110px;height:110px;border-radius:50%;background:#e4bd79;opacity:.92}.building{position:absolute;bottom:71px;background:#1d5549;border-radius:5px 5px 0 0}.building-one{right:234px;width:80px;height:117px;box-shadow:inset 9px 0 #276454}.building-two{right:123px;width:100px;height:157px;background:#276454}.building:before{content:"";position:absolute;inset:16px 14px;background:repeating-linear-gradient(90deg,transparent 0 17px,#7fb69d 18px 23px,transparent 24px 35px);opacity:.52}.road{position:absolute;bottom:0;right:0;width:100%;height:72px;background:#254740;transform:skewY(-5deg);transform-origin:right}.road-mark{position:absolute;top:32px;left:25%;width:120px;height:4px;border-top:2px dashed #9cae9f}.hero-pin{position:absolute;right:26%;top:64px;width:42px;height:52px;background:#faf6e9;border-radius:50% 50% 50% 4px;transform:rotate(-45deg);display:grid;place-items:center;box-shadow:0 5px 16px #08241e55}.hero-pin span{transform:rotate(45deg);color:var(--green);font-size:17px;font-weight:800}.hero-car{position:absolute;right:16%;bottom:35px;background:#f0a65e;color:#f0a65e;width:64px;height:24px;border-radius:13px 16px 5px 5px;transform:skewX(-12deg);box-shadow:inset 15px -7px #dd8b45}.dashboard{padding-top:37px}.section-heading,.result-heading{display:flex;align-items:center;justify-content:space-between}.section-heading .eyebrow{color:#6f9c83;margin-bottom:5px}.section-heading h2{font-size:22px;letter-spacing:-.06em;margin:0;color:var(--deep)}.refresh-button{border:1px solid #dce6df;background:#fff;border-radius:9px;padding:9px 13px;color:#49645b;font:600 12px inherit;cursor:pointer}.refresh-button:hover{border-color:#9db9a9;background:#f9fcfa}.refresh-button span{font-size:17px;vertical-align:-1px;margin-right:4px}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:13px;margin-top:20px}.stat-card{background:#fff;border:1px solid var(--line);border-radius:13px;min-height:91px;padding:17px 18px;display:flex;align-items:center;gap:13px}.stat-icon{width:38px;height:38px;border-radius:11px;display:grid;place-items:center;font-weight:700;font-size:17px}.icon-total{background:#eef4ff;color:#6285d8}.icon-space{background:#e9f6ed;color:#3c9c66}.icon-time{background:#fff3e8;color:#dc9b48}.stat-card p{font-size:11px;color:#84928d;margin:0 0 5px}.stat-card strong{font-family:"DM Sans","Noto Sans KR",sans-serif;font-size:19px;color:#203a34;letter-spacing:-.04em}.stat-card .stat-time{font-size:14px}.filters{display:flex;gap:10px;margin-top:22px}.search-box{height:46px;flex:1;background:white;border:1px solid #e3e9e5;border-radius:10px;display:flex;align-items:center;padding:0 13px;gap:9px;color:#87a097}.search-box>span{font-size:24px;line-height:1}.search-box input{width:100%;height:100%;border:0;outline:0;font:400 13px inherit;color:var(--deep);background:transparent}.search-box input::placeholder{color:#a5b0ac}.search-box:focus-within{border-color:#79b79a;box-shadow:0 0 0 3px #dff0e6}.search-box kbd{white-space:nowrap;border:1px solid #e5ebe7;border-radius:5px;padding:3px 6px;color:#9ba8a3;font:10px inherit}.select-wrap select{height:46px;padding:0 33px 0 13px;border:1px solid #e3e9e5;border-radius:10px;background:#fff;color:#52665f;font:500 12px inherit;outline:none;cursor:pointer}.result-heading{margin:28px 1px 12px}.result-heading h3{font-size:14px;margin:0;color:#29443b}.result-heading span{font-size:11px;color:#8c9a94}.parking-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:11px}.parking-card{background:#fff;border:1px solid var(--line);border-radius:13px;padding:17px 17px 14px;transition:transform .15s,border-color .15s}.parking-card:hover{transform:translateY(-2px);border-color:#bfd4c8}.card-top{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.card-title{font-size:14px;letter-spacing:-.04em;font-weight:700;color:#213c34;margin:0 0 6px}.card-address{font-size:11px;color:#91a099;margin:0;line-height:1.55}.availability{flex:none;text-align:right}.availability strong{display:block;font-family:"DM Sans",sans-serif;font-size:22px;line-height:1;color:#218354;letter-spacing:-.05em}.availability span{display:block;margin-top:5px;color:#8b9a93;font-size:10px}.availability.full strong{color:#a7afab}.card-bottom{border-top:1px solid #f0f3f1;margin-top:13px;padding-top:11px;display:flex;align-items:center;justify-content:space-between;gap:8px}.card-tags{display:flex;gap:5px;flex-wrap:wrap}.tag{font-size:10px;padding:4px 7px;background:#f3f6f4;border-radius:5px;color:#6e8178}.tag.realtime{background:#e9f6ed;color:#31825b}.map-link{color:#54816d;text-decoration:none;font-size:10px;font-weight:600;white-space:nowrap}.map-link:hover{text-decoration:underline}.loading-state{grid-column:1/-1;min-height:170px;display:grid;place-content:center;justify-items:center;color:#91a099;font-size:12px}.spinner{width:22px;height:22px;border:2px solid #dfebe3;border-top-color:#309269;border-radius:50%;animation:spin .8s linear infinite}.loading-state p{margin:12px 0 0}@keyframes spin{to{transform:rotate(360deg)}}.empty-state{text-align:center;padding:48px 16px;color:#8a9b93}.empty-state>span{font-size:25px}.empty-state h3{font-size:14px;color:#38564b;margin:8px 0}.empty-state p{font-size:12px;margin:0}.data-note{font-size:10px;color:#a0aaa5;margin:17px 1px 0}footer{max-width:1120px;margin:0 auto;border-top:1px solid #e8ede9;padding:20px 24px 30px;display:flex;justify-content:space-between;color:#9aa7a1;font-size:10px}.toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%,20px);padding:11px 16px;border-radius:9px;background:#173b32;color:white;font-size:12px;opacity:0;pointer-events:none;transition:.2s;box-shadow:0 8px 24px #08241e30}.toast.show{opacity:1;transform:translate(-50%,0)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
@media(max-width:680px){.topbar{height:60px;padding:0 18px}.topbar-note{font-size:10px}.shell{padding:20px 16px 45px}.hero{min-height:245px;padding:30px 25px;border-radius:17px}.hero h1{font-size:27px}.hero-description{max-width:270px;line-height:1.7;font-size:12px}.hero-art{left:48%;opacity:.55}.sun{width:82px;height:82px;right:40px;top:45px}.building-one{right:140px}.building-two{right:36px}.hero-pin{right:25%;top:55px}.hero-car{right:18%}.dashboard{padding-top:29px}.stats{gap:7px}.stat-card{padding:12px 10px;gap:8px;min-height:78px}.stat-icon{width:30px;height:30px;font-size:14px;border-radius:8px}.stat-card p{font-size:9px;line-height:1.3}.stat-card strong{font-size:16px}.stat-card .stat-time{font-size:11px}.filters{gap:7px}.search-box{padding:0 10px}.search-box input{font-size:11px}.search-box kbd{display:none}.select-wrap select{padding:0 25px 0 9px;font-size:10px}.parking-list{grid-template-columns:1fr}.parking-card{padding:15px}.result-heading{margin-top:24px}footer{padding:18px 16px 24px;gap:10px;line-height:1.5}footer span:last-child{text-align:right;max-width:58%}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}

/* Keep the search controls in place while only the parking results scroll. */
html,body{height:100%;height:100dvh}
body{display:flex;flex-direction:column;overflow:hidden}
.shell{width:100%;flex:1;min-height:0;display:flex;flex-direction:column;padding-bottom:20px}
.dashboard{flex:1;min-height:0;display:flex;flex-direction:column}
.parking-list{flex:1;min-height:0;overflow-y:auto;align-content:start;grid-auto-rows:max-content;padding:1px 4px 8px 1px;overscroll-behavior:contain;scrollbar-gutter:stable}
footer{width:100%;flex:none}
@media(max-width:680px){.shell{padding-bottom:14px}.parking-list{grid-template-columns:1fr}}
