/* Requested viewport layout; existing theme and mobile navigation remain in app.css. */
html,body{height:100%;overscroll-behavior:none}
body{overflow:hidden}
main{height:100dvh;display:flex;flex-direction:column;padding-bottom:0;min-width:0}
.topbar{height:52px;min-height:52px;padding:0 24px;gap:16px}
.topbar-title{margin-right:auto}
.calendar-area{max-width:none;width:100%;margin:0;flex:1;min-height:0;display:flex;flex-direction:column;padding:22px 24px 18px}
.period-bar{flex-shrink:0;gap:24px}
.period-bar>div:first-child{min-width:220px}
.period-bar .view-tabs{margin:0 auto;flex-shrink:0;background:var(--surface);border:1px solid var(--line);padding:3px;border-radius:25px}
.period-bar .view-tabs button{color:var(--muted);padding:8px 20px}
.period-bar .view-tabs button.active{color:#fff}
.calendar-meta{flex-shrink:0;margin:18px 0 12px}
.calendar-panel{flex:1;min-height:0;overflow:auto;overscroll-behavior:contain}
#week-rows{min-height:100%;display:flex;flex-direction:column}
.week-row{flex:1;min-height:85px}
.week-strip{position:static;flex-shrink:0;padding-top:7px;padding-bottom:max(7px,env(safe-area-inset-bottom));min-height:70px}
#calendar{height:100%;min-height:0}
.sidebar{overflow-y:auto;overscroll-behavior:contain}
.sidebar-heading{margin-top:30px}
.sidebar-bottom{padding-top:18px}
.add-button{padding-top:5px;padding-bottom:5px}
dialog{max-height:calc(100dvh - 32px);overflow:auto;overscroll-behavior:contain}
.event-form{padding:22px;display:grid;gap:14px}.event-form label{display:grid;gap:7px;font-size:12px;color:var(--muted)}
.event-form input,.event-form select,.event-form textarea{width:100%;border:1px solid var(--line);border-radius:7px;background:var(--bg);color:var(--text);font:inherit;padding:10px;font-size:16px}
.form-pair{display:grid;grid-template-columns:1fr 1fr;gap:12px}.event-form .check-label{display:flex;align-items:center;gap:8px}.check-label input{width:auto}.form-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:6px}.primary-button{background:var(--accent);color:white;border-radius:7px;padding:10px 16px}.secondary-button{border:1px solid var(--line);border-radius:7px;padding:10px 14px}.danger-button{color:#e06375}.status-message{font-size:12px;color:var(--muted);padding:8px 0;line-height:1.6}.error-message{color:#dc697a}.day-space{gap:6px;align-items:stretch;overflow-x:auto}.today-pill{align-self:center}.event-card{position:relative;text-align:left;flex:0 0 155px;min-height:75px;padding:10px 28px 9px 10px;border-radius:3px;border:1px solid var(--line);border-top:4px solid var(--event-color);background:color-mix(in srgb,var(--event-color) 22%,var(--surface));color:var(--text);overflow:hidden}.event-card strong{display:block;font-size:12px;font-weight:600;overflow-wrap:anywhere}.event-card small{display:block;font-size:10px;margin-top:8px}.creator-sticker{position:absolute;right:5px;top:6px;width:21px;height:21px;display:grid;place-items:center;border-radius:50%;background:var(--surface);color:var(--text);font-size:8px;border:1px solid var(--line)}.label-filter{display:flex;align-items:center;gap:10px;text-align:left;padding:4px 0;font-size:12px}.label-filter[aria-pressed=false]{opacity:.4}.label-swatch{width:10px;height:10px;border-radius:3px;display:inline-block;flex-shrink:0}.label-edit{font-size:11px;color:var(--muted);margin-left:auto}.label-row{display:flex;gap:8px;align-items:center}.label-row .label-filter{flex:1}.fc-event{cursor:pointer}.fc-event .creator-inline{font-size:9px;border-radius:12px;padding:2px 4px;background:var(--surface);color:var(--text);margin-left:4px}.mobile-app .phase-note{display:none}.login-card{width:min(430px,calc(100% - 32px));margin:5vh auto;padding:26px;border-radius:14px;background:var(--surface);border:1px solid var(--line)}.auth-page{overflow:auto;height:auto;min-height:100dvh}.auth-page .event-form{padding:0}.auth-page h1{margin-bottom:24px}.auth-page p{font-size:13px;line-height:1.7;color:var(--muted)}.auth-page code{overflow-wrap:anywhere;user-select:all}.auth-page details{margin:16px 0}.phase-note{display:none}
@media(max-width:1000px){.period-bar{gap:12px}.period-bar>div:first-child{min-width:0}.period-bar .view-tabs button{padding:8px 13px}h1{font-size:23px}}
@media(max-width:760px){html{touch-action:pan-x pan-y}body{position:fixed;inset:0;width:100%;touch-action:pan-x pan-y}.topbar{padding:env(safe-area-inset-top) 12px 0;height:calc(46px + env(safe-area-inset-top));min-height:calc(46px + env(safe-area-inset-top))}.topbar-title{display:block}.calendar-area{padding:16px 10px 10px}.period-bar{display:grid;grid-template-columns:1fr auto;gap:14px 8px}.period-bar>div:first-child{grid-column:1}.period-actions{grid-column:2;grid-row:1}.period-bar .view-tabs{grid-column:1 / -1;grid-row:2;justify-self:center;width:100%;justify-content:center}.period-bar .view-tabs button{flex:1;padding:8px 14px}.calendar-meta{margin:12px 0 9px}.calendar-panel{touch-action:pan-x pan-y}.week-row{min-height:78px;grid-template-columns:60px 1fr}.day-space{padding:8px}.event-card{flex-basis:133px}.week-strip{min-height:65px}.sidebar{padding-top:max(24px,env(safe-area-inset-top));height:100dvh}.brand{font-size:18px}.sidebar-heading{margin-top:24px}.mini-calendar{margin-top:18px}.form-pair{grid-template-columns:1fr}.event-form{padding:18px;gap:12px}.auth-page{position:static;overflow:auto;height:auto}.auth-page .form-pair{grid-template-columns:1fr}}
@media(max-height:550px) and (max-width:960px){.calendar-meta{display:none}.calendar-area{padding-top:8px}.period-bar{gap:6px}.week-strip{min-height:48px;padding:3px}.week-strip strong{font-size:17px}.topbar{height:40px;min-height:40px}.week-row{min-height:70px}}

/* Keep desktop view controls fixed when the period title changes length. */
@media(min-width:761px){.period-bar{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:start}.period-bar>div:first-child{min-width:0}.period-bar .view-tabs{margin:0;justify-self:center}.period-bar .period-actions{justify-self:end}}
/* On narrow desktops the title gets its own row, keeping controls clear of each other. */
@media(min-width:761px) and (max-width:1000px){.period-bar{grid-template-columns:minmax(0,1fr) auto}.period-bar>div:first-child{grid-column:1 / -1;grid-row:1}.period-bar h1{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.period-bar .view-tabs{grid-column:1;grid-row:2;justify-self:start}.period-bar .period-actions{grid-column:2;grid-row:2}}
