@media (max-width: 899px) {
  .map-controls{display:grid;bottom:104px;transition:opacity .16s ease,transform .16s ease;z-index:2}
  .map-app.controls-obscured .map-controls{opacity:0;transform:translateY(8px);pointer-events:none}
}

/* Compact draggable continuous time ruler. */
.sheet-body{padding-top:0}
.timeline-row{display:grid;grid-template-columns:minmax(0,1fr) 64px;gap:9px;align-items:stretch}
.timeline-shell{position:relative;min-width:0;height:118px;border:1px solid #d4dde6;border-radius:13px;background:linear-gradient(180deg,#fff 0%,#fbfcfd 62%,#f6f8fa 100%);box-shadow:inset 0 1px 0 #fff,0 2px 8px #25384a0d;overflow:hidden}
.timeline{position:absolute;inset:0;display:block;overflow-x:auto;overflow-y:hidden;padding:0;scrollbar-width:none;touch-action:none;overscroll-behavior:none;cursor:grab;user-select:none;-webkit-user-select:none;scroll-behavior:auto}
.timeline.is-dragging{cursor:grabbing}.timeline::-webkit-scrollbar{display:none}
.ruler-track{position:relative;height:116px;min-width:100%}
.ruler-day-label{position:absolute;top:4px;transform:translateX(8px);font-size:9px;font-weight:650;color:#71808d;letter-spacing:.02em;pointer-events:none;white-space:nowrap}
.ruler-midnight{position:absolute;top:0;bottom:0;width:1px;background:#d8dee5;pointer-events:none}
.ruler-course{position:absolute;top:34px;height:29px;border:1px solid var(--course-border);background:var(--course-bg);border-radius:6px;padding:0 7px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-size:11px;font-weight:650;line-height:27px;color:#34475a;z-index:2;transition:opacity .16s ease,filter .16s ease,box-shadow .16s ease;cursor:pointer}
.ruler-course:hover{filter:brightness(.985)}.ruler-course.is-past{opacity:.4;filter:saturate(.6)}.ruler-course.is-future{opacity:.8}.ruler-course.is-current{opacity:1;box-shadow:0 0 0 1px #fff,0 2px 7px #22384b24;filter:saturate(1.05)}
.ruler-tick{position:absolute;top:67px;width:1px;background:#aeb9c4;transform:translateX(-.5px);pointer-events:none}.ruler-tick.minor{height:6px;background:#c9d1d9}.ruler-tick.medium{height:10px}.ruler-tick.major{height:15px;background:#81909e}
.ruler-label{position:absolute;top:82px;transform:translateX(-50%);font-size:10px;line-height:1;color:#6d7a87;font-variant-numeric:tabular-nums;white-space:nowrap;pointer-events:none}
.ruler-period{position:absolute;bottom:1px;height:16px;border-top:1px solid #dbe2e8;text-align:center;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;padding:2px 4px 0;font-size:9px;color:#71808d;pointer-events:none}.ruler-period span{opacity:.88}
.timeline-marker{position:absolute;top:0;bottom:0;left:50%;width:0;z-index:5;pointer-events:none}
.timeline-marker i{position:absolute;top:31px;bottom:0;left:-1px;width:2px;border-radius:2px;background:#b43b3f;box-shadow:0 0 0 1px #ffffffa8}
.timeline-marker .timeline-date{position:absolute;top:3px;left:50%;transform:translate(-50%,-100%);font-size:9px;font-weight:650;color:#9d2f34;background:#fff;padding:1px 5px;border:1px solid #ecd2d4;border-radius:5px;white-space:nowrap;opacity:0;transition:transform .22s cubic-bezier(.2,.8,.2,1),opacity .18s ease}
.timeline-marker .timeline-date:not([hidden]){transform:translate(-50%,0);opacity:1}
.timeline-marker .timeline-time{position:absolute;top:8px;left:50%;transform:translateX(-50%);height:23px;display:flex;align-items:center;padding:0 7px;border-radius:6px;background:#fff;color:#9d2f34;border:1px solid #e4c3c5;box-shadow:0 1px 5px #26394d17;font-size:12px;font-weight:700;font-variant-numeric:tabular-nums;white-space:nowrap;letter-spacing:.01em}
.timeline-marker:has(.timeline-date:not([hidden])) .timeline-time{top:21px}.timeline-marker:has(.timeline-date:not([hidden])) i{top:44px}
.timeline-actions{display:grid;grid-template-rows:38px minmax(0,1fr);gap:7px;min-width:0}
.cike-button{background:#365e89;color:#fff;border-color:#365e89;font-weight:700;font-size:15px;min-height:0;border-radius:11px;padding:8px 5px}
.timeline-reset{position:static;z-index:7;min-width:0;height:38px;min-height:38px;padding:0 5px;border-radius:10px;display:flex;align-items:center;justify-content:center;gap:2px;background:linear-gradient(180deg,#fff,#f1f4f6);border:1px solid #c7d0d9;box-shadow:0 2px 5px #25384a1b,inset 0 1px 0 #fff;color:#536577;font-size:10px;font-weight:650}
.timeline-reset svg{width:14px;height:14px;fill:currentColor;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}.timeline-reset svg path:first-child{stroke:none}.timeline-reset svg path:last-child{fill:none}
.timeline-reset:hover{background:linear-gradient(180deg,#fff,#eaf0f4)}.timeline-reset.is-live{color:#9d2f34;border-color:#d9b3b6;background:linear-gradient(180deg,#fff,#f8eded)}.timeline-reset:active{transform:scale(.96)}
.timeline-reset.is-returning{animation:now-pill .58s cubic-bezier(.2,.9,.25,1)}.timeline-shell.is-returning{animation:timeline-focus .62s cubic-bezier(.16,1,.3,1)}.timeline-marker.is-returning .timeline-time{animation:marker-pop .62s cubic-bezier(.16,1,.3,1)}
@keyframes now-pill{0%{transform:scale(1)}30%{transform:scale(.9)}68%{transform:scale(1.07)}100%{transform:scale(1)}}
@keyframes timeline-focus{0%{box-shadow:inset 0 1px 0 #fff,0 2px 8px #25384a0d}50%{box-shadow:inset 0 1px 0 #fff,0 4px 20px #365e8925}100%{box-shadow:inset 0 1px 0 #fff,0 2px 8px #25384a0d}}
@keyframes marker-pop{0%{transform:translateX(-50%) scale(1)}42%{transform:translateX(-50%) scale(1.1)}100%{transform:translateX(-50%) scale(1)}}

/* Query-result visual language. */
.result-summary{font-size:15px;font-weight:600;line-height:1.6;margin:16px 0 8px}.map-results{display:grid;border-top:1px solid var(--line)}
.map-query-course{padding:12px 0;border-bottom:1px solid var(--line)}.map-query-course-head{display:flex;align-items:start;gap:12px;justify-content:space-between}
.map-query-course-name{padding:0;min-height:0;border:0;background:transparent;text-align:left;font-size:16px;font-weight:600;line-height:1.5;overflow-wrap:anywhere;color:#365e89}.map-query-course-name:hover{text-decoration:underline;background:transparent}
.map-query-meta{font-size:13px;color:#687587;margin:4px 0;line-height:1.55}.map-query-location{font-size:15px;margin:7px 0 3px;font-weight:500}.map-query-remark{font-size:13px;margin:7px 0 0;line-height:1.65;color:#5c6572;overflow-wrap:anywhere}
.map-detail{border-top:1px solid var(--line);padding:12px 0 6px}.map-detail-back{min-height:32px;padding:4px 9px;margin-bottom:10px;font-size:13px}.map-detail h2{margin:0 0 10px;font-size:20px;color:#365e89;line-height:1.45}.map-detail dl{display:grid;grid-template-columns:76px 1fr;gap:7px 10px;margin:0;font-size:13px;line-height:1.6}.map-detail dt{color:#687587}.map-detail dd{margin:0;overflow-wrap:anywhere;white-space:pre-line}.map-detail-note{margin:12px 0 0;padding-top:10px;border-top:1px solid var(--line);font-size:13px;line-height:1.65;color:#5c6572}

/* Independent mobile course-detail sheet: always above map, building sheet, controls and primary sheet. */
.course-detail-sheet{position:fixed;left:0;right:0;bottom:0;height:46dvh;min-height:150px;max-height:86dvh;background:#fff;border-radius:18px 18px 0 0;box-shadow:0 -10px 34px #22384b35;z-index:10010;overflow:hidden;isolation:isolate;transition:height .22s cubic-bezier(.2,.8,.2,1),transform .24s cubic-bezier(.2,.8,.2,1),opacity .18s ease}
.course-detail-sheet[hidden]{display:none}.course-detail-sheet.is-entering{animation:detail-rise .28s cubic-bezier(.16,1,.3,1)}.course-detail-sheet.is-dragging{transition:none}
@keyframes detail-rise{from{transform:translateY(18px);opacity:.45}to{transform:none;opacity:1}}
.detail-drag-handle{display:block;width:100%;height:30px;min-height:30px;border:0;padding:9px;background:transparent;touch-action:none}.detail-drag-handle span{display:block;width:42px;height:4px;margin:auto;border-radius:999px;background:#b6c0ca}
.detail-close{position:absolute;right:12px;top:9px;width:32px;height:32px;min-height:32px;padding:0;border:0;border-radius:50%;display:grid;place-items:center;background:#eef2f5;color:#526171;font-size:23px;line-height:1;z-index:2}.detail-close:hover{background:#e3e9ee}
.course-detail-body{height:calc(100% - 30px);overflow:auto;padding:4px 18px 24px;overscroll-behavior:contain}.course-detail-body h2{margin:2px 42px 12px 0;font-size:21px;line-height:1.4;color:#365e89}.course-detail-body dl{display:grid;grid-template-columns:72px 1fr;gap:8px 10px;margin:0;font-size:13px;line-height:1.65}.course-detail-body dt{color:#687587}.course-detail-body dd{margin:0;overflow-wrap:anywhere;white-space:pre-line}.course-detail-body .map-detail-note{margin-top:14px}

@media(max-width:560px){.timeline-shell{height:114px}.ruler-track{height:112px}.ruler-course{top:33px}.ruler-tick{top:65px}.ruler-label{top:80px}.timeline-row{grid-template-columns:minmax(0,1fr) 62px}.map-detail dl{grid-template-columns:68px 1fr}.course-detail-body{padding-left:16px;padding-right:16px}}
@media(min-width:900px){.course-sheet{max-width:430px}.sheet-body{padding-top:18px}.timeline-shell{height:118px}.ruler-track{height:116px}.map-results{max-height:42vh;overflow:auto}.course-detail-sheet{display:none!important}.timeline-row{grid-template-columns:minmax(0,1fr) 68px}.timeline-actions{grid-template-rows:40px minmax(0,1fr)}}
@media(prefers-reduced-motion:reduce){.ruler-course,.timeline-reset,.timeline-marker .timeline-date{transition:none}.timeline-reset.is-returning,.timeline-shell.is-returning .timeline-time,.course-detail-sheet.is-entering{animation:none}}
