:root{
  --bg:#130e11;--surface:#20171c;--surface-2:#2a1f25;--surface-3:#34262d;--ink:#f8f1f4;--muted:#beaeb5;
  --line:#46343d;--rose:#db5b7f;--rose-2:#f1789a;--maroon:#8c1d40;--gold:#ffc627;--green:#67d79b;
  --shadow:0 24px 70px rgba(0,0,0,.32);--radius:22px;--sans:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;
}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;min-height:100%;background:var(--bg);color:var(--ink);font:15px/1.5 var(--sans);-webkit-font-smoothing:antialiased}button,input,select{font:inherit}button,a{color:inherit}button{cursor:pointer}a{text-decoration:none}.hidden{display:none!important}
.site-header{height:72px;max-width:1280px;margin:auto;padding:0 28px;display:flex;align-items:center;justify-content:space-between}.wordmark{display:flex;align-items:center;gap:11px;font-weight:900;font-size:17px}.brand-mark{display:block;width:11px;height:31px;border-radius:3px;background:var(--rose);transform:skew(-11deg)}nav{display:flex;align-items:center;gap:26px;color:var(--muted);font-size:13px;font-weight:750}.nav-cta{padding:9px 13px;color:var(--ink);border:1px solid var(--line);border-radius:10px;background:var(--surface)}
.hero{max-width:1280px;margin:0 auto;padding:74px 28px 90px;display:grid;grid-template-columns:minmax(0,1.08fr) minmax(380px,.72fr);gap:74px;align-items:center}.hero-copy{padding-left:26px}.kicker,.card-step{display:block;color:var(--rose-2);font-size:11px;font-weight:900;letter-spacing:.13em;text-transform:uppercase}.hero h1{font-size:clamp(52px,6.2vw,88px);line-height:.96;letter-spacing:-.06em;margin:17px 0 25px;max-width:800px}.hero h1 em{font-family:Georgia,serif;font-weight:400;color:var(--rose-2)}.lede{font-size:18px;color:var(--muted);max-width:650px}.trust-row{display:flex;gap:22px;flex-wrap:wrap;margin-top:28px;font-size:12px;font-weight:850;color:#e7dce1}
.import-card,.review-shell{background:linear-gradient(145deg,var(--surface),#1b1418);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.import-card{padding:29px}.import-card h2{font-size:27px;letter-spacing:-.035em;margin:6px 0}.import-card>p{color:var(--muted);font-size:13px}.drop-zone{margin:21px 0 12px;min-height:174px;border:1.5px dashed #6a4c59;border-radius:16px;background:#191215;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:20px;transition:.2s}.drop-zone:hover,.drop-zone.drag{border-color:var(--rose);background:#24171d;transform:translateY(-1px)}.drop-zone input{position:absolute;width:1px;height:1px;opacity:0}.upload-icon{width:44px;height:44px;display:grid;place-items:center;border-radius:13px;background:var(--surface-3);color:var(--rose-2);font-size:27px;margin-bottom:10px}.drop-zone strong{font-size:14px}.drop-zone small{margin-top:4px;color:var(--muted)}
.primary,.secondary,.ghost{border-radius:11px;border:1px solid transparent;padding:11px 15px;font-weight:850}.primary{background:var(--rose);color:#fff;box-shadow:0 8px 22px rgba(219,91,127,.2)}.primary:hover{background:var(--rose-2)}.primary:disabled{opacity:.42;cursor:not-allowed}.wide{width:100%}.secondary{background:var(--surface-3);border-color:var(--line)}.ghost{background:transparent;border-color:var(--line);color:var(--muted)}.button-row{display:grid;grid-template-columns:1fr 1fr;gap:9px}.divider{display:flex;align-items:center;gap:12px;color:#806a74;font-size:11px;margin:15px 0}.divider:before,.divider:after{content:"";height:1px;background:var(--line);flex:1}.micro{font-size:11px!important;margin:14px 0 0!important}.file-chip{display:flex;align-items:center;justify-content:space-between;padding:9px 11px;margin:0 0 10px;border-radius:10px;background:var(--surface-3);font-size:12px}.file-chip button{border:0;background:transparent;color:var(--muted);font-size:20px}.progress-wrap{margin:14px 0}.progress-line{height:5px;border-radius:5px;background:var(--surface-3);overflow:hidden}.progress-line span{display:block;width:0;height:100%;background:var(--rose);transition:width .2s}.progress-copy{display:flex;justify-content:space-between;margin-top:6px;color:var(--muted);font-size:11px}.progress-copy b{color:var(--ink)}
.review-shell{max-width:1280px;margin:0 auto 100px;padding:30px}.review-heading{display:flex;justify-content:space-between;align-items:flex-end;gap:20px}.review-heading h2,.section-intro h2,.privacy-band h2{font-size:38px;line-height:1.08;letter-spacing:-.045em;margin:7px 0}.review-heading p{color:var(--muted);margin:4px 0}.semester-grid{margin:25px 0;display:grid;grid-template-columns:1.4fr 1fr repeat(3,1fr);gap:10px}.semester-grid label,.field label{font-size:10px;text-transform:uppercase;letter-spacing:.08em;font-weight:850;color:var(--muted)}input,select{width:100%;margin-top:5px;background:#181114;border:1px solid var(--line);color:var(--ink);border-radius:9px;padding:10px 11px;outline:0}input:focus,select:focus{border-color:var(--rose)}
.course-editor{display:grid;gap:10px}.course-row{border:1px solid var(--line);border-radius:15px;background:#191215;padding:16px;display:grid;grid-template-columns:92px 1.25fr .9fr 68px 1fr 98px 98px 1fr 42px;gap:9px;align-items:end}.course-row .days{display:flex;gap:3px;margin-top:5px}.day-check input{display:none}.day-check span{width:27px;height:37px;display:grid;place-items:center;border:1px solid var(--line);border-radius:7px;color:var(--muted);font-size:10px}.day-check input:checked+span{background:var(--rose);border-color:var(--rose);color:#fff}.remove-course{width:38px;height:38px;border-radius:9px;border:1px solid var(--line);background:transparent;color:var(--muted);font-size:18px}.course-number{font-size:11px;color:var(--muted);margin-bottom:7px}.empty-editor{padding:35px;text-align:center;border:1px dashed var(--line);border-radius:14px;color:var(--muted)}.empty-editor b,.empty-editor span{display:block}.ocr-details{margin-top:18px;border-top:1px solid var(--line);padding-top:15px;color:var(--muted)}.ocr-details pre{white-space:pre-wrap;max-height:240px;overflow:auto;background:#120c0f;padding:14px;border-radius:10px;font-size:11px}.review-footer{margin-top:24px;padding-top:20px;border-top:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:20px}.review-footer p{font-size:12px;color:var(--muted);margin:0}.review-footer b{color:var(--ink)}
.how{max-width:1280px;margin:0 auto;padding:50px 28px 110px}.section-intro{max-width:650px}.feature-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:15px;margin-top:35px}.feature-grid article{min-height:210px;border:1px solid var(--line);border-radius:18px;padding:25px;background:var(--surface)}.feature-grid article>span{color:var(--rose);font:800 12px ui-monospace,monospace}.feature-grid h3{font-size:22px;margin:40px 0 7px}.feature-grid p{color:var(--muted);margin:0}.privacy-band{max-width:1224px;margin:0 auto 90px;padding:45px;border-radius:23px;background:var(--gold);color:#24170d;display:grid;grid-template-columns:1fr 1.2fr;gap:65px;align-items:center}.privacy-band .kicker{color:#6d4300}.privacy-band p{font-size:16px;margin:0}footer{max-width:1280px;margin:auto;padding:28px;border-top:1px solid var(--line);display:flex;justify-content:space-between;gap:20px;color:var(--muted);font-size:11px}.toast{position:fixed;left:50%;bottom:22px;transform:translate(-50%,20px);opacity:0;pointer-events:none;background:#fff;color:#21161b;padding:10px 15px;border-radius:11px;font-weight:800;box-shadow:var(--shadow);transition:.2s;z-index:2000}.toast.show{opacity:1;transform:translate(-50%,0)}

/* Planner */
.planner-page{background:#120d10}.planner-header{position:sticky;top:0;z-index:1000;background:rgba(18,13,16,.9);backdrop-filter:blur(18px);border-bottom:1px solid var(--line)}.planner-header-inner{max-width:1540px;margin:auto;padding:12px 20px;display:flex;align-items:center;gap:14px}.planner-title{min-width:0}.planner-title h1{font-size:18px;margin:0}.planner-title p{font-size:11px;color:var(--muted);margin:2px 0 0}.planner-stats{margin-left:auto;display:flex;gap:8px}.planner-stat{min-width:68px;background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:6px 9px}.planner-stat b,.planner-stat span{display:block}.planner-stat span{font-size:9px;color:var(--muted);text-transform:uppercase;font-weight:850;letter-spacing:.07em}.icon-button{width:38px;height:38px;border:1px solid var(--line);border-radius:10px;background:var(--surface);color:var(--ink)}.planner-main{max-width:1540px;margin:auto;padding:17px 20px 70px;display:grid;grid-template-columns:minmax(560px,1.08fr) minmax(500px,.92fr);gap:17px;align-items:start}.panel{background:var(--surface);border:1px solid var(--line);border-radius:18px;overflow:hidden;box-shadow:0 12px 45px rgba(0,0,0,.18)}.panel-top{padding:17px}.panel-head{display:flex;align-items:flex-start;justify-content:space-between;gap:15px}.panel-head h2{font-size:18px;margin:2px 0}.panel-head p{font-size:12px;color:var(--muted);margin:0}.status-badge{padding:7px 10px;border-radius:9px;background:#173529;color:var(--green);font-size:11px;font-weight:850}.week-grid{display:grid;grid-template-columns:45px repeat(5,minmax(70px,1fr));gap:0 4px;margin-top:15px}.day-head{border:0;background:transparent;color:var(--muted);padding:8px 2px;font-weight:850;border-radius:10px}.day-head small{display:block;font-size:9px;margin-top:2px}.day-head.active{background:var(--rose);color:#fff}.hours,.day-column{position:relative;height:560px}.day-column{border:1px solid var(--line);border-radius:12px;background:#191215;overflow:hidden}.day-column.active{outline:2px solid var(--gold)}.grid-line{position:absolute;left:0;right:0;border-top:1px solid #3b2c33}.hour-label{position:absolute;right:8px;transform:translateY(-50%);font-size:10px;color:var(--muted)}.event{position:absolute;left:5px;right:5px;border:0;border-radius:10px;color:#fff;text-align:left;padding:8px;overflow:hidden;box-shadow:0 6px 14px rgba(0,0,0,.16)}.event.online{border:1px dashed rgba(255,255,255,.55)}.event strong,.event span{display:block}.event strong{font-size:11px}.event span{font-size:9px;opacity:.9}.async-list{margin-top:13px;display:grid;gap:6px}.async-item{display:flex;align-items:center;gap:8px;border:1px solid var(--line);border-radius:10px;padding:9px 11px;color:var(--muted);font-size:11px}.dot{width:9px;height:9px;border-radius:50%;flex:none}.legend{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}.legend span{display:flex;align-items:center;gap:6px;border:1px solid var(--line);border-radius:999px;padding:6px 9px;color:var(--muted);font-size:10px}.legend b{color:var(--ink)}
.day-tabs{display:grid;grid-template-columns:repeat(5,1fr);gap:7px;margin-top:13px}.day-tab{padding:9px;border:1px solid var(--line);border-radius:10px;background:transparent;color:var(--muted);font-weight:850}.day-tab.active{background:var(--rose);border-color:var(--rose);color:#fff}.tool-row{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:11px}.tool-button{border:1px solid var(--line);background:#191215;color:var(--ink);border-radius:12px;text-align:left;padding:12px}.tool-button b,.tool-button span{display:block}.tool-button span{font-size:10px;color:var(--muted);margin-top:3px}.tool-button.active{border-color:var(--gold)}#publicMap{height:390px;background:#1a1417}.map-fallback{height:100%;display:grid;place-items:center;text-align:center;color:var(--muted);padding:30px}.route-content{padding:17px}.route-hero{display:flex;justify-content:space-between;gap:15px;align-items:center;padding-bottom:14px;border-bottom:1px solid var(--line)}.route-hero h3{margin:0;font-size:19px}.route-hero p{margin:3px 0 0;font-size:11px;color:var(--muted)}.leave-pill{padding:8px 10px;border-radius:9px;background:#3c2812;color:var(--gold);font-weight:850;font-size:11px;white-space:nowrap}.itinerary{margin-top:13px}.route-stop{display:grid;grid-template-columns:29px 1fr;gap:10px}.route-rail{display:flex;align-items:center;flex-direction:column}.route-num{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;color:#fff;font-weight:900;font-size:11px}.route-line{width:2px;flex:1;background:var(--line);min-height:25px}.route-card{border:1px solid var(--line);border-radius:13px;padding:13px;margin-bottom:10px}.route-card-top{display:flex;justify-content:space-between;gap:10px}.route-card h4{margin:0}.route-card .time{font-size:11px;color:var(--rose-2);font-weight:850}.route-meta{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;margin-top:10px}.route-meta div{background:#191215;border-radius:8px;padding:7px;font-size:10px;color:var(--muted)}.route-meta b{color:var(--ink)}.route-actions{display:flex;flex-wrap:wrap;gap:5px;margin-top:9px}.route-actions a{font-size:10px;font-weight:800;border:1px solid var(--line);padding:6px 8px;border-radius:8px}.walk-note{font-size:10px;color:var(--muted);margin:0 0 6px 39px}.online-today,.empty-day{padding:15px;border:1px dashed var(--line);border-radius:12px;color:var(--muted);font-size:12px;margin-top:10px}.settings-drawer{position:fixed;inset:0 0 0 auto;width:min(460px,100%);z-index:3000;background:var(--surface);box-shadow:-20px 0 60px rgba(0,0,0,.45);transform:translateX(105%);transition:.25s;overflow:auto}.settings-drawer.open{transform:none}.drawer-top{padding:20px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line)}.drawer-body{padding:20px}.drawer-body h3{margin:20px 0 6px}.drawer-body p{color:var(--muted);font-size:12px}.drawer-actions{display:grid;gap:8px}.danger{background:#361722;color:#ff9ab4;border:1px solid #653043;border-radius:10px;padding:10px;font-weight:850}.scrim{position:fixed;inset:0;background:rgba(0,0,0,.55);z-index:2999;display:none}.scrim.show{display:block}.leaflet-container{font-family:var(--sans)}.map-marker{width:30px;height:30px;border-radius:50% 50% 50% 8px;transform:rotate(-45deg);display:grid;place-items:center;border:3px solid #fff;box-shadow:0 4px 12px rgba(0,0,0,.28)}.map-marker span{transform:rotate(45deg);font-weight:900;font-size:10px;color:#fff}.map-marker.home span{color:#24170d}
@media(max-width:980px){.hero{grid-template-columns:1fr;padding-top:45px}.hero-copy{padding-left:0}.semester-grid{grid-template-columns:repeat(2,1fr)}.course-row{grid-template-columns:85px 1fr 1fr 65px}.course-row .field:nth-child(n+5){grid-column:auto}.planner-main{grid-template-columns:1fr}.planner-stats{display:none}}
@media(max-width:680px){nav>a:not(.nav-cta){display:none}.site-header{padding:0 16px}.hero{padding:35px 16px 65px;gap:35px}.hero h1{font-size:49px}.import-card{padding:21px}.trust-row{gap:12px}.review-shell{margin:0 10px 60px;padding:17px}.review-heading{align-items:flex-start}.review-heading h2{font-size:29px}.semester-grid{grid-template-columns:1fr 1fr}.semester-grid label:first-child,.semester-grid label:last-child{grid-column:1/-1}.course-row{grid-template-columns:1fr 1fr;padding:13px}.course-row .field.title-field{grid-column:1/-1}.course-row .days-field{grid-column:1/-1}.course-row .remove-course{grid-column:2;justify-self:end}.review-footer{align-items:stretch;flex-direction:column}.feature-grid{grid-template-columns:1fr}.privacy-band{margin:0 16px 60px;padding:28px;grid-template-columns:1fr;gap:20px}.privacy-band h2{font-size:31px}footer{flex-direction:column}.planner-header-inner{padding:10px 12px}.planner-title p{display:none}.planner-main{padding:10px 7px 55px}.panel-top{padding:12px}.week-grid{grid-template-columns:34px repeat(5,minmax(52px,1fr));gap:0 3px}.hours,.day-column{height:480px}.event{left:2px;right:2px;padding:5px}.event strong{font-size:9px}.event span{font-size:7.5px}.tool-row{grid-template-columns:1fr}.route-meta{grid-template-columns:1fr 1fr}#publicMap{height:300px}.status-badge{display:none}}
