/* City menu (24 Eylül, city-menu.js; 28. tur): Bugün · Konular · Denemeler · İlerlemem · Şehir, the same five places as the
   study pages (app-nav.css). Colours come from palette.css. */
.city-dock{align-items:stretch}
.city-dock>a,.city-dock>button,.dock-places>button{position:relative}
.city-dock em{font-style:normal}
/* Bugün: a small ring fills with the day's tasks. */
.dock-ring{display:grid;place-items:center;width:32px;height:32px;border-radius:50%;background:conic-gradient(var(--ui-accent,#ecc27f) var(--done,0%),rgba(255,255,255,.16) 0);position:relative}
.dock-ring::before{content:'';position:absolute;inset:3px;border-radius:50%;background:rgb(var(--ui-surface,21,32,43))}
.dock-ring i{position:relative;font:700 11px/1 system-ui,sans-serif;font-style:normal;letter-spacing:-.03em;color:var(--ui-text,#f4f1ea)}
#dock-today .dock-ring{font-size:inherit}
#dock-today.complete .dock-ring i{color:var(--ui-accent,#ecc27f)}
/* Şehir: a short list that opens above the dock. */
.dock-places{position:relative;display:flex}
.dock-places>button{flex:1}
.dock-menu{position:absolute;left:0;bottom:calc(100% + 10px);z-index:12;display:grid;min-width:210px;padding:6px;border:1px solid var(--ui-line,#3a4b5c);border-radius:12px;background:var(--ui-reading,#15202b);box-shadow:var(--ui-shadow,0 10px 30px #0006)}
.dock-menu[hidden]{display:none}
.city-dock .dock-menu a,.city-dock .dock-menu button{justify-content:flex-start;flex-direction:row;gap:10px;min-height:44px;padding:8px 12px;font-size:12px;text-align:left;width:100%;border:0}
.city-dock .dock-menu span{font-size:16px;width:20px;text-align:center}

/* Günün görevleri */
dialog.today-dialog{width:min(560px,calc(100% - 24px));max-height:88dvh;padding:28px 28px 24px;overflow:auto;border-radius:16px}
.today-dialog h2{font:500 30px/1.15 Georgia,serif;margin:8px 0 14px}
.today-fire{display:flex;align-items:center;gap:14px;margin-bottom:16px}
.today-fire p{margin:0;font-size:13px;color:var(--ui-muted,#c6ced6)}
.today-fire .fire-ring::before{background:rgb(var(--ui-surface,21,32,43))}
.today-tasks{list-style:none;margin:0;padding:0;display:grid;gap:10px}
.today-tasks li{display:grid;grid-template-columns:48px 1fr auto;gap:14px;align-items:center;padding:14px;border:1px solid var(--ui-line,#3a4b5c);border-radius:12px;background:var(--ui-raised,#1f2d3b)}
.today-tasks li.done{border-color:#4f8d6e;background:#1a3a2e}
.today-mark{display:grid;place-items:center;width:48px;height:48px;border-radius:50%;border:2px solid var(--ui-line,#3a4b5c);font:700 13px/1 system-ui,sans-serif;color:var(--ui-text,#f4f1ea)}
.today-tasks li.done .today-mark{border-color:#82dfae;color:#82dfae;font-size:20px}
.today-tasks strong{display:block;font-size:15px}
.today-tasks p{margin:3px 0 0;font-size:12px;line-height:1.55;color:var(--ui-muted,#c6ced6)}
.today-tasks small{display:block;margin-top:5px;font-size:11px;color:var(--ui-accent,#ecc27f)}
.today-go{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:0 14px;border-radius:8px;border:1px solid var(--ui-primary-line,#6aa6bd);background:var(--ui-primary,#2e6c85);color:#fff;font-size:12px;font-weight:650;text-decoration:none;white-space:nowrap;cursor:pointer}
.today-go:hover{background:var(--ui-primary-hover,#387d98)}
.today-bonus{margin:16px 0 6px;font-size:13px;color:var(--ui-accent,#ecc27f)}
.today-book{min-height:44px;padding:0;border:0;background:transparent;color:var(--ui-link,#a8d8f3);font-size:13px;font-weight:650;cursor:pointer}
@media(max-width:650px){
  .dock-menu{left:auto;right:0}
  .city-dock .dock-places{flex:1}
  .city-dock .dock-places>button{flex-direction:column}
  .dock-ring{width:30px;height:30px}
  dialog.today-dialog{padding:22px 16px 18px}
  .today-tasks li{grid-template-columns:40px 1fr;gap:10px}
  .today-mark{width:40px;height:40px}
  .today-go{grid-column:1/-1}
}

/* 43. tur (user: “evet onu da düzelt”): below 375px the dock, which shares the line with the sound button, gave each
   word an equal fifth and “Denemeler” ran into its neighbours; there each button takes the room its word needs (the words
   stay 11px). Below 340px the short ones (Bugün, Şehir) may narrow to 36px, still 59px high. */
@media(max-width:374px){
  nav.city-dock{gap:2px;padding:4px}
  nav.city-dock>a,nav.city-dock>button,nav.city-dock>.dock-places{flex:1 1 auto}
  nav.city-dock>a,nav.city-dock>button,nav.city-dock>.dock-places>button{padding:6px 2px}
}
@media(max-width:339px){nav.city-dock>a,nav.city-dock>button,nav.city-dock>.dock-places>button{min-width:36px;letter-spacing:-.01em}}

/* 25 Eylül: Prometheus's guard under the day's fire. */
.today-fire .today-guard{display:block;margin-top:4px;font-size:12px;color:var(--ui-accent,#e7c47d)}
/* 26. tur: the note under the expected-exam counter. */
.today-fire .exam-note{display:block;margin-top:2px;font-size:11px;line-height:1.45;color:var(--ui-muted,#c6ced6)}
/* 26. tur: on a phone the welcome and first-visit cards sit over the dock; they step aside while the Mekânlar list is open. */
@media(max-width:650px){body.places-open .welcome-back,body.places-open .first-steps{visibility:hidden}}
/* 26. tur (Hazırlık rotası): the way in before a route exists, and the program's step buttons. */
.route-call{display:grid;gap:4px;margin:0 0 14px;padding:14px 16px;border:1px solid var(--ui-accent,#ecc27f);border-radius:12px;background:#ecc27f14;color:var(--ui-text,#f4f1ea);text-decoration:none}
.route-call strong{font:500 19px/1.25 Georgia,serif}
.route-call span{font-size:13px;line-height:1.5;color:var(--ui-muted,#c6ced6)}
.route-call em{font-style:normal;font-size:13px;font-weight:650;color:var(--ui-link,#a8d8f3)}
.route-call:hover{background:#ecc27f22}
.step-actions{display:flex;flex-direction:column;gap:6px}
.today-go.secondary{background:transparent;border-color:var(--ui-line,#3a4b5c);color:var(--ui-text,#f4f1ea)}
.today-go.secondary:hover{background:var(--ui-hover,#2a3b4c)}
.today-dialog a.today-book{display:inline-flex;align-items:center;margin-right:18px;text-decoration:none}
@media(max-width:650px){.step-actions{grid-column:1/-1;flex-direction:row;flex-wrap:wrap}.step-actions .today-go{flex:1}}
/* 28. tur: an unfinished round, one line above the day's program. */
.today-resume{margin:0 0 12px;padding:10px 14px;border-radius:10px;border:1px solid var(--ui-line,#3a4b5c);font-size:13px;color:var(--ui-muted,#c6ced6)}
.today-resume a{color:var(--ui-link,#a8d8f3);font-weight:650;white-space:nowrap}
/* 28. tur (one card at a time): the cats' “Biliyor muydun?” bubble waits while a card or a window is open. */
body:has(.welcome-back,.first-steps,.exam-news:not([hidden]),dialog[open]) .cat-news{visibility:hidden}
/* 30. tur: the social places gather under “Birlikte” in the Şehir menu (the header button is gone). */
.dock-menu .dock-group{margin:6px 0 0;padding:10px 12px 2px;border-top:1px solid var(--ui-line,#3a4b5c);font-size:11px;font-weight:750;letter-spacing:1.5px;text-transform:uppercase;color:var(--ui-accent,#d9b36c)}
.today-week{margin:4px 0 0;font-size:12px;opacity:.85}
/* 33. tur (user: “bugün şeyi çok kaba ve büyük”; chose “Küçük panel”): Bugün is a small panel above its dock button, not a
   window over the city; on a phone it sits above the dock like the chat panel. The frame lets the map through a little,
   the steps sit on solid rows. The route page keeps the full list (.today-tasks above). */
dialog.today-panel{position:fixed;z-index:61;inset:auto auto 132px 22px;margin:0;width:min(372px,calc(100% - 32px));max-height:calc(100dvh - 210px);overflow:auto;overscroll-behavior:contain;padding:14px 14px 12px;display:grid;gap:10px;border:1px solid var(--ui-line,#3a4b5c);border-radius:16px;color:var(--ui-text,#f4f1ea);background:rgba(var(--ui-surface,21,32,43),.9);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);box-shadow:var(--ui-shadow,0 10px 30px #0008);font:14px/1.4 'Avenir Next',Avenir,'Segoe UI',sans-serif}
dialog.today-panel:not([open]){display:none}
.today-panel .tp-top{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}
.today-panel .eyebrow{margin:0;font-size:11px;font-weight:800;letter-spacing:.14em}
.today-panel h2{margin:2px 0 0;font:500 19px/1.2 Georgia,serif;letter-spacing:0}
.today-panel .dialog-close{position:static;flex:none;width:34px;height:34px;min-width:34px;display:grid;place-items:center;padding:0;border:1px solid var(--ui-line,#3a4b5c);border-radius:50%;background:transparent;color:inherit;font-size:18px;cursor:pointer}
.tp-sum{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--ui-muted,#c6ced6)}
.tp-bar{flex:1;height:6px;border-radius:6px;background:#ffffff1f;overflow:hidden}.tp-bar i{display:block;height:100%;border-radius:6px;background:var(--ui-accent,#ecc27f)}
.today-panel .tp-resume{margin:0;padding:7px 10px;border-radius:10px;border:1px solid var(--ui-line,#3a4b5c);font-size:12px}.tp-resume a{color:var(--ui-link,#a8d8f3);font-weight:700;white-space:nowrap}
.tp-steps{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.tp-step{display:grid;grid-template-columns:26px minmax(0,1fr) auto;gap:10px;align-items:center;min-height:46px;padding:6px 8px 6px 10px;border:1px solid var(--ui-line,#3a4b5c);border-radius:11px;background:rgba(31,45,59,.96)}
.tp-step.now{border-color:#ecc27f99;background:rgba(43,56,66,.98)}
.tp-step.done,.tp-step.empty{opacity:.72}
.tp-mark{box-sizing:border-box;width:24px;height:24px;border-radius:50%;border:2px solid #56697b;display:grid;place-items:center;font-size:12px;font-weight:800;color:#82dfae}
.tp-step.done .tp-mark{border-color:#82dfae;background:#82dfae22}.tp-step.empty .tp-mark{color:var(--ui-muted,#c6ced6)}
.tp-step.now .tp-mark{border-color:var(--ui-accent,#ecc27f);background:conic-gradient(var(--ui-accent,#ecc27f) 0 var(--part,0%),transparent 0)}
.tp-words{min-width:0}
.tp-words strong,.tp-title{display:block;max-width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-size:13.5px;font-weight:700;color:var(--ui-text,#f4f1ea)}
.tp-title{padding:0;border:0;background:none;font-family:inherit;text-align:left;text-decoration:none;cursor:pointer}.tp-title:hover{text-decoration:underline;text-underline-offset:3px}
.tp-words small{display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-size:11.5px;color:var(--ui-muted,#c6ced6)}
.tp-links{display:flex;flex-wrap:wrap;align-items:center;gap:0 4px;font-size:11.5px;color:var(--ui-muted,#c6ced6)}
.tp-link{padding:0;border:0;background:none;color:var(--ui-link,#a8d8f3);font:inherit;font-weight:700;text-decoration:none;cursor:pointer}
.tp-go{display:inline-flex;align-items:center;min-height:34px;padding:0 12px;border-radius:9px;border:1px solid var(--ui-primary-line,#6aa6bd);background:var(--ui-primary,#2e6c85);color:#fff;font-size:12px;font-weight:700;white-space:nowrap;text-decoration:none;cursor:pointer}
.tp-go:hover{background:var(--ui-primary-hover,#387d98)}.tp-go.locked{background:transparent;border-color:var(--ui-line,#3a4b5c);color:var(--ui-text,#f4f1ea)}
.tp-count{font-size:12px;font-weight:700;color:var(--ui-muted,#c6ced6);white-space:nowrap}
.tp-chips{display:flex;flex-wrap:wrap;gap:6px}
.tp-chip{display:inline-flex;align-items:center;gap:5px;padding:4px 9px;border-radius:999px;border:1px solid var(--ui-line,#3a4b5c);background:rgba(31,45,59,.96);font-size:11.5px;line-height:1.35}
.tp-foot{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:4px 10px;font-size:12px;color:var(--ui-muted,#c6ced6)}
.tp-foot .tp-pack{color:var(--ui-accent,#ecc27f)}
.tp-foot a,.tp-foot button{min-height:32px;padding:0;border:0;background:none;color:var(--ui-link,#a8d8f3);font:inherit;font-weight:700;text-decoration:none;cursor:pointer}
.today-panel .route-call{margin:0;padding:9px 12px;gap:2px}.today-panel .route-call strong{font-size:16px}.today-panel .route-call span,.today-panel .route-call em{font-size:12px;line-height:1.45}
@media(max-width:650px){dialog.today-panel{inset:auto 8px calc(124px + env(safe-area-inset-bottom)) 8px;width:auto;max-height:calc(100svh - 200px);padding:12px}}
/* Opened from the phone's start sheet (start-sheet.js): at the bottom of the sheet, above it. */
body.start-on dialog.today-panel{bottom:calc(12px + env(safe-area-inset-bottom));z-index:30}
@media(pointer:coarse){.tp-go,.tp-foot a,.tp-foot button{min-height:44px}.tp-link{display:inline-flex;align-items:center;min-height:36px}.tp-title{min-height:24px}}
/* One card at a time: the welcome and first-visit cards step aside while Bugün is open. */
body.today-open .welcome-back,body.today-open .first-steps{visibility:hidden}
