*{box-sizing:border-box}body{margin:0;font:14px system-ui,sans-serif;color:#1d2b22;background:#f4f7f2}
header{display:flex;justify-content:space-between;align-items:center;padding:8px 14px;background:#1f5d3a;color:#fff}h1{font-size:18px;margin:0}
main{display:flex;gap:10px;padding:10px}#panel{flex:1 1 46%;max-height:calc(100vh - 90px);overflow:auto}#mapwrap{flex:1 1 54%}
#map{height:55vh;border-radius:10px}.row{display:flex;flex-wrap:wrap;gap:10px;margin:6px 0;align-items:center}
select,input,button{font:inherit;padding:4px 6px}button{cursor:pointer;border:1px solid #1f5d3a;background:#fff;border-radius:6px}
.day{background:#fff;border-radius:10px;padding:8px;margin:8px 0;border-left:6px solid var(--c);min-height:50px}
.day h4{margin:0 0 4px;display:flex;justify-content:space-between}.slot{display:flex;justify-content:space-between;align-items:center;background:#eef4ec;margin:3px 0;padding:4px 6px;border-radius:6px;cursor:grab}
.slot button{padding:0 5px;margin-left:2px}.card{background:#fff;border-radius:10px;padding:8px;margin:6px 0;box-shadow:0 1px 3px #0002}
.bar{height:6px;background:#cfe3c9;border-radius:3px}.bar i{display:block;height:6px;background:#2e8b57;border-radius:3px}
.sub{display:grid;grid-template-columns:90px 1fr 30px;gap:4px;align-items:center;font-size:12px}.est{color:#b25a00}
#timeline .t{font-size:13px;margin:2px 0}#legend span{display:inline-block;margin:4px 8px 0 0}table{border-collapse:collapse;width:100%}td{padding:2px 4px;border-bottom:1px solid #ddd}
#paywall{position:fixed;inset:0;background:#000a;display:flex;align-items:center;justify-content:center;z-index:9999}#paywall .card{max-width:520px}.tiers{display:flex;gap:8px}.tiers div{flex:1;border:1px solid #ccc;border-radius:8px;padding:6px}
footer{font-size:11px;padding:6px 14px;color:#555}
@media(max-width:800px){main{flex-direction:column}#panel{max-height:none}#map{height:45vh}}
#paywall[hidden]{display:none}
main{flex-wrap:wrap}#panel{flex:1 1 46%}#coursetab,#costtab{flex:1 1 46%}
button,select,input[type=time]{min-height:40px}.slot button{min-width:36px;min-height:36px}.slot{padding:6px 8px}.slot.sel,.card.sel{outline:3px solid #f1c40f}
.movehere{display:block;width:100%;margin-top:4px;background:#fff8d6;border-style:dashed}#movebar{position:sticky;top:0;background:#fff8d6;padding:8px;border-radius:8px;z-index:5;display:flex;justify-content:space-between;align-items:center}#movebar[hidden]{display:none}
#tabs{display:none}
@media(max-width:800px){
 body{padding-bottom:calc(70px + env(safe-area-inset-bottom))}header{padding-top:calc(8px + env(safe-area-inset-top))}
 main{display:block;padding:8px}.tab{display:none}.tab.on{display:block}#map{height:calc(100vh - 190px)}footer{display:none}
 #tabs{display:flex;position:fixed;bottom:0;left:0;right:0;background:#fff;border-top:1px solid #ccc;padding-bottom:env(safe-area-inset-bottom);z-index:2000}
 #tabs button{flex:1;border:0;border-radius:0;background:#fff;font-size:12px;min-height:60px}#tabs button.on{color:#1f5d3a;font-weight:700;background:#e8f2e5}
 .row label{flex:1 1 45%}select{width:100%}}
#tierbtns button{flex:1}#tierbtns button.on{background:#1f5d3a;color:#fff}
@media(max-width:800px){h1{font-size:16px}header .sw{font-size:12px}.slot{flex-wrap:nowrap}.slot>span:last-child{display:flex;flex-shrink:0}.slot button{min-width:34px;padding:0}.day h4 span{display:flex;align-items:center;gap:4px}.day h4 select{width:auto}}
