@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap');
:root{--blue:#2563eb;--blue-dark:#1d4ed8;--ink:#162238;--muted:#718096;--bg:#f5f8fc;--card:#fff;--line:#e7edf5;--green:#15945b;--green-bg:#eaf8f0;--red:#dc3f43;--red-bg:#fff0f1;--shadow:0 8px 26px rgba(22,34,56,.045)}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--ink);font-family:Inter,system-ui,-apple-system,"Segoe UI",sans-serif;-webkit-font-smoothing:antialiased}a{color:inherit}button,input,select{font:inherit}.app-page{padding-bottom:96px}.appbar{max-width:980px;margin:auto;padding:28px 24px 20px;display:flex;align-items:center;justify-content:space-between}.appbar h1{margin:3px 0 0;font-size:30px;line-height:1.12;letter-spacing:-.035em}.appbar small{color:var(--muted);font-size:13px;font-weight:600}.avatar{width:48px;height:48px;border-radius:16px;background:#fff;border:1px solid var(--line);box-shadow:var(--shadow);display:grid;place-items:center;text-decoration:none;color:var(--blue);font-weight:800;font-size:17px}.content{max-width:980px;margin:auto;padding:0 24px}.dashboard-hero{background:linear-gradient(135deg,#2856df,#1f4bd5);color:#fff;border-radius:24px;padding:30px 28px;display:flex;align-items:center;justify-content:space-between;gap:24px;box-shadow:0 14px 30px rgba(37,99,235,.12)}.dashboard-hero .eyebrow{color:#dbe7ff;font-size:11px;font-weight:800;letter-spacing:.08em}.dashboard-hero h2{margin:8px 0 5px;font-size:31px;line-height:1.05;letter-spacing:-.03em}.dashboard-hero p{margin:0;color:#dbe7ff;font-size:13px;line-height:1.45}.dashboard-all-btn{flex:0 0 auto;white-space:nowrap;background:#fff;color:#24344f;border:0;padding:14px 20px;border-radius:14px;font-weight:700;text-decoration:none}.section-head{display:flex;align-items:center;justify-content:space-between;gap:14px;margin:28px 0 12px}.section-head h2{margin:0;font-size:19px;letter-spacing:-.02em}.section-head a{color:var(--blue);font-size:13px;text-decoration:none;font-weight:600}.shift-card{background:var(--card);border:1px solid var(--line);border-radius:18px;box-shadow:var(--shadow);display:flex;align-items:center;gap:14px;padding:15px 16px;margin:10px 0}.date-box{width:58px;min-width:58px;background:#f4f7fb;border-radius:14px;padding:9px 5px;text-align:center}.date-box b,.date-box small{display:block}.date-box b{font-size:20px;line-height:1}.date-box small{font-size:10px;color:var(--muted);margin-top:5px}.shift-main{min-width:0;flex:1}.shift-main b{display:block;font-size:15px}.shift-main span{display:block;color:var(--muted);font-size:12px;margin-top:5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.status,.badge{font-size:11px;font-weight:700;padding:7px 10px;border-radius:10px;background:var(--green-bg);color:var(--green);white-space:nowrap}.quick-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-top:18px}.quick-grid a{min-height:112px;background:#fff;border:1px solid var(--line);border-radius:18px;box-shadow:var(--shadow);padding:18px;text-decoration:none;display:flex;flex-direction:column;justify-content:space-between}.quick-grid b{color:var(--blue);font-size:23px;line-height:1}.quick-grid span{color:#526176;font-size:12px;font-weight:600;line-height:1.35}.panel,.empty{background:#fff;border:1px solid var(--line);border-radius:18px;box-shadow:var(--shadow)}.panel{padding:20px;margin:14px 0}.empty{padding:28px;text-align:center;color:var(--muted);font-size:13px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.form-grid button{grid-column:1/-1}.panel label{display:block;font-size:12px;font-weight:700;margin:0 0 7px}.panel input,.panel select,.big-input{width:100%;border:1px solid #d8e0eb;border-radius:12px;padding:12px 13px;background:#fff;color:var(--ink);outline:none}.panel input:focus,.panel select:focus,.big-input:focus{border-color:#9bb9ff;box-shadow:0 0 0 3px #eaf0ff}.primary,.secondary,.light-btn,.small-btn{border:0;border-radius:11px;padding:11px 15px;font-weight:700;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:6px}.primary{background:var(--blue);color:#fff}.secondary{background:#edf3ff;color:var(--blue)}.light-btn{background:#eef3fa;color:#334155}.small-btn{background:#edf3ff;color:var(--blue);padding:8px 11px;font-size:11px}.small-btn.danger{background:var(--red-bg);color:var(--red)}.muted{color:var(--muted);line-height:1.55;font-size:13px}.alert{border-radius:12px;padding:12px 14px;margin:12px 0;font-size:13px}.success{background:var(--green-bg);color:#17633b}.error{background:var(--red-bg);color:#9f2929}.preferences-saved{margin-top:22px;border-top:1px solid var(--line);padding-top:18px}.preferences-title{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px;font-size:14px}.preferences-title>span{min-width:30px;height:30px;padding:0 9px;border-radius:15px;background:#edf3ff;color:var(--blue);display:grid;place-items:center;font-size:11px}.preference-list{display:grid;gap:10px}.preference-item{display:grid;grid-template-columns:120px minmax(0,1fr) auto;align-items:center;gap:16px;padding:14px 15px;background:#fbfcfe;border:1px solid var(--line);border-radius:16px}.preference-date b{display:block;font-size:14px;line-height:1.2;white-space:nowrap}.preference-date span{display:block;font-size:11px;color:var(--muted);margin-top:5px}.preference-shift b{display:block;font-size:14px;white-space:nowrap}.preference-shift span{display:block;font-size:11px;color:var(--muted);margin-top:4px}.pref-actions{display:flex;gap:8px;align-items:center}.pref-actions form{margin:0}.notifications-toolbar{display:flex;align-items:center;justify-content:space-between;gap:14px;background:#fff;border:1px solid var(--line);border-radius:16px;padding:14px 16px;margin:14px 0;box-shadow:var(--shadow)}.notifications-toolbar b{font-size:22px;margin-right:6px}.notifications-toolbar span{font-size:11px;color:var(--muted)}.notification-list{display:grid;gap:10px}.notification-item{display:flex;align-items:flex-start;gap:12px;background:#fff;border:1px solid var(--line);border-radius:16px;padding:15px;box-shadow:var(--shadow)}.notification-item.unread{border-left:4px solid var(--blue);background:#fbfdff}.notification-dot{width:9px;height:9px;border-radius:50%;background:#cbd5e1;margin-top:5px;flex:0 0 auto}.unread .notification-dot{background:var(--blue)}.notification-body{min-width:0;flex:1}.notification-body>b{font-size:13px}.notification-body p{margin:5px 0;font-size:12px;color:#526176;line-height:1.45}.notification-body small{color:#9aa5b5;font-size:10px}.btn-link{display:inline-flex;text-decoration:none}.mobile-nav{position:fixed;z-index:50;bottom:0;left:0;right:0;background:rgba(255,255,255,.97);border-top:1px solid var(--line);display:flex;justify-content:space-around;padding:9px max(12px,env(safe-area-inset-left)) max(9px,env(safe-area-inset-bottom));box-shadow:0 -8px 30px rgba(19,34,58,.06);backdrop-filter:blur(12px)}.mobile-nav a{position:relative;min-width:70px;display:flex;flex-direction:column;gap:4px;align-items:center;text-decoration:none;color:#7b8798;font-size:19px;padding:2px 5px}.mobile-nav a:hover{color:var(--blue)}.mobile-nav span{font-size:10px;font-weight:600}.nav-notify i{position:absolute;top:-2px;left:calc(50% + 7px);background:#e5484d;color:#fff;border-radius:9px;min-width:16px;height:16px;padding:0 3px;font-size:8px;font-style:normal;display:grid;place-items:center}.schedule-calendar{padding-bottom:18px}.calendar-panel{background:#fff;border:1px solid var(--line);border-radius:20px;box-shadow:var(--shadow);padding:18px}.calendar-top{display:grid;grid-template-columns:42px 1fr auto 42px;align-items:center;gap:10px}.calendar-title{text-align:center;font-size:18px}.calendar-top .light-btn{width:42px;height:42px;padding:0;font-size:22px}.today-btn{background:#edf3ff;color:var(--blue);padding:10px 13px;border-radius:11px;text-decoration:none;font-size:11px;font-weight:700;white-space:nowrap}.calendar-week,.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:7px}.calendar-week{margin-top:18px;color:var(--muted);font-size:10px;font-weight:700;text-align:center}.calendar-grid{margin-top:7px}.cal-empty{min-height:50px}.cal-day{min-height:58px;border:1px solid var(--line);border-radius:12px;background:#fbfcfe;text-decoration:none;padding:8px;display:flex;flex-direction:column;justify-content:space-between}.cal-day b{font-size:13px}.cal-day:hover{border-color:#b9cdfb}.cal-day.today{box-shadow:inset 0 0 0 2px #dbe7ff}.cal-day.selected{background:#edf3ff;border-color:#9ebcff}.cal-day.mine{background:#effaf4;border-color:#bde7ce}.cal-day.free{background:#f7fbff}.cal-day.full{background:#f7f8fa}.cal-dots{display:flex;gap:4px}.cal-dots i,.dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:#b8c3d1}.cal-day.mine .cal-dots i:first-child{background:#19a463}.cal-day.free .cal-dots i{background:#4d82ee}.calendar-legend{display:flex;gap:16px;flex-wrap:wrap;margin-top:13px;color:var(--muted);font-size:10px}.calendar-legend .dot{width:7px;height:7px;margin-right:5px}.mine-dot{background:#19a463}.free-dot{background:#4d82ee}.full-dot{background:#b8c3d1}.selected-day{margin-top:18px}.selected-head{display:flex;align-items:center;justify-content:space-between;gap:14px;margin:0 0 12px}.selected-head small{display:block;color:var(--muted);font-size:11px}.selected-head h2{margin:3px 0 0;font-size:22px}.day-all-btn{font-size:11px;color:var(--blue);text-decoration:none;font-weight:700}.calendar-shift{background:#fff;border:1px solid var(--line);border-radius:18px;box-shadow:var(--shadow);padding:14px;display:grid;grid-template-columns:105px 66px minmax(0,1fr);gap:14px;align-items:start;margin:10px 0}.calendar-shift.my-shift{border-color:#bfe7cf;background:#fbfffc}.shift-kind{display:flex;align-items:center;gap:7px;font-size:12px}.shift-kind span{width:30px;height:30px;border-radius:10px;display:grid;place-items:center;background:#edf3ff;color:var(--blue)}.shift-kind.patrol span{background:#f1edff;color:#7355d9}.shift-time b,.shift-time span{display:block}.shift-time b{font-size:15px;color:var(--blue)}.shift-time span{font-size:11px;color:var(--muted);margin-top:2px}.shift-title{display:flex;align-items:center;gap:8px}.shift-title b{font-size:14px}.capacity{font-size:10px;padding:4px 7px;border-radius:8px;background:#eef3fa;color:#5d6b7f}.capacity.has-free{background:#eaf8f0;color:var(--green)}.capacity.is-full{background:#f2f4f7;color:#7a8492}.shift-area{display:block;color:var(--muted);font-size:10px;margin-top:3px}.people-list{display:flex;flex-wrap:wrap;gap:5px;margin-top:8px}.people-list span{background:#f3f6fa;border-radius:8px;padding:5px 7px;font-size:10px}.people-list .no-people{color:#9aa5b5;background:transparent;padding:0}.shift-actions{display:flex;flex-wrap:wrap;gap:7px;margin-top:10px;align-items:center}.my-badge{font-size:10px;font-weight:700;color:var(--green);background:var(--green-bg);padding:7px 9px;border-radius:9px}.exchange-details summary{cursor:pointer;color:var(--blue);font-size:10px;font-weight:700}.exchange-form{display:flex;gap:6px;margin-top:7px}.exchange-form select{max-width:180px;border:1px solid #d8e0eb;border-radius:9px;padding:7px;font-size:10px}.auth{min-height:100vh}.auth-shell{width:min(100%,480px);margin:0 auto;padding:28px 16px}.auth-card{background:#fff;border:1px solid var(--line);border-radius:22px;padding:28px;box-shadow:0 18px 45px rgba(18,33,58,.05)}.auth-card h1{font-size:30px;margin:13px 0 8px}.auth-card label{display:block;font-size:13px;font-weight:700;margin:16px 0 7px}.wide{width:100%;margin-top:16px}.info-box{background:#f2f6ff;border:1px solid #dce7ff;border-radius:13px;padding:14px;font-size:13px}.info-box span{display:block;color:#68778d;line-height:1.5;margin-top:5px}
@media(max-width:760px){.appbar{padding:20px 14px 15px}.appbar h1{font-size:25px}.content{padding:0 12px}.dashboard-hero{padding:22px 20px;border-radius:20px;align-items:stretch;flex-direction:column}.dashboard-hero h2{font-size:28px}.dashboard-all-btn{width:100%;text-align:center}.quick-grid{grid-template-columns:repeat(2,1fr);gap:10px}.quick-grid a{min-height:96px;padding:15px}.panel{padding:16px}.form-grid{grid-template-columns:1fr}.form-grid button{grid-column:auto}.preference-item{grid-template-columns:82px minmax(0,1fr);gap:10px;padding:12px}.preference-date b{font-size:13px}.preference-shift b{font-size:13px}.pref-actions{grid-column:1/-1;display:grid;grid-template-columns:1fr 1fr}.pref-actions .small-btn{width:100%}.notifications-toolbar{align-items:flex-start}.calendar-panel{padding:12px}.calendar-top{grid-template-columns:38px 1fr 38px;gap:6px}.calendar-top .light-btn{width:38px;height:38px}.today-btn{grid-column:1/-1;grid-row:2;text-align:center}.calendar-title{font-size:16px}.calendar-week,.calendar-grid{gap:4px}.cal-day{min-height:48px;padding:6px}.cal-day b{font-size:12px}.calendar-shift{grid-template-columns:1fr 58px;gap:8px;padding:12px}.shift-kind{grid-column:1/-1}.shift-content{grid-column:1/-1}.shift-time{grid-column:2;grid-row:2;align-self:start}.shift-actions{margin-top:9px}.exchange-form{flex-wrap:wrap}.exchange-form select{max-width:none;flex:1}.mobile-nav a{min-width:60px}.schedule-calendar{padding-bottom:8px}}
@media(min-width:761px){.schedule-calendar{max-width:980px}.schedule-calendar+.mobile-nav{display:none}}
.quick-grid a{position:relative}.quick-grid .quick-badge{position:absolute;top:12px;right:12px;display:grid;place-items:center;min-width:20px;height:20px;padding:0 5px;border-radius:10px;background:#e5484d;color:#fff;font-size:9px;font-weight:800}.dashboard-prefs{margin-top:0}.dashboard-notifications{margin-bottom:12px}.dashboard-notifications .notification-item{color:inherit}
/* PortoFranco v5 visual polish */
.dashboard-content{padding-bottom:24px}.notification-avatar{position:relative}.notification-avatar i{position:absolute;right:-5px;top:-5px;background:#e5484d;color:#fff;border-radius:10px;min-width:18px;height:18px;padding:0 4px;font-size:9px;font-style:normal;display:grid;place-items:center;border:2px solid #fff}.dashboard-hero{display:grid;grid-template-columns:58px minmax(0,1fr) auto;align-items:center;gap:16px;padding:22px 24px;border-radius:22px}.hero-icon{width:58px;height:58px;border-radius:17px;background:rgba(255,255,255,.18);display:grid;place-items:center;font-size:25px}.hero-copy>b{display:block;font-size:20px;line-height:1.2}.hero-copy>span{display:block;color:#dbe7ff;font-size:12px;margin-top:6px}.dashboard-all-btn{display:inline-flex;align-items:center;gap:8px;border:1px solid rgba(255,255,255,.9);background:transparent;color:#fff;padding:13px 17px;border-radius:14px;font-size:13px;white-space:nowrap}.dashboard-all-btn b{font-size:18px;font-weight:500}.dashboard-shift-card{position:relative;text-decoration:none;min-height:84px;padding:12px 16px}.dashboard-shift-card .date-box{width:58px;min-width:58px}.date-box span,.date-box em{display:block;font-style:normal}.date-box em{font-size:9px;color:#d45b5b;margin-top:4px;font-weight:700}.shift-main strong{display:block;color:var(--blue);font-size:14px;margin-top:5px}.card-arrow{font-size:24px;color:#7b8798;margin-left:4px}.dashboard-quick a{position:relative;min-height:132px;padding:17px}.dashboard-quick a b{font-size:27px}.dashboard-quick a span{font-size:13px}.dashboard-quick a i{position:absolute;right:15px;bottom:14px;font-style:normal;color:#8090a6;font-size:20px}.dashboard-quick a:nth-child(2) b{color:#f39a22}.dashboard-quick a:nth-child(3) b{color:#7658d8}.dashboard-quick a:nth-child(4) b{color:var(--blue)}.dashboard-block{margin-top:26px}.dashboard-block .section-head{margin-top:0}.dashboard-prefs{gap:8px}.dashboard-preference-item{grid-template-columns:140px minmax(0,1fr) auto;padding:14px 16px}.dashboard-notifications{gap:0;border:1px solid var(--line);border-radius:18px;overflow:hidden;box-shadow:var(--shadow)}.dashboard-notifications .notification-item{border:0;border-radius:0;box-shadow:none;border-bottom:1px solid var(--line)}.dashboard-notifications .notification-item:last-child{border-bottom:0}.dashboard-notifications .notification-item.unread{border-left:4px solid var(--blue)}
@media(max-width:760px){.dashboard-hero{grid-template-columns:46px minmax(0,1fr);gap:12px;padding:16px}.hero-icon{width:46px;height:46px;border-radius:14px;font-size:20px}.hero-copy>b{font-size:16px}.hero-copy>span{font-size:11px}.dashboard-all-btn{grid-column:1/-1;width:100%;justify-content:center}.dashboard-shift-card{padding:12px}.dashboard-shift-card .status{margin-left:auto}.dashboard-quick a{min-height:108px}.dashboard-preference-item{grid-template-columns:90px minmax(0,1fr);gap:10px}.dashboard-preference-item .pref-actions{grid-column:1/-1}.dashboard-preference-item .pref-actions{display:grid;grid-template-columns:1fr 1fr}.dashboard-preference-item .pref-actions .small-btn{width:100%}}

/* PortoFranco v6 — final dashboard layout corrections */
html, body { min-width: 0; }
a { text-decoration: none !important; }
.dashboard-content { padding-bottom: 140px !important; }
.dashboard-hero { overflow: hidden; min-height: 152px; }
.dashboard-hero .hero-copy { min-width: 0; background: transparent !important; color: #fff !important; padding: 0 !important; border: 0 !important; box-shadow: none !important; }
.dashboard-hero .hero-copy > b,
.dashboard-hero .hero-copy > span { background: transparent !important; color: inherit !important; }
.dashboard-hero .hero-copy > b { font-size: 20px !important; font-weight: 800; }
.dashboard-hero .hero-copy > span { color: #dbe7ff !important; }
.dashboard-all-btn { text-decoration: none !important; }
.dashboard-shift-card, .dashboard-shift-card * { text-decoration: none !important; }
.dashboard-shift-card .shift-main { min-width: 0; }
.dashboard-shift-card .shift-main b { color: var(--ink); font-size: 16px; }
.dashboard-shift-card .shift-main strong { color: var(--blue); font-size: 15px; }
.quick-grid a, .quick-grid a * { text-decoration: none !important; }
.dashboard-preference-item { display: grid !important; grid-template-columns: 160px minmax(180px, 1fr) auto !important; align-items: center !important; gap: 20px !important; min-width: 0; }
.dashboard-preference-item .preference-date,
.dashboard-preference-item .preference-shift { min-width: 0; }
.dashboard-preference-item .preference-date b,
.dashboard-preference-item .preference-shift b { white-space: nowrap; overflow: visible; }
.dashboard-preference-item .pref-actions { justify-self: end; white-space: nowrap; }
.dashboard-preference-item .small-btn { text-decoration: none !important; }
.section-head a { text-decoration: none !important; }
.mobile-nav a, .mobile-nav a * { text-decoration: none !important; }

@media (max-width: 760px) {
  .dashboard-content { padding-bottom: 150px !important; }
  .dashboard-hero { min-height: 0; }
  .dashboard-hero .hero-copy > b { font-size: 17px !important; }
  .dashboard-preference-item { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) !important; gap: 12px !important; }
  .dashboard-preference-item .pref-actions { grid-column: 1 / -1; width: 100%; justify-self: stretch; }
  .dashboard-preference-item .preference-date b,
  .dashboard-preference-item .preference-shift b { font-size: 14px !important; }
}

/* Participant preferences v7 — stable edit flow and no text overlap */
.preference-form{align-items:end}
.preference-form .secondary{min-height:46px}
.preference-cancel-edit{min-height:46px;background:#f3f6fa;color:#516176;border:1px solid var(--line)}
.preference-list .preference-item{grid-template-columns:minmax(130px,170px) minmax(150px,1fr) auto;min-width:0}
.preference-date,.preference-shift{min-width:0}
.preference-date b,.preference-shift b{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.preference-date span,.preference-shift span{white-space:nowrap}
.pref-actions{flex-wrap:nowrap}
@media(max-width:760px){
  .preference-form{grid-template-columns:1fr}
  .preference-form button,.preference-form .preference-cancel-edit{width:100%;grid-column:auto}
  .preference-list .preference-item{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px;padding:14px}
  .preference-date b,.preference-shift b{font-size:14px}
  .preference-date span,.preference-shift span{font-size:11px}
  .preference-list .pref-actions{grid-column:1/-1;width:100%;display:grid;grid-template-columns:1fr 1fr;gap:8px}
  .preference-list .pref-actions .small-btn{width:100%}
}

/* PortoFranco v8 — landing + admin visual system */
:root{--blue:#1769e8;--blue2:#2d64e8;--ink:#17243b;--muted:#71829b;--bg:#f5f8fc;--line:#e2eaf4;--shadow:0 10px 28px rgba(32,56,88,.055)}
body{background:linear-gradient(180deg,#f8fbff 0,#f4f7fb 100%)}
.landing{min-height:100vh}.landing-shell{min-height:100vh;max-width:1180px;margin:0 auto;padding:28px 28px 34px}.landing-header{display:flex;align-items:center;justify-content:space-between}.landing-main{display:grid;grid-template-columns:minmax(0,1.08fr) minmax(360px,.72fr);gap:64px;align-items:center;min-height:calc(100vh - 150px)}.landing-intro{padding:24px 0}.landing-intro .eyebrow{display:inline-block;color:#7a8aa2;font-size:11px;font-weight:800;letter-spacing:.12em;margin-bottom:16px}.landing-intro h1{max-width:700px;margin:0;font-size:56px;line-height:1.02;letter-spacing:-.055em}.landing-intro>p{max-width:690px;margin:22px 0 28px;color:#60718a;font-size:17px;line-height:1.65}.landing-points{display:grid;grid-template-columns:1fr 1fr;gap:12px;max-width:680px}.landing-points>div{display:flex;gap:12px;align-items:flex-start;background:rgba(255,255,255,.82);border:1px solid var(--line);border-radius:16px;padding:14px;box-shadow:var(--shadow)}.landing-points>div>span{width:34px;height:34px;border-radius:10px;background:#edf4ff;color:var(--blue);display:grid;place-items:center;font-size:18px;flex:0 0 auto}.landing-points b{display:block;font-size:13px}.landing-points small{display:block;color:var(--muted);font-size:10px;line-height:1.35;margin-top:4px}.landing-login{background:#fff;border:1px solid var(--line);border-radius:26px;padding:28px;box-shadow:0 22px 60px rgba(25,55,95,.09)}.login-card-head{display:flex;align-items:center;justify-content:space-between;color:#71829b}.login-card-head small,.login-card-head b{display:block;font-size:12px;line-height:1.2}.login-lock{width:42px;height:42px;border-radius:13px;background:#eef4ff;color:var(--blue);display:grid;place-items:center;font-weight:800}.landing-login h2{font-size:28px;letter-spacing:-.035em;margin:24px 0 8px}.landing-login>p{font-size:13px;color:var(--muted);line-height:1.5;margin:0 0 20px}.login-choice-card{display:grid;grid-template-columns:46px minmax(0,1fr) 20px;gap:12px;align-items:center;text-decoration:none;border:1px solid #d9e4f2;border-radius:16px;padding:14px;margin-top:10px;transition:.18s ease;background:#fff}.login-choice-card:hover{border-color:#8eb0ef;box-shadow:0 8px 24px rgba(37,99,235,.08);transform:translateY(-1px)}.login-choice-card.admin-choice{background:#fbfdff}.choice-icon{width:46px;height:46px;border-radius:13px;background:#eaf2ff;color:var(--blue);display:grid;place-items:center;font-size:20px}.admin-choice .choice-icon{background:#edf8f5;color:#15945b}.login-choice-card b{display:block;font-size:13px}.login-choice-card small{display:block;color:var(--muted);font-size:10px;margin-top:4px}.login-choice-card strong{color:var(--blue);font-size:18px}.login-note{margin-top:16px;padding:11px 12px;border-radius:12px;background:#f5f8fc;color:#71829b;font-size:10px;line-height:1.45}.landing-footer{text-align:center;color:#9aa7b8;font-size:11px;padding-top:10px}
.admin-page{padding:0}.admin-shell{min-height:100vh;display:grid;grid-template-columns:230px minmax(0,1fr)}.admin-sidebar{position:sticky;top:0;height:100vh;background:#fff;border-right:1px solid var(--line);padding:24px 16px;display:flex;flex-direction:column}.admin-brand{display:flex;align-items:center;gap:10px;text-decoration:none;padding:4px 8px 24px}.admin-brand .logo{width:38px;height:38px;border-radius:12px;background:#edf4ff;color:var(--blue);display:grid;place-items:center;font-weight:800}.admin-brand b,.admin-brand small{display:block}.admin-brand b{font-size:13px;letter-spacing:.02em}.admin-brand small{font-size:9px;color:var(--muted);margin-top:2px}.admin-nav{display:grid;gap:5px}.admin-nav a,.admin-logout{display:flex;align-items:center;gap:10px;padding:11px 12px;border-radius:11px;text-decoration:none;color:#6f7f95;font-size:12px;font-weight:600}.admin-nav a:hover,.admin-nav a.active{background:#edf4ff;color:var(--blue)}.admin-logout{margin-top:auto}.admin-content{min-width:0;max-width:1180px;width:100%;margin:0 auto;padding:34px 34px 48px}.admin-header{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;margin-bottom:24px}.admin-header small{font-size:11px;color:var(--muted);font-weight:700}.admin-header h1{font-size:32px;letter-spacing:-.04em;margin:5px 0 6px}.admin-header p{margin:0;color:var(--muted);font-size:13px}.admin-user{display:flex;align-items:center;gap:9px;font-size:12px;white-space:nowrap}.admin-user .avatar{width:42px;height:42px}.admin-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:18px}.admin-stats>div{background:#fff;border:1px solid var(--line);border-radius:17px;padding:17px 18px;box-shadow:var(--shadow)}.admin-stats span,.admin-stats small{display:block;color:var(--muted);font-size:10px}.admin-stats b{display:block;font-size:28px;letter-spacing:-.04em;margin:6px 0 2px}.admin-section{background:#fff;border:1px solid var(--line);border-radius:19px;padding:20px;margin:14px 0;box-shadow:var(--shadow)}.admin-section-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:15px}.admin-section-head small{display:block;color:var(--muted);font-size:10px;font-weight:700}.admin-section-head h2{margin:3px 0 0;font-size:18px;letter-spacing:-.025em}.count-pill{min-width:30px;height:30px;padding:0 8px;border-radius:15px;background:#edf4ff;color:var(--blue);display:grid;place-items:center;font-size:11px;font-weight:800}.admin-action-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.admin-action-card{position:relative;display:flex;flex-direction:column;min-height:142px;padding:16px;border:1px solid var(--line);border-radius:16px;background:#fff;text-decoration:none;color:var(--ink);text-align:left}.admin-action-card:hover{border-color:#a8c2f4;box-shadow:0 8px 24px rgba(37,99,235,.07)}.admin-action-card>span,.admin-action-card button>span{width:34px;height:34px;border-radius:10px;background:#edf4ff;color:var(--blue);display:grid;place-items:center;font-size:17px;margin-bottom:17px}.admin-action-card b,.admin-action-card button b{font-size:12px}.admin-action-card small,.admin-action-card button small{color:var(--muted);font-size:10px;line-height:1.4;margin-top:5px}.admin-action-card i,.admin-action-card button i{position:absolute;right:14px;bottom:13px;color:var(--blue);font-style:normal}.admin-action-card button{all:unset;display:block;position:relative;width:100%;height:100%;cursor:pointer}.admin-action-card button>span{display:grid}.admin-form-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.admin-form-grid>div{min-width:0}.admin-form-grid button{grid-column:1/-1}.admin-form-grid label{display:block;font-size:10px;font-weight:800;margin-bottom:6px}.admin-form-grid input,.admin-form-grid select{width:100%;min-width:0;border:1px solid #d7e1ee;border-radius:11px;padding:11px 12px;background:#fff;outline:none}.admin-form-grid input:focus,.admin-form-grid select:focus{border-color:#91b2f0;box-shadow:0 0 0 3px #edf3ff}.admin-form-grid.compact{grid-template-columns:1fr 1fr}.admin-form-grid.compact button{grid-column:1/-1}.table-toolbar{padding:13px 0;border-top:1px solid var(--line);margin-top:18px}.table-toolbar b{font-size:12px}.table-toolbar span{display:block;color:var(--muted);font-size:10px;margin-top:3px}.admin-table-wrap{overflow:auto;border:1px solid var(--line);border-radius:14px}.admin-table-wrap table{width:100%;border-collapse:collapse;min-width:680px}.admin-table-wrap th,.admin-table-wrap td{padding:11px 12px;border-bottom:1px solid var(--line);text-align:left;font-size:11px}.admin-table-wrap th{background:#fbfcfe;color:#7a8aa0;font-size:9px;text-transform:uppercase;letter-spacing:.06em}.admin-table-wrap tr:last-child td{border-bottom:0}.admin-status{display:inline-flex;padding:5px 8px;border-radius:8px;font-size:9px;font-weight:800}.admin-status.ok{background:#eaf8f0;color:#15945b}.admin-status.off{background:#f1f3f6;color:#7a8492}.table-btn{border:1px solid;border-radius:8px;background:#fff;padding:6px 9px;font-size:9px;font-weight:800;cursor:pointer}.danger-outline{border-color:#f0b9bd;color:#d33d45}.blue-outline{border-color:#a9c4f6;color:var(--blue)}.admin-two-col{display:grid;grid-template-columns:1fr 1fr;gap:14px}.admin-two-col .admin-section{margin:0}.import-box{display:grid;gap:10px}.import-box input[type=file]{width:100%;font-size:10px;border:1px solid var(--line);border-radius:10px;padding:9px}.admin-about{display:flex;gap:15px;align-items:flex-start;background:#f0f5ff;border:1px solid #dce8fb;border-radius:19px;padding:20px;margin-top:14px}.admin-about .logo{width:42px;height:42px;border-radius:13px;background:#fff;color:var(--blue);display:grid;place-items:center;font-weight:800;flex:0 0 auto}.admin-about small{color:var(--muted);font-size:10px;font-weight:700}.admin-about h2{margin:5px 0;font-size:19px}.admin-about p{margin:0;color:#64748b;font-size:11px;line-height:1.5}.admin-footer{text-align:center;color:#9aa7b8;font-size:10px;padding:22px 0 0}
@media(max-width:900px){.landing-main{gap:35px}.landing-intro h1{font-size:46px}.admin-shell{grid-template-columns:190px 1fr}.admin-action-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:760px){.landing-shell{padding:18px 14px}.landing-main{grid-template-columns:1fr;min-height:auto;gap:12px;padding:30px 0}.landing-intro{padding:0}.landing-intro h1{font-size:38px}.landing-intro>p{font-size:14px;margin:16px 0 20px}.landing-points{grid-template-columns:1fr}.landing-login{padding:20px;border-radius:20px}.landing-login h2{font-size:24px}.admin-shell{display:block}.admin-sidebar{position:sticky;z-index:20;top:0;height:auto;border-right:0;border-bottom:1px solid var(--line);padding:10px 12px;flex-direction:row;align-items:center}.admin-brand{padding:0;margin-right:auto}.admin-brand .logo{width:34px;height:34px}.admin-nav{display:flex;overflow:auto;gap:4px}.admin-nav a{padding:9px}.admin-nav a span{display:none}.admin-logout{margin:0;padding:9px}.admin-logout span{display:none}.admin-content{padding:20px 12px 34px}.admin-header h1{font-size:26px}.admin-user{display:none}.admin-stats{grid-template-columns:1fr 1fr}.admin-stats>div:last-child{grid-column:1/-1}.admin-action-grid{grid-template-columns:1fr 1fr}.admin-section{padding:15px}.admin-form-grid,.admin-form-grid.compact{grid-template-columns:1fr}.admin-form-grid button,.admin-form-grid.compact button{grid-column:auto}.admin-two-col{grid-template-columns:1fr}.admin-two-col .admin-section{margin:0}.admin-about{padding:16px}.admin-about h2{font-size:16px}}

/* PortoFranco v8 — participant desktop sidebar matching the approved light mockup */
.user-sidebar{position:fixed;z-index:40;left:0;top:0;bottom:0;width:220px;background:#fff;border-right:1px solid var(--line);padding:24px 14px;display:flex;flex-direction:column}.user-sidebar .brand{padding:4px 8px 24px}.user-sidebar .brand .logo{width:38px;height:38px}.user-sidebar nav{display:grid;gap:4px}.user-sidebar nav a{display:flex;align-items:center;gap:10px;padding:11px 12px;border-radius:11px;text-decoration:none;color:#6f7f95;font-size:12px;font-weight:600}.user-sidebar nav a:hover,.user-sidebar nav a.active{background:#edf4ff;color:var(--blue)}.user-sidebar .side-logout{margin-top:auto;display:flex;align-items:center;gap:10px;padding:11px 12px;color:#6f7f95;font-size:12px;font-weight:600;text-decoration:none;border-radius:11px}.user-sidebar .side-logout:hover{background:#f5f8fc;color:var(--blue)}.user-sidebar .side-badge{margin-left:auto;min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:#e5484d;color:#fff;font-size:9px;display:grid;place-items:center}.app-page{padding-left:220px}.app-page .appbar,.app-page .content{max-width:980px}.mobile-nav{display:none}.schedule-calendar{max-width:980px}.user-sidebar .side-brand{display:flex;align-items:center;gap:10px;text-decoration:none}.user-sidebar .side-brand b,.user-sidebar .side-brand small{display:block}.user-sidebar .side-brand b{font-size:12px}.user-sidebar .side-brand small{font-size:9px;color:var(--muted);margin-top:2px}
@media(max-width:760px){.user-sidebar{display:none}.app-page{padding-left:0}.mobile-nav{display:flex}.app-page .appbar,.app-page .content{max-width:none}.dashboard-content{padding-bottom:150px!important}}

/* Final brand + language polish */
.brand,.side-brand,.admin-brand{display:flex;align-items:center;gap:9px;text-decoration:none}
.logo-mark{width:38px;height:44px;display:block;flex:0 0 auto}
.brand>span,.side-brand>span,.admin-brand>span{display:flex;flex-direction:column;min-width:0}
.brand small,.side-brand small,.admin-brand small{font-size:8px;line-height:1.1;color:#6f7f95;font-weight:700;letter-spacing:.02em;white-space:nowrap}
.brand b,.side-brand b,.admin-brand b{font-size:15px;line-height:1.05;letter-spacing:.01em;color:var(--ink);white-space:nowrap}
.lang{display:flex;align-items:center;gap:4px;flex:0 0 auto}
.lang a{min-width:28px;height:28px;padding:0 6px;border:1px solid #dce5f2;border-radius:7px;background:#fff;color:#64748b;text-decoration:none;font-size:10px;font-weight:800;display:grid;place-items:center;line-height:1}
.lang a:hover,.lang a.on{border-color:#b8d0ff;background:#edf4ff;color:var(--blue)}
.landing-header .lang{margin-left:auto}
.side-brand-row,.admin-brand-row{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;padding:4px 8px 24px}
.side-brand-row .side-brand,.admin-brand-row .admin-brand{padding:0}
.user-sidebar .side-brand-row .logo-mark{width:34px;height:39px}
.admin-sidebar .admin-brand-row .logo-mark{width:34px;height:39px}
.auth-brand .logo-mark{width:40px;height:46px}
.auth-brand{justify-content:flex-start}
.auth-top .lang{margin-left:auto}
.appbar-actions{display:flex;align-items:center;gap:10px}
.admin-about .about-logo{width:42px;height:48px;flex:0 0 auto;background:transparent;border-radius:0}
@media(max-width:760px){
  .side-brand-row,.admin-brand-row{padding:0;margin-right:8px;align-items:center}
  .side-brand-row .lang,.admin-brand-row .lang{display:none}
  .admin-sidebar .admin-brand-row{margin-right:auto}
  .brand b,.side-brand b,.admin-brand b{font-size:13px}
  .brand small,.side-brand small,.admin-brand small{font-size:7px}
  .logo-mark{width:34px;height:39px}
}
.exchange-inbox{margin-top:14px}
.exchange-inbox .notification-item{align-items:center}
.exchange-inbox .pref-actions{flex:0 0 auto}
@media(max-width:760px){.exchange-inbox .notification-item{align-items:flex-start;flex-wrap:wrap}.exchange-inbox .pref-actions{width:100%;padding-left:21px}}


/* PortoFranco v10 — approved light landing mockup: oversized mark + compact login card */
.landing-v10{max-width:1450px;padding:28px 34px 24px}
.landing-v10 .landing-header{min-height:405px;align-items:flex-start}
.landing-brand-large{display:flex;flex-direction:column;align-items:flex-start;gap:12px;text-decoration:none;color:var(--ink)}
.landing-logo-large{width:350px;height:394px;display:block;object-fit:contain;object-position:top left}
.landing-wordmark{display:flex;align-items:baseline;gap:2px;margin-left:0;white-space:nowrap}
.landing-wordmark small{font-size:16px;line-height:1;color:#1c2b45;font-weight:500;letter-spacing:.01em}
.landing-wordmark b{font-size:17px;line-height:1;color:#17243b;font-weight:800;letter-spacing:.01em}
.landing-lang-wrap{display:flex;align-items:center;gap:12px;padding-top:8px}
.landing-code{font-size:15px;color:#17243b;letter-spacing:.01em}
.landing-v10 .lang{gap:4px}
.landing-v10 .lang a{min-width:27px;height:26px;font-size:9px;border-radius:7px}
.landing-v10 .landing-main{grid-template-columns:minmax(0,1fr) 440px;gap:68px;align-items:start;min-height:auto;padding:0 0 34px}
.landing-v10 .landing-intro{padding:34px 0 0;max-width:790px}
.landing-v10 .landing-intro .eyebrow{font-size:12px;margin-bottom:20px;letter-spacing:.13em}
.landing-v10 .landing-intro h1{max-width:760px;font-size:66px;line-height:1.02;letter-spacing:-.058em}
.landing-v10 .landing-intro>p{max-width:760px;margin:26px 0 30px;font-size:19px;line-height:1.55;color:#637692}
.landing-v10 .landing-points{max-width:770px;gap:12px}
.landing-v10 .landing-points>div{min-height:76px;padding:14px 16px;border-radius:17px;align-items:center;background:#fff}
.landing-v10 .landing-points>div>span{width:38px;height:38px;border-radius:11px;font-size:18px}
.landing-v10 .landing-points b{font-size:14px}
.landing-v10 .landing-points small{font-size:11px;margin-top:5px}
.landing-v10 .landing-login{width:440px;max-width:100%;margin-top:0;padding:30px 30px 28px;border-radius:27px;box-shadow:0 22px 60px rgba(25,55,95,.09)}
.landing-v10 .login-card-head{margin-bottom:4px}
.landing-v10 .login-card-head small,.landing-v10 .login-card-head b{font-size:13px}
.landing-v10 .login-lock{width:45px;height:45px;border-radius:14px}
.landing-v10 .landing-login h2{font-size:30px;margin:28px 0 9px;line-height:1.12}
.landing-v10 .landing-login>p{font-size:14px;line-height:1.55;margin-bottom:22px}
.landing-v10 .login-choice-card{grid-template-columns:48px minmax(0,1fr) 20px;gap:13px;padding:16px 15px;margin-top:12px;border-radius:17px;min-height:88px}
.landing-v10 .choice-icon{width:48px;height:48px;border-radius:14px}
.landing-v10 .login-choice-card b{font-size:14px}
.landing-v10 .login-choice-card small{font-size:11px;line-height:1.35}
.landing-v10 .login-note{margin-top:17px;padding:13px 14px;font-size:11px;line-height:1.45}
.landing-v10 .landing-footer{padding-top:4px;font-size:12px}
@media(max-width:1100px){
  .landing-v10{padding-left:24px;padding-right:24px}
  .landing-v10 .landing-header{min-height:345px}
  .landing-logo-large{width:285px;height:320px}
  .landing-wordmark small{font-size:13px}.landing-wordmark b{font-size:14px}
  .landing-v10 .landing-main{grid-template-columns:minmax(0,1fr) 390px;gap:42px}
  .landing-v10 .landing-intro h1{font-size:54px}
  .landing-v10 .landing-intro>p{font-size:16px}
  .landing-v10 .landing-login{width:390px}
}
@media(max-width:800px){
  .landing-v10{padding:18px 16px 24px}
  .landing-v10 .landing-header{min-height:auto;display:flex;align-items:flex-start;margin-bottom:28px}
  .landing-logo-large{width:155px;height:175px}
  .landing-brand-large{gap:8px}
  .landing-wordmark{display:block;white-space:normal;line-height:1.05}
  .landing-wordmark small,.landing-wordmark b{display:block;font-size:10px}
  .landing-lang-wrap{gap:7px;padding-top:3px}
  .landing-code{display:none}
  .landing-v10 .landing-main{grid-template-columns:1fr;gap:22px;padding-bottom:22px}
  .landing-v10 .landing-intro{padding-top:0}
  .landing-v10 .landing-intro .eyebrow{font-size:9px;margin-bottom:13px}
  .landing-v10 .landing-intro h1{font-size:40px;line-height:1.03}
  .landing-v10 .landing-intro>p{font-size:14px;line-height:1.5;margin:17px 0 20px}
  .landing-v10 .landing-points{grid-template-columns:1fr;gap:9px}
  .landing-v10 .landing-points>div{min-height:68px;padding:12px 13px}
  .landing-v10 .landing-points b{font-size:12px}.landing-v10 .landing-points small{font-size:10px}
  .landing-v10 .landing-login{width:100%;padding:22px 18px;border-radius:22px}
  .landing-v10 .landing-login h2{font-size:25px;margin-top:22px}
  .landing-v10 .landing-login>p{font-size:12px}
}
@media(max-width:420px){
  .landing-logo-large{width:128px;height:145px}
  .landing-v10 .landing-intro h1{font-size:34px}
  .landing-v10 .landing-login h2{font-size:23px}
}

/* PortoFranco v10 — stability guards for long data and form fields */
input,select,button,textarea{max-width:100%}
.big-input{min-height:52px;line-height:1.2}
.preference-item{grid-template-columns:145px minmax(190px,1fr) auto;min-width:0}
.preference-date,.preference-shift,.pref-actions{min-width:0}
.preference-date b,.preference-shift b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.preference-date span,.preference-shift span{white-space:nowrap}
.pref-actions{flex-wrap:nowrap}
@media(max-width:900px){
  .preference-item{grid-template-columns:130px minmax(150px,1fr) auto;gap:12px}
}
@media(max-width:620px){
  .preference-item{grid-template-columns:1fr 1fr;gap:10px}
  .preference-item .pref-actions{grid-column:1/-1;width:100%;display:grid;grid-template-columns:1fr 1fr}
  .preference-item .pref-actions form,.preference-item .pref-actions .small-btn{width:100%}
}
.auth-card{overflow:hidden}
.auth-card form{display:grid;gap:9px}
.auth-card form label{margin-top:4px}
.auth-card .wide{width:100%;min-height:48px}
.admin-table-wrap{max-width:100%;overflow-x:auto}
.admin-table-wrap table{width:100%}
.login-choice-card span:nth-child(2){min-width:0}
.login-choice-card b,.login-choice-card small{overflow-wrap:anywhere}


/* PortoFranco v11 — approved light visual system + approved shield logo.
   This layer changes presentation only; application actions and data flow remain unchanged. */
:root{
  --blue:#1769e8;--blue-dark:#0f55c9;--ink:#16233b;--muted:#71829b;
  --bg:#f6f9fd;--card:#fff;--line:#e1e9f3;--soft:#edf4ff;
  --green:#168d59;--green-bg:#eaf8f0;--red:#d83d46;--red-bg:#fff0f1;
  --shadow:0 12px 34px rgba(24,51,84,.055);
}
body{background:#f6f9fd;color:var(--ink)}
button,input,select,textarea{font-family:inherit}
.brand,.side-brand,.admin-brand{gap:10px}
.logo-mark{width:38px;height:48px;object-fit:contain;object-position:center;display:block}
.side-brand-row,.admin-brand-row{padding:2px 8px 24px}
.side-brand small,.admin-brand small,.brand small{font-size:8px;letter-spacing:.055em;color:#7c8ca3}
.side-brand b,.admin-brand b,.brand b{font-size:14px;letter-spacing:.01em}
.lang a{min-width:30px;height:28px;border-radius:8px;font-size:10px}
.lang a.on{background:#edf4ff;border-color:#b7cffc;color:var(--blue)}
.lang a:hover{background:#f4f8ff}

/* Landing */
.landing-v10{max-width:1280px;padding:30px 34px 24px}
.landing-v10 .landing-header{min-height:auto;align-items:flex-start}
.landing-brand-large{display:flex;flex-direction:row;align-items:center;gap:12px;text-decoration:none}
.landing-logo-large{width:54px;height:64px;object-fit:contain}
.landing-wordmark{display:flex;flex-direction:column;gap:2px;margin:0;white-space:nowrap}
.landing-wordmark small{font-size:11px;line-height:1.05;font-weight:600;color:#6d7f99;letter-spacing:.025em}
.landing-wordmark b{font-size:18px;line-height:1;font-weight:800;color:var(--ink)}
.landing-lang-wrap{padding-top:4px}
.landing-v10 .landing-main{grid-template-columns:minmax(0,1fr) 430px;gap:72px;align-items:center;min-height:calc(100vh - 180px);padding:35px 0 28px}
.landing-v10 .landing-intro{padding:0;max-width:760px}
.landing-v10 .landing-intro .eyebrow{font-size:11px;margin-bottom:18px;color:#7a8ca5}
.landing-v10 .landing-intro h1{font-size:60px;line-height:1.02;letter-spacing:-.055em;max-width:720px}
.landing-v10 .landing-intro>p{font-size:17px;line-height:1.58;margin:22px 0 28px;max-width:690px}
.landing-v10 .landing-points{max-width:730px;gap:12px}
.landing-v10 .landing-points>div{min-height:72px;border-radius:16px;padding:13px 15px}
.landing-v10 .landing-points>div>span{width:36px;height:36px;border-radius:11px}
.landing-v10 .landing-login{width:430px;padding:29px 28px 27px;border-radius:26px}
.landing-v10 .landing-login h2{font-size:29px;margin:24px 0 8px}
.landing-v10 .landing-login>p{font-size:13px;margin-bottom:20px}
.landing-v10 .login-choice-card{min-height:84px;padding:14px;border-radius:16px}
.landing-v10 .login-note{font-size:10px}
.landing-v10 .landing-footer{font-size:11px}
@media(max-width:900px){
  .landing-v10 .landing-main{grid-template-columns:1fr 380px;gap:38px}
  .landing-v10 .landing-intro h1{font-size:48px}
}
@media(max-width:760px){
  .landing-v10{padding:18px 14px 24px}
  .landing-v10 .landing-main{grid-template-columns:1fr;gap:24px;min-height:auto;padding:35px 0 24px}
  .landing-brand-large{gap:9px}
  .landing-logo-large{width:44px;height:52px}
  .landing-wordmark small{font-size:8px}.landing-wordmark b{font-size:14px}
  .landing-v10 .landing-intro h1{font-size:38px}
  .landing-v10 .landing-intro>p{font-size:14px}
  .landing-v10 .landing-login{width:100%;padding:22px 18px}
}

/* Auth */
.auth{background:#f6f9fd}
.auth-shell{width:min(100%,520px);padding:30px 18px 40px}
.auth-brand{margin-bottom:18px}
.auth-brand .logo-mark{width:42px;height:50px}
.auth-card{border:1px solid var(--line);border-radius:24px;padding:30px;box-shadow:0 20px 55px rgba(25,55,95,.075)}
.auth-card h1{font-size:31px;line-height:1.08;letter-spacing:-.04em}
.auth-card .eyebrow{color:#7b8ca5;font-weight:800;letter-spacing:.08em}
.auth-card .big-input{min-height:52px}
.auth-card .wide{min-height:50px;border-radius:12px}
@media(max-width:520px){.auth-card{padding:22px;border-radius:20px}.auth-card h1{font-size:27px}}

/* Participant cabinet */
.user-sidebar{width:214px;padding:22px 13px;background:#fff;border-right:1px solid var(--line)}
.user-sidebar nav a,.user-sidebar .side-logout{border-radius:10px;font-size:12px;padding:10px 11px}
.user-sidebar nav a.active{background:#edf4ff;color:var(--blue)}
.app-page{padding-left:214px}
.app-page .appbar,.app-page .content{max-width:1040px}
.appbar{padding:28px 24px 20px}
.appbar h1{font-size:28px}
.content{padding:0 24px}
.dashboard-hero{border-radius:20px;padding:22px 24px;box-shadow:0 14px 32px rgba(37,99,235,.10)}
.dashboard-hero .hero-icon{width:54px;height:54px;border-radius:15px}
.dashboard-hero .hero-copy>b{font-size:19px}
.shift-card,.quick-grid a,.panel,.calendar-panel,.calendar-shift,.notification-item{box-shadow:var(--shadow)}
.shift-card{border-radius:16px}
.quick-grid a{border-radius:16px}
.panel{border-radius:18px}
@media(max-width:760px){.app-page{padding-left:0}.appbar{padding:20px 14px 15px}.content{padding:0 12px}}

/* Admin */
.admin-shell{grid-template-columns:220px minmax(0,1fr);background:#f6f9fd}
.admin-sidebar{padding:22px 14px;background:#fff;border-right:1px solid var(--line)}
.admin-content{max-width:1180px;padding:34px 32px 48px}
.admin-header h1{font-size:31px}
.admin-stats{grid-template-columns:repeat(3,1fr);gap:14px}
.admin-stats>div,.admin-section{box-shadow:var(--shadow);border-radius:18px}
.admin-section{padding:20px}
.admin-action-grid{grid-template-columns:repeat(2,1fr);gap:12px}
.admin-action-card{min-height:140px;border-radius:16px}
.admin-table-wrap{border-radius:14px}
.admin-table-wrap th,.admin-table-wrap td{padding:11px 12px}
.admin-about{background:#eef5ff;border-color:#dbe8fb;border-radius:18px}
@media(max-width:900px){.admin-shell{grid-template-columns:190px 1fr}.admin-content{padding:24px 20px 40px}}
@media(max-width:760px){
  .admin-shell{display:block}.admin-sidebar{position:sticky;top:0;height:auto;border-right:0;border-bottom:1px solid var(--line);z-index:20}
  .admin-content{padding:20px 12px 34px}.admin-action-grid{grid-template-columns:1fr 1fr}.admin-stats{grid-template-columns:1fr 1fr}
}

/* Data safety / no overlap */
*{min-width:0}
.panel input,.panel select,.admin-form-grid input,.admin-form-grid select{min-width:0}
.preference-item,.dashboard-preference-item{min-width:0}
.preference-date,.preference-shift,.pref-actions{min-width:0}
.preference-date b,.preference-shift b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.admin-table-wrap{overflow-x:auto}
@media(max-width:620px){
  .preference-item,.dashboard-preference-item{grid-template-columns:1fr 1fr!important;gap:10px!important}
  .preference-item .pref-actions,.dashboard-preference-item .pref-actions{grid-column:1/-1;width:100%;display:grid;grid-template-columns:1fr 1fr}
  .preference-item .pref-actions form,.preference-item .pref-actions .small-btn,.dashboard-preference-item .pref-actions form,.dashboard-preference-item .pref-actions .small-btn{width:100%}
}

/* PortoFranco v12 — final stability/visual pass.  Keep this layer last so the
   approved layout wins over earlier experimental v10/v11 rules without
   rewriting the working application styles. */
.landing-v10{
  max-width:1280px;
  min-height:100vh;
  padding:22px 28px 18px;
}
.landing-v10 .landing-header{
  min-height:64px;
  align-items:center;
}
.landing-v10 .landing-brand-large{
  flex-direction:row;
  align-items:center;
  gap:10px;
}
.landing-v10 .landing-logo-large{
  width:44px;
  height:52px;
  object-fit:contain;
}
.landing-v10 .landing-wordmark{
  gap:2px;
}
.landing-v10 .landing-wordmark small{
  font-size:9px;
  color:#71829b;
  font-weight:700;
  letter-spacing:.02em;
}
.landing-v10 .landing-wordmark b{
  font-size:15px;
  color:#16233b;
  letter-spacing:.01em;
}
.landing-v10 .landing-main{
  grid-template-columns:minmax(0,1fr) 390px;
  gap:54px;
  align-items:center;
  min-height:calc(100vh - 120px);
  padding:20px 0 22px;
}
.landing-v10 .landing-intro{
  max-width:720px;
  padding:0;
}
.landing-v10 .landing-intro .eyebrow{
  font-size:10px;
  margin-bottom:14px;
  letter-spacing:.07em;
}
.landing-v10 .landing-intro h1{
  max-width:680px;
  font-size:54px;
  line-height:1.02;
  letter-spacing:-.052em;
}
.landing-v10 .landing-intro>p{
  max-width:620px;
  margin:20px 0 24px;
  font-size:14px;
  line-height:1.55;
}
.landing-v10 .landing-points{
  max-width:690px;
  gap:10px;
}
.landing-v10 .landing-points>div{
  min-height:66px;
  padding:11px 12px;
  border-radius:14px;
  gap:10px;
}
.landing-v10 .landing-points>div>span{
  width:34px;
  height:34px;
  border-radius:10px;
  font-size:16px;
}
.landing-v10 .landing-points b{font-size:12px}
.landing-v10 .landing-points small{font-size:9px;margin-top:3px}
.landing-v10 .landing-login{
  width:390px;
  padding:24px 22px 21px;
  border-radius:22px;
  box-shadow:0 18px 50px rgba(25,55,95,.075);
}
.landing-v10 .login-card-head small,
.landing-v10 .login-card-head b{font-size:10px}
.landing-v10 .login-lock{width:36px;height:36px;border-radius:11px}
.landing-v10 .landing-login h2{
  font-size:25px;
  margin:21px 0 7px;
}
.landing-v10 .landing-login>p{
  font-size:11px;
  margin-bottom:17px;
}
.landing-v10 .login-choice-card{
  grid-template-columns:40px minmax(0,1fr) 18px;
  gap:10px;
  padding:11px 12px;
  margin-top:9px;
  border-radius:13px;
  min-height:70px;
}
.landing-v10 .choice-icon{width:40px;height:40px;border-radius:11px;font-size:17px}
.landing-v10 .login-choice-card b{font-size:11px}
.landing-v10 .login-choice-card small{font-size:9px;margin-top:3px}
.landing-v10 .login-choice-card strong{font-size:16px}
.landing-v10 .login-note{margin-top:12px;padding:10px 11px;font-size:9px}
.landing-v10 .landing-footer{font-size:9px;padding-top:0}

/* Keep long names, dates and actions inside cards at every viewport. */
.dashboard-shift-card,.shift-card,.calendar-shift,.notification-item,.preference-item{min-width:0}
.shift-main,.shift-content,.notification-body,.preference-date,.preference-shift{min-width:0}
.shift-main b,.shift-main strong,.shift-main span,.shift-content b,.shift-content small,
.notification-body b,.notification-body p,.preference-date b,.preference-shift b{overflow-wrap:anywhere}

@media(max-width:980px){
  .landing-v10{padding-left:20px;padding-right:20px}
  .landing-v10 .landing-main{grid-template-columns:minmax(0,1fr) 350px;gap:30px}
  .landing-v10 .landing-intro h1{font-size:46px}
  .landing-v10 .landing-login{width:350px}
}
@media(max-width:760px){
  .landing-v10{padding:16px 14px 22px}
  .landing-v10 .landing-header{min-height:52px}
  .landing-v10 .landing-main{grid-template-columns:1fr;gap:22px;min-height:auto;padding:28px 0 18px}
  .landing-v10 .landing-intro h1{font-size:38px}
  .landing-v10 .landing-intro>p{font-size:13px;margin:16px 0 20px}
  .landing-v10 .landing-points{grid-template-columns:1fr;gap:8px}
  .landing-v10 .landing-login{width:100%;padding:21px 17px;border-radius:19px}
}
@media(max-width:390px){
  .landing-v10 .landing-brand-large{gap:7px}
  .landing-v10 .landing-logo-large{width:38px;height:46px}
  .landing-v10 .landing-wordmark small{font-size:8px}
  .landing-v10 .landing-wordmark b{font-size:13px}
  .landing-v10 .landing-intro h1{font-size:34px}
}


/* PortoFranco v13 — participant dashboard cleanup + PIN back action */
.user-sidebar .side-brand-row{justify-content:flex-start}
.dashboard-content .appbar-actions{display:flex;align-items:center;gap:10px}
.auth-divider{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:12px;margin:4px 0 0;color:#7b8ca5;font-size:13px;font-weight:600}
.auth-divider span{height:1px;background:#dfe6ef}
.auth-divider b{font-weight:600}
.back-form{margin:0!important;display:block!important}
.auth-card .back-button{appearance:none;-webkit-appearance:none;width:100%!important;min-height:50px!important;height:50px!important;margin:0!important;border:1px solid #8eb4ff!important;border-radius:12px!important;background:#fff!important;color:var(--blue)!important;padding:0 16px!important;font-weight:700!important;font-size:14px!important;line-height:1!important;cursor:pointer;display:flex!important;align-items:center!important;justify-content:center!important;gap:9px!important;box-shadow:none!important;text-decoration:none!important;transition:background .15s,border-color .15s,box-shadow .15s,transform .15s}
.auth-card .back-button span{font-size:17px;line-height:1}
.auth-card .back-button:hover{background:#f5f9ff!important;border-color:#6f9ff7!important;box-shadow:0 5px 16px rgba(37,99,235,.07)!important}.auth-card .back-button:active{transform:translateY(1px)}
.auth-card .back-button:focus-visible{outline:none;box-shadow:0 0 0 3px #eaf1ff}
@media(max-width:520px){.auth-divider{margin-top:2px}.auth-card .back-button{min-height:46px}}

/* Contributions module — v15, follows approved PortoFranco light design */
.year-pill{display:inline-flex;align-items:center;justify-content:center;min-width:64px;height:38px;padding:0 12px;border:1px solid var(--line);border-radius:11px;background:#fff;color:var(--blue);font-size:12px;font-weight:800;box-shadow:var(--shadow)}
.contributions-page{padding-bottom:140px}.contribution-overview{display:grid;grid-template-columns:1.45fr .8fr;gap:14px;margin-bottom:14px}.contribution-overview>div{background:#fff;border:1px solid var(--line);border-radius:18px;box-shadow:var(--shadow);padding:20px}.contribution-overview small{display:block;color:var(--muted);font-size:11px;font-weight:700}.contrib-counts{display:flex;gap:20px;align-items:flex-end;margin-top:12px;flex-wrap:wrap}.contrib-counts b{font-size:28px;color:#15945b;line-height:1}.contrib-counts b span{font-size:10px;color:#6f7f95;font-weight:700;margin-left:4px}.contrib-counts .pending-count{color:#d99012}.contrib-counts .unpaid-count{color:#d33d45}.org-paid-count b{display:block;color:var(--blue);font-size:32px;line-height:1.1;margin-top:12px}.org-paid-count span{display:block;color:var(--muted);font-size:10px;margin-top:6px}.contribution-table-panel{padding:18px}.contribution-list{display:grid;border:1px solid var(--line);border-radius:14px;overflow:hidden}.contribution-row{display:grid;grid-template-columns:1.15fr 1.3fr auto;align-items:center;gap:14px;padding:12px 14px;border-bottom:1px solid var(--line);background:#fff}.contribution-row:last-child{border-bottom:0}.contribution-month b{font-size:12px}.contribution-status small{display:block;color:var(--muted);font-size:10px;margin-top:4px}.contrib-badge{display:inline-flex;padding:6px 9px;border-radius:9px;font-size:10px;font-weight:800}.contrib-badge.confirmed{background:#eaf8f0;color:#15945b}.contrib-badge.pending{background:#fff4dd;color:#b66c00}.contrib-badge.unpaid,.contrib-badge.rejected{background:#fdebed;color:#d33d45}.primary-link{background:var(--blue);color:#fff}.contribution-form-panel{margin-top:14px}.contribution-form{display:grid;grid-template-columns:1fr 1fr;gap:14px}.contribution-form>div{min-width:0}.contribution-form label{display:block;font-size:11px;font-weight:800;margin-bottom:7px}.contribution-form input,.contribution-form select{width:100%;border:1px solid #d8e0eb;border-radius:12px;padding:12px 13px;background:#fff;color:var(--ink);outline:none}.payment-methods,.proof-field{grid-column:1/-1}.method-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.method-card{margin:0!important;display:flex!important;align-items:center;gap:12px;padding:14px;border:1px solid var(--line);border-radius:14px;background:#fff;cursor:pointer}.method-card:has(input:checked){border-color:#8eb4ff;background:#f4f8ff;box-shadow:0 0 0 2px #edf3ff inset}.method-card input{width:auto!important;margin:0}.method-card span{display:flex;flex-direction:column;gap:4px}.method-card b{font-size:12px}.method-card small,.proof-field>small{font-size:10px;color:var(--muted)}.proof-field input[type=file]{padding:10px}.cash-note{grid-column:1/-1;background:#eef4ff;color:#49617f;border-radius:12px;padding:12px 14px;font-size:11px;line-height:1.5}.contribution-form>.primary{grid-column:1/-1;min-height:46px}.contrib-admin-filter{background:#fff;border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow);padding:14px;margin-bottom:14px}.contrib-admin-filter form{display:flex;align-items:end;gap:10px}.contrib-admin-filter label{font-size:10px;font-weight:800;display:block;margin-bottom:6px}.contrib-admin-filter input{height:42px;border:1px solid #d7e1ee;border-radius:11px;padding:0 12px}.contribution-admin-stats{grid-template-columns:repeat(5,1fr)!important}.review-actions{display:flex;gap:6px;flex-wrap:wrap}.confirm-btn{border-color:#a7dfbf;color:#138552;background:#effaf4}.admin-table-wrap td small{display:block;color:var(--muted);font-size:9px;margin-top:3px}.empty-cell{text-align:center;color:var(--muted);padding:22px!important}.contrib-stat-bars{display:grid;gap:14px}.contrib-stat-bars>div{display:grid;grid-template-columns:100px 1fr 30px;align-items:center;gap:10px;font-size:11px}.contrib-stat-bars i{height:10px;background:#eef2f6;border-radius:8px;overflow:hidden}.contrib-stat-bars i b{display:block;height:100%;background:#19a463;border-radius:8px}.contrib-stat-bars i b.pending-bar{background:#e9a11a}.contrib-stat-bars i b.unpaid-bar{background:#e5484d}.contrib-stat-bars strong{text-align:right}.debtor-list{display:grid;gap:7px}.debtor-list>div{display:grid;grid-template-columns:1fr auto;gap:4px;padding:9px 10px;border:1px solid var(--line);border-radius:10px}.debtor-list b{font-size:11px}.debtor-list span{grid-column:1;color:var(--muted);font-size:9px}.debtor-list em{grid-column:2;grid-row:1/3;align-self:center;font-size:9px;color:#d33d45;font-style:normal;font-weight:800}.restriction-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.restriction-grid h3{font-size:13px;margin:0 0 10px}.restriction-list{display:grid;gap:8px}.restriction-list>div{display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:8px;padding:10px;border:1px solid var(--line);border-radius:12px}.restriction-list b{display:block;font-size:11px}.restriction-list small{display:block;color:var(--muted);font-size:9px;margin-top:3px}.restriction-visibility{font-size:9px;font-weight:800;color:#5f6f84}.contribution-form-panel .section-head{margin-top:0}
@media(max-width:900px){.contribution-admin-stats{grid-template-columns:repeat(3,1fr)!important}.restriction-grid{grid-template-columns:1fr}.contribution-overview{grid-template-columns:1fr}}
@media(max-width:760px){.contribution-row{grid-template-columns:1fr auto;gap:8px}.contribution-status{grid-column:1}.contribution-action{grid-column:2;grid-row:1/3}.contribution-form{grid-template-columns:1fr}.method-grid{grid-template-columns:1fr}.contribution-form>.primary{grid-column:auto}.payment-methods,.proof-field,.cash-note{grid-column:auto}.contrib-counts{gap:14px}.contrib-counts b{font-size:22px}.contribution-admin-stats{grid-template-columns:1fr 1fr!important}.contribution-admin-stats>div:last-child{grid-column:1/-1}.contrib-admin-filter form{align-items:stretch;flex-wrap:wrap}.contrib-admin-filter input{flex:1;min-width:160px}.review-actions{display:grid}.mobile-nav a{min-width:58px}.contribution-overview>div{padding:16px}}
.proof-field.required>label:after{content:' *';color:#d33d45}

/* Contributions calendar v15.2 — approved PortoFranco visual language */
.year-link{display:inline-flex!important;align-items:center;justify-content:center;text-decoration:none!important;color:var(--blue)!important;min-width:34px}.my-status-card{min-width:0}.contrib-counts{display:flex;gap:28px;align-items:flex-end;margin-top:14px;flex-wrap:wrap}.contrib-counts>div{display:flex;flex-direction:column;gap:5px}.contrib-counts b{font-size:28px;line-height:1}.contrib-counts span{font-size:10px;color:var(--muted);font-weight:700}.paid-number{color:#15945b}.pending-number{color:#d99012}.unpaid-number{color:#d33d45}.org-paid-count b{display:block;color:var(--blue);font-size:30px;line-height:1.1;margin-top:12px}.org-paid-count b span{display:inline;color:var(--muted);font-size:15px;margin-left:4px}.org-paid-count>span{display:block;color:var(--muted);font-size:10px;margin-top:7px}.contribution-calendar-panel{padding:20px}.calendar-head{align-items:flex-start}.calendar-legend{display:flex;gap:14px;flex-wrap:wrap;margin-top:10px}.calendar-legend>span{display:inline-flex;align-items:center;gap:6px;font-size:10px;color:var(--muted);font-weight:700}.dot{display:inline-block;width:9px;height:9px;border-radius:50%;flex:0 0 9px}.confirmed-dot{background:#18a15f}.pending-dot{background:#e9a51a}.unpaid-dot{background:#e5484d}.future-dot{background:#cbd2dc}.contribution-calendar-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-top:18px}.month-card{position:relative;min-width:0;border:1px solid #e4e9f0;border-radius:15px;background:#fff;overflow:hidden;padding:0 12px 12px;transition:.15s ease}.month-card:hover{transform:translateY(-1px);box-shadow:0 8px 20px rgba(30,64,175,.06)}.month-card.confirmed{border-color:#b9e7cd;background:linear-gradient(180deg,#f1fbf5 0,#fff 34%)}.month-card.pending{border-color:#f1d695;background:linear-gradient(180deg,#fff8e8 0,#fff 34%)}.month-card.unpaid,.month-card.rejected{border-color:#f2c8cc;background:linear-gradient(180deg,#fff1f2 0,#fff 34%)}.month-card.future{background:#f8fafc;border-color:#e4e8ee}.month-card-head{display:flex;justify-content:space-between;align-items:center;padding:11px 0 8px}.month-card-head strong{font-size:13px;color:#172b55}.month-card.confirmed .month-card-head strong{color:#148b52}.month-card.pending .month-card-head strong{color:#a86d08}.month-card.unpaid .month-card-head strong,.month-card.rejected .month-card-head strong{color:#d33d45}.month-card-head span{font-size:9px;color:var(--muted);font-weight:700}.weekday-row,.month-days{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;text-align:center}.weekday-row span{font-size:7px;color:#7c8aa0;font-weight:800;padding:2px 0 4px}.month-days .day,.month-days .empty-day{height:22px;display:flex;align-items:center;justify-content:center;font-size:8px;color:#33445f;border-radius:50%}.month-card.future .day{color:#aeb7c4}.month-days .today{box-shadow:inset 0 0 0 1px #2b63df;color:#1d4ed8;font-weight:800}.month-days .payment-day{background:#18a15f;color:#fff;font-weight:800}.month-card.pending .month-days .payment-day{background:#e9a51a}.month-card.rejected .month-days .payment-day{background:#e5484d}.month-status{display:flex;align-items:center;gap:6px;margin-top:9px;font-size:9px;font-weight:800;color:#68778c}.month-card.confirmed .month-status{color:#15945b}.month-card.pending .month-status{color:#b87908}.month-card.unpaid .month-status,.month-card.rejected .month-status{color:#d33d45}.month-card.future .month-status{color:#8995a5}.month-add,.month-view{display:inline-flex;margin-top:9px;padding:6px 9px;border-radius:8px;background:#edf4ff;color:#1d5dd8;font-size:9px;font-weight:800;text-decoration:none}.month-add:hover,.month-view:hover{background:#e3edff}.contribution-history-wrap{overflow:auto;border:1px solid var(--line);border-radius:14px}.contribution-history{width:100%;border-collapse:collapse;min-width:720px}.contribution-history th,.contribution-history td{padding:10px 12px;border-bottom:1px solid var(--line);text-align:left;font-size:10px;white-space:nowrap}.contribution-history th{background:#f8fafc;color:#68778c;font-weight:800}.contribution-history tr:last-child td{border-bottom:0}.contribution-history td{color:#34445d}.contribution-form-panel{margin-top:14px}.contribution-form-panel .section-head{margin-top:0}
@media(max-width:1100px){.contribution-calendar-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:850px){.contribution-calendar-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.calendar-head{display:block}.calendar-head>.muted{display:block;margin-top:8px}.contribution-overview{grid-template-columns:1fr 1fr}}
@media(max-width:560px){.contribution-calendar-grid{grid-template-columns:1fr 1fr;gap:9px}.month-card{padding:0 8px 9px}.month-card-head{padding:9px 0 6px}.month-card-head strong{font-size:11px}.weekday-row span{font-size:6px}.month-days .day,.month-days .empty-day{height:20px;font-size:7px}.month-status{font-size:8px}.month-add,.month-view{font-size:8px;padding:5px 7px}.contribution-overview{grid-template-columns:1fr}.contrib-counts{gap:18px}.contribution-calendar-panel{padding:14px}.calendar-legend{gap:9px}.calendar-legend>span{font-size:8px}}

/* Admin menu v15.3 */
.admin-nav a{position:relative}.admin-nav a .nav-count{margin-left:auto;min-width:20px;height:20px;padding:0 6px;border-radius:10px;background:#edf4ff;color:var(--blue);display:grid;place-items:center;font-size:9px;font-style:normal;font-weight:800}.admin-nav a .nav-count.alert-count{background:#ffe7e9;color:#d33d45}.settings-rules-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.settings-rule{position:relative;border:1px solid var(--line);border-radius:13px;padding:13px;background:#fbfcfe}.settings-rule b,.settings-rule span,.settings-rule small{display:block}.settings-rule b{font-size:12px}.settings-rule span{font-size:10px;color:#5f7087;margin-top:4px}.settings-rule small{font-size:9px;color:var(--muted);margin-top:4px}.settings-rule em{position:absolute;right:10px;top:10px;font-style:normal}.admin-section[id]{scroll-margin-top:20px}
@media(max-width:760px){.admin-nav a .nav-count{display:none}.settings-rules-grid{grid-template-columns:1fr}.admin-nav{max-width:calc(100vw - 170px)}}
/* v18: additive admin tools; intentionally namespaced so participant calendar is untouched */
.admin-header-right{display:flex;align-items:center;gap:14px;margin-left:auto}.admin-header-right .lang{display:flex;gap:4px}.admin-details{display:inline-block;vertical-align:middle;margin-right:5px}.admin-details>summary{list-style:none;cursor:pointer}.admin-details>summary::-webkit-details-marker{display:none}.inline-edit{margin-top:10px;padding:12px;border:1px solid var(--line);border-radius:12px;background:#f8fbff;min-width:620px}.inline-edit button{grid-column:1/-1;width:max-content}.admin-cal-nav{display:flex;align-items:center;gap:9px}.admin-cal-toolbar{display:flex;align-items:center;gap:14px;margin-bottom:14px}.admin-cal-toolbar span{font-size:10px;color:var(--muted)}.admin-cal-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:7px}.admin-cal-week{font-size:10px;font-weight:800;color:var(--muted);padding:4px 5px}.admin-cal-day{min-height:145px;border:1px solid var(--line);border-radius:12px;background:#fff;padding:7px;overflow:hidden}.admin-cal-day.empty{background:#f7f9fc;border-color:transparent}.admin-cal-date{display:block;font-size:11px;margin-bottom:5px}.admin-cal-shift{border:1px solid #dbe5f2;border-radius:9px;background:#f8fbff;padding:5px;margin-bottom:5px}.admin-cal-shift>summary{cursor:pointer;display:flex;justify-content:space-between;gap:4px;font-size:9px;font-weight:800}.admin-cal-shift>summary::-webkit-details-marker{display:none}.admin-cal-shift>small{display:block;font-size:8px;color:var(--muted);margin-top:3px}.admin-cal-load{font-style:normal;padding:1px 4px;border-radius:8px;background:#e8f1ff;color:#1d4ed8}.admin-cal-load.partial{background:#fff3cd;color:#956b00}.admin-cal-load.full{background:#e7f7ec;color:#16833c}.admin-cal-actions{display:grid;gap:5px;margin-top:6px}.admin-cal-actions details>summary{font-size:8px;color:var(--blue);cursor:pointer}.admin-mini-form{display:grid;gap:5px}.admin-mini-form input,.admin-mini-form select{width:100%;font-size:9px;padding:5px}.admin-cal-actions button{font-size:8px;padding:5px}.org-logo-preview{width:64px;height:64px;object-fit:contain;border:1px solid var(--line);border-radius:10px;padding:5px;background:#fff}.admin-subsection{margin-top:20px;padding-top:16px;border-top:1px solid var(--line)}.contrib-list-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.contrib-list-card{border:1px solid var(--line);border-radius:14px;padding:14px;background:#fff}.list-card-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.list-card-head h3{margin:0;font-size:15px}.show-all-list{margin-top:8px}.show-all-list>summary{width:max-content}.full-list{margin-top:8px;max-height:360px;overflow:auto}.paid-mark{color:#15803d!important}
/* Participant duty calendar must remain a real 7-column calendar on phones. */
.schedule-calendar .calendar-week,.schedule-calendar .calendar-grid{display:grid!important;grid-template-columns:repeat(7,minmax(0,1fr))!important;width:100%;min-width:0}.schedule-calendar .calendar-grid>.cal-empty,.schedule-calendar .calendar-grid>.cal-day{min-width:0}
@media(max-width:900px){.contrib-list-grid{grid-template-columns:1fr}.admin-header-right .admin-user b{display:none}.inline-edit{min-width:0}.admin-cal-grid{grid-template-columns:repeat(7,minmax(92px,1fr));overflow-x:auto;padding-bottom:8px}.admin-cal-day{min-height:120px}.admin-cal-toolbar{align-items:flex-start;flex-direction:column}}
@media(max-width:760px){.schedule-calendar .calendar-week,.schedule-calendar .calendar-grid{gap:3px!important}.schedule-calendar .cal-day{min-height:46px!important;padding:5px!important;border-radius:9px}.schedule-calendar .cal-day b{font-size:11px}.schedule-calendar .cal-empty{min-height:46px}.schedule-calendar .calendar-panel{overflow:hidden}.schedule-calendar .calendar-week{font-size:9px}.admin-header{align-items:flex-start}.admin-header-right{gap:6px}}
@media(max-width:390px){.schedule-calendar .calendar-week,.schedule-calendar .calendar-grid{gap:2px!important}.schedule-calendar .cal-day{min-height:43px!important;padding:4px!important}.schedule-calendar .cal-dots{gap:2px}.schedule-calendar .cal-dots i{width:5px;height:5px}}

/* v19 planning workspace: isolated admin calendar styles */
.admin-planning .planning-head{align-items:center}
.admin-planning .planning-summary{display:flex;gap:10px;flex-wrap:wrap;margin:-2px 0 14px}
.admin-planning .planning-summary>div{display:flex;align-items:baseline;gap:6px;padding:8px 12px;border:1px solid var(--line);border-radius:12px;background:#f8fbff}
.admin-planning .planning-summary b{font-size:18px}.admin-planning .planning-summary span{font-size:11px;color:var(--muted)}
.admin-planning .planning-summary .problem{background:#fff7f7}
.admin-planning .admin-cal-toolbar{justify-content:space-between}
.admin-view-switch{display:inline-flex;border:1px solid var(--line);border-radius:11px;padding:3px;background:#f7f9fc}
.admin-view-switch a{padding:7px 12px;border-radius:8px;font-size:11px;font-weight:800;color:var(--muted);text-decoration:none}
.admin-view-switch a.active{background:#fff;color:var(--blue);box-shadow:0 1px 4px rgba(15,23,42,.08)}
.admin-planning .admin-cal-day{position:relative;min-height:132px;padding:7px;transition:.15s ease}
.admin-planning .admin-cal-day:not(.empty):hover{border-color:#b9c9de;box-shadow:0 4px 14px rgba(15,23,42,.05)}
.admin-cal-day-hit{display:flex;align-items:center;justify-content:space-between;width:100%;border:0;background:transparent;padding:0 0 6px;cursor:pointer;text-align:left}
.admin-cal-day-hit .admin-cal-date{margin:0;font-size:12px}
.day-status-dot{width:8px;height:8px;border-radius:50%;background:#cbd5e1;flex:0 0 auto}
.status-full .day-status-dot{background:#22c55e}.status-partial .day-status-dot{background:#eab308}.status-problem .day-status-dot{background:#ef4444}.status-today .day-status-dot{background:#3b82f6}
.status-today{box-shadow:inset 0 0 0 1px #3b82f6}.status-problem{background:#fffafa}.status-partial{background:#fffdf5}.status-full{background:#fbfffc}
.admin-cal-shift-preview{display:grid;grid-template-columns:1fr auto;gap:2px 5px;padding:5px 6px;margin-bottom:5px;border:1px solid #dbe5f2;border-radius:9px;background:#f8fbff;font-size:9px}
.admin-cal-shift-preview>span{font-weight:800}.admin-cal-shift-preview>small{grid-column:1/-1;font-size:8px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.admin-cal-empty-label{display:block;margin-top:12px;font-size:9px;color:#a0aec0}
.admin-day-dialog{width:min(760px,calc(100vw - 28px));max-height:88vh;border:0;border-radius:18px;padding:0;box-shadow:0 24px 80px rgba(15,23,42,.28);overflow:auto}
.admin-day-dialog::backdrop{background:rgba(15,23,42,.42)}
.admin-day-dialog .dialog-head{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;padding:18px 20px 12px;border-bottom:1px solid var(--line)}
.admin-day-dialog .dialog-head small{display:block;color:var(--muted);font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.04em}.admin-day-dialog .dialog-head h3{margin:3px 0 0;font-size:20px}
.dialog-close{border:0;background:#f1f5f9;width:34px;height:34px;border-radius:50%;font-size:22px;line-height:1;cursor:pointer}
.day-dialog-actions{padding:14px 20px 0}.day-shift-list{display:grid;gap:12px;padding:14px 20px 20px}.day-shift-card{border:1px solid var(--line);border-radius:14px;padding:14px;background:#fff}
.day-shift-title{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.day-shift-title>div{display:grid;gap:3px}.day-shift-title b{font-size:15px}.day-shift-title span{font-size:11px;color:var(--muted)}
.assigned-list{margin:12px 0;padding:10px;border-radius:10px;background:#f8fafc}.assigned-list>strong{display:block;margin-bottom:6px;font-size:10px;color:var(--muted)}
.assigned-person{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:5px 0;border-top:1px solid #edf2f7}.assigned-person:first-of-type{border-top:0}.assigned-person span{font-size:11px;font-weight:700}.assigned-person form{margin:0}.assigned-person button{padding:4px 7px;font-size:8px}
.free-place{padding-top:6px;font-size:10px;font-weight:800;color:#9a6700}.assign-inline{grid-template-columns:minmax(0,1fr) auto;align-items:center}.assign-inline button{white-space:nowrap}
.shift-edit-details{margin-top:10px}.shift-edit-details>summary{width:max-content;list-style:none;cursor:pointer}.shift-edit-details>summary::-webkit-details-marker{display:none}.inline-shift-edit{margin-top:10px;padding:12px;border:1px solid var(--line);border-radius:12px;background:#f8fbff}.delete-shift-form{margin-top:8px}
.create-shift-dialog form{padding:18px 20px 22px}
.week-nav{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.week-nav b{font-size:12px}.admin-week-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px}.admin-week-day{min-height:180px;padding:8px;border:1px solid var(--line);border-radius:12px;background:#fff}.admin-week-day-head{width:100%;display:flex;justify-content:space-between;align-items:center;border:0;background:transparent;padding:0 0 8px;cursor:pointer}.admin-week-day-head b{font-size:12px}.admin-week-day-head span{font-size:9px;color:var(--muted)}.admin-week-day>small{font-size:9px;color:#94a3b8}.week-shift{width:100%;display:grid;grid-template-columns:1fr auto;gap:2px 6px;text-align:left;border:1px solid #dbe5f2;background:#f8fbff;border-radius:9px;padding:7px;margin-bottom:6px;cursor:pointer}.week-shift b{font-size:9px}.week-shift span{grid-column:1/-1;font-size:8px;color:var(--muted)}.week-shift em{font-size:8px;font-style:normal;font-weight:800;color:var(--blue)}
.planning-list .assigned-chip{display:inline-block;margin:2px 3px 2px 0;padding:3px 6px;border-radius:999px;background:#eef4ff;font-size:9px;font-weight:700;color:#315ea8}
@media(max-width:900px){.admin-planning .admin-cal-toolbar{align-items:stretch}.admin-view-switch{width:100%;justify-content:space-between}.admin-view-switch a{flex:1;text-align:center}.admin-planning .admin-cal-grid{grid-template-columns:repeat(7,minmax(82px,1fr))}.admin-week-grid{grid-template-columns:repeat(7,minmax(130px,1fr));overflow-x:auto;padding-bottom:8px}.week-nav{align-items:stretch;flex-wrap:wrap}.week-nav b{order:-1;width:100%;text-align:center}.admin-day-dialog .admin-form-grid{grid-template-columns:1fr}.assign-inline{grid-template-columns:1fr}.planning-list{overflow-x:auto}}
@media(max-width:520px){.admin-planning .planning-summary{display:grid;grid-template-columns:repeat(3,1fr)}.admin-planning .planning-summary>div{display:grid;gap:1px;padding:8px}.admin-planning .planning-summary b{font-size:16px}.admin-planning .planning-summary span{font-size:9px}.admin-day-dialog{width:calc(100vw - 14px)}.admin-day-dialog .dialog-head,.day-shift-list{padding-left:14px;padding-right:14px}.day-dialog-actions{padding-left:14px;padding-right:14px}}

/* v20 admin planning redesign — desktop + mobile, participant pages untouched */
.admin-page{background:#f5f7fb}
.admin-page .admin-content{max-width:1380px;padding:28px 30px 54px}
.admin-page .admin-header{margin-bottom:18px;align-items:center}
.admin-page .admin-header h1{font-size:28px;margin:3px 0 4px}
.admin-page .admin-header p{font-size:12px}
.admin-planning-stats{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.admin-planning-stats>div{position:relative;min-height:112px;padding:18px 18px 16px 66px;display:flex;flex-direction:column;justify-content:center}
.admin-planning-stats .stat-icon{position:absolute;left:18px;top:20px;width:34px;height:34px;border-radius:11px;display:grid;place-items:center;font-size:16px;font-weight:900;background:#edf4ff;color:#2563eb}
.admin-planning-stats .stat-free .stat-icon{background:#fff6df;color:#d99a00}
.admin-planning-stats .stat-problem .stat-icon{background:#fff0f1;color:#e5484d}
.admin-planning-stats .stat-fill .stat-icon{background:#eaf8f0;color:#15945b}
.admin-planning-stats b{font-size:26px;line-height:1;margin:0 0 5px}
.admin-planning-stats strong{font-size:11px;line-height:1.2}
.admin-planning-stats small{font-size:9px;margin-top:3px}
.admin-planning{padding:0;overflow:hidden}
.admin-planning .planning-head{padding:18px 18px 12px;margin:0;border-bottom:1px solid var(--line)}
.planning-head-actions{display:flex;align-items:center;gap:10px}
.planning-head-actions .admin-cal-nav{background:#f8fafc;border:1px solid var(--line);border-radius:11px;padding:3px}
.planning-head-actions .admin-cal-nav b{min-width:112px;text-align:center;font-size:12px}
.planning-head-actions .admin-cal-nav .table-btn{width:30px;height:30px;padding:0;border-color:transparent;background:#fff;font-size:16px}
.planning-add-shift{min-height:36px;padding:8px 13px;border-radius:10px;font-size:10px}
.planning-legend{display:flex;align-items:center;gap:18px;flex-wrap:wrap;padding:10px 18px 0;color:#66758b;font-size:9px}
.planning-legend span{display:inline-flex;align-items:center;gap:6px}
.legend-dot,.day-status-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:#cbd5e1;flex:0 0 auto}
.legend-dot.full,.status-full .day-status-dot{background:#16a34a}
.legend-dot.partial,.status-partial .day-status-dot{background:#f59e0b}
.legend-dot.problem,.status-problem .day-status-dot{background:#ef4444}
.legend-dot.today,.status-today .day-status-dot{background:#2563eb}
.admin-planning .admin-cal-toolbar{margin:0;padding:12px 18px;justify-content:center}
.admin-view-switch{padding:3px;border-radius:10px;background:#f6f8fb}
.admin-view-switch a{min-width:86px;padding:7px 14px;text-align:center}
.admin-view-switch a.active{background:#2563eb;color:#fff;box-shadow:0 4px 12px rgba(37,99,235,.18)}
.admin-planning .admin-cal-grid{gap:0;border-top:1px solid var(--line);border-left:1px solid var(--line);margin:0 18px 16px;border-radius:12px;overflow:hidden;background:#fff}
.admin-planning .admin-cal-week{height:34px;padding:10px 8px;text-align:center;background:#fbfcfe;border-right:1px solid var(--line);border-bottom:1px solid var(--line);font-size:9px}
.admin-planning .admin-cal-day{min-height:96px;border:0;border-right:1px solid var(--line);border-bottom:1px solid var(--line);border-radius:0;padding:0;background:#fff}
.admin-planning .admin-cal-day.empty{background:#fafbfc;border-color:var(--line)}
.admin-planning .admin-cal-day:not(.empty):hover{z-index:1;border-color:var(--line);box-shadow:inset 0 0 0 2px #dbeafe;background:#fbfdff}
.admin-cal-day-hit{height:100%;min-height:95px;display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;padding:10px;position:relative}
.admin-cal-day-hit .admin-cal-date{font-size:12px;font-weight:800;color:#172033}
.admin-cal-day-summary{margin-top:auto;display:flex;align-items:center;gap:5px;flex-wrap:wrap;text-align:left}
.admin-cal-day-summary b{font-size:9px;color:#42516a}
.admin-cal-day-summary small{font-size:8px;color:#d98900}
.admin-cal-day-summary .no-shifts{color:#a4afbf}
.status-today .admin-cal-day-hit{background:#eef5ff}
.status-today .admin-cal-date{width:26px;height:26px;border-radius:8px;background:#2563eb;color:#fff;display:grid;place-items:center;margin:-3px 0 0 -3px}
.today-label{position:absolute;right:7px;top:8px;padding:3px 6px;border-radius:999px;background:#2563eb;color:#fff;font-size:7px;font-weight:800}
.admin-planning .week-nav,.admin-planning .admin-week-grid,.admin-planning .planning-list{margin-left:18px;margin-right:18px;margin-bottom:18px}
.admin-people-section{padding:18px}
.people-head-actions{display:flex;align-items:center;gap:8px}
.people-add-details{position:relative}
.people-add-details>summary{list-style:none;cursor:pointer;padding:8px 11px}
.people-add-details>summary::-webkit-details-marker{display:none}
.people-add-details[open] .people-add-form{display:grid}
.people-add-form{position:absolute;z-index:25;right:0;top:42px;width:min(760px,calc(100vw - 70px));padding:16px;background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:0 20px 60px rgba(15,23,42,.16)}
.admin-people-section .table-toolbar{margin-top:0;padding-top:0;border-top:0}
.admin-people-section .participant-extra{display:none}
.admin-people-section.people-expanded .participant-extra{display:table-row}
.people-expand-wrap{display:flex;justify-content:center;padding-top:12px}
.people-expand-btn{padding:8px 14px;background:#f7faff}
.admin-quick-actions .admin-action-grid{grid-template-columns:repeat(5,minmax(0,1fr))}
.admin-quick-actions .admin-action-card{min-height:104px;padding:13px}
.admin-quick-actions .admin-action-card>span,.admin-quick-actions .admin-action-card button>span{margin-bottom:10px}
.admin-quick-actions .admin-action-card small{display:none}
.admin-day-dialog{border-radius:20px}
.day-shift-card{box-shadow:none}

@media(max-width:1100px){
  .admin-planning-stats{grid-template-columns:repeat(2,1fr)}
  .admin-quick-actions .admin-action-grid{grid-template-columns:repeat(3,1fr)}
}

@media(max-width:760px){
  .admin-page .admin-shell{display:block;padding-bottom:66px}
  .admin-page .admin-sidebar{position:fixed;z-index:80;left:0;right:0;bottom:0;top:auto;height:62px;padding:6px 8px;border:0;border-top:1px solid var(--line);background:rgba(255,255,255,.97);backdrop-filter:blur(12px);display:block}
  .admin-page .admin-brand-row,.admin-page .admin-logout{display:none}
  .admin-page .admin-nav{height:100%;display:flex;align-items:stretch;overflow-x:auto;gap:2px;max-width:none;scrollbar-width:none}
  .admin-page .admin-nav::-webkit-scrollbar{display:none}
  .admin-page .admin-nav a{min-width:60px;flex:0 0 60px;padding:6px 4px;border-radius:10px;display:flex;flex-direction:column;justify-content:center;gap:3px;text-align:center;font-size:15px}
  .admin-page .admin-nav a span{display:block;font-size:7px;line-height:1.1;white-space:nowrap}
  .admin-page .admin-nav a .nav-count{display:none}
  .admin-page .admin-content{padding:16px 10px 26px;max-width:none}
  .admin-page .admin-header{margin-bottom:13px;align-items:flex-start}
  .admin-page .admin-header small{font-size:8px}.admin-page .admin-header h1{font-size:22px}.admin-page .admin-header p{font-size:10px}
  .admin-header-right{gap:4px}.admin-header-right .lang a{min-width:25px;height:25px}
  .admin-planning-stats{grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;margin-bottom:10px}
  .admin-planning-stats>div{min-height:78px;padding:9px 6px 7px;text-align:center;align-items:center;border-radius:13px}
  .admin-planning-stats .stat-icon{position:static;width:24px;height:24px;border-radius:8px;font-size:11px;margin-bottom:5px}
  .admin-planning-stats b{font-size:16px;margin:0 0 2px}.admin-planning-stats strong{font-size:7px}.admin-planning-stats small{display:none}
  .admin-section{border-radius:15px}
  .admin-planning .planning-head{padding:13px 12px 10px;display:block}
  .admin-planning .planning-head h2{font-size:16px}
  .planning-head-actions{margin-top:10px;justify-content:space-between;gap:6px}
  .planning-head-actions .admin-cal-nav{flex:1;justify-content:space-between}
  .planning-head-actions .admin-cal-nav b{min-width:0;flex:1;font-size:11px}
  .planning-add-shift{width:36px;height:36px;padding:0;font-size:0;position:relative;flex:0 0 36px}
  .planning-add-shift:after{content:'+';font-size:20px;position:absolute;inset:0;display:grid;place-items:center}
  .planning-legend{display:none}
  .admin-planning .admin-cal-toolbar{padding:8px 10px}
  .admin-view-switch{width:100%;display:grid;grid-template-columns:repeat(3,1fr)}
  .admin-view-switch a{min-width:0;padding:7px 4px;font-size:9px}
  .admin-planning .admin-cal-grid{grid-template-columns:repeat(7,minmax(0,1fr));overflow:visible;margin:0 8px 10px;border-radius:10px}
  .admin-planning .admin-cal-week{height:27px;padding:8px 1px;font-size:7px}
  .admin-planning .admin-cal-day{min-height:58px}
  .admin-cal-day-hit{min-height:57px;padding:5px 4px}
  .admin-cal-day-hit .admin-cal-date{font-size:10px}
  .admin-cal-day-summary{gap:2px;display:grid;grid-template-columns:auto 1fr;align-items:center;width:100%}
  .admin-cal-day-summary .day-status-dot{width:5px;height:5px}
  .admin-cal-day-summary b{font-size:6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .admin-cal-day-summary small{grid-column:1/-1;font-size:6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .today-label{display:none}
  .status-today .admin-cal-date{width:21px;height:21px;border-radius:6px;margin:-1px 0 0 -1px}
  .admin-planning .week-nav,.admin-planning .admin-week-grid,.admin-planning .planning-list{margin-left:10px;margin-right:10px;margin-bottom:12px}
  .admin-week-grid{grid-template-columns:1fr;overflow:visible}.admin-week-day{min-height:0}
  .admin-people-section{padding:13px}
  .admin-people-section .admin-section-head{align-items:flex-start}
  .people-head-actions .count-pill{display:none}
  .people-add-details>summary{padding:7px 9px;font-size:8px}
  .people-add-form{position:fixed;z-index:100;left:8px;right:8px;top:8vh;width:auto;max-height:84vh;overflow:auto}
  .admin-people-section .admin-table-wrap{border:0;overflow:visible}
  .admin-people-section .admin-table-wrap table{min-width:0;display:block}
  .admin-people-section .admin-table-wrap thead{display:none}
  .admin-people-section .admin-table-wrap tbody{display:grid;gap:7px}
  .admin-people-section .admin-table-wrap tr{display:grid;grid-template-columns:1fr auto;gap:5px 8px;padding:10px;border:1px solid var(--line);border-radius:12px;background:#fff}
  .admin-people-section .admin-table-wrap tr.participant-extra{display:none}
  .admin-people-section.people-expanded .admin-table-wrap tr.participant-extra{display:grid}
  .admin-people-section .admin-table-wrap td{display:block;padding:0;border:0;font-size:9px}
  .admin-people-section .admin-table-wrap td:first-child{grid-column:1/-1;font-size:11px}
  .admin-people-section .admin-table-wrap td:last-child{grid-column:1/-1;padding-top:4px}
  .admin-people-section .inline-edit{position:fixed;z-index:100;left:8px;right:8px;top:7vh;min-width:0;max-height:86vh;overflow:auto;background:#fff;box-shadow:0 20px 60px rgba(15,23,42,.25)}
  .admin-quick-actions .admin-action-grid{grid-template-columns:repeat(3,1fr);gap:7px}
  .admin-quick-actions .admin-action-card{min-height:78px;padding:9px;text-align:center;align-items:center}
  .admin-quick-actions .admin-action-card>span,.admin-quick-actions .admin-action-card button>span{width:28px;height:28px;margin:0 auto 7px}
  .admin-quick-actions .admin-action-card b,.admin-quick-actions .admin-action-card button b{font-size:8px}
  .admin-quick-actions .admin-action-card i,.admin-quick-actions .admin-action-card button i{display:none}
  .admin-day-dialog{width:calc(100vw - 12px);max-height:91vh;border-radius:16px}
}

@media(max-width:380px){
  .admin-planning-stats{grid-template-columns:repeat(2,1fr)}
  .admin-planning-stats>div{min-height:70px}
  .admin-cal-day-summary b{font-size:5.5px}
  .admin-quick-actions .admin-action-grid{grid-template-columns:repeat(2,1fr)}
}

/* v21 admin planning polish + preferences visibility. Participant-facing pages intentionally untouched. */
.admin-page .admin-content{max-width:1500px}
.admin-page .admin-header{margin-bottom:16px}
.admin-page .admin-planning-stats{gap:14px;margin-bottom:16px}
.admin-page .admin-planning-stats>div{min-height:118px;border:1px solid #e4eaf2;box-shadow:0 8px 24px rgba(30,64,175,.045);border-radius:16px;background:#fff}
.admin-page .admin-planning{border:1px solid #e3eaf3;border-radius:18px;box-shadow:0 12px 32px rgba(26,54,93,.05);background:#fff}
.admin-page .admin-planning .planning-head{padding:20px 22px 14px;background:linear-gradient(180deg,#fff 0%,#fbfdff 100%)}
.admin-page .admin-planning .planning-head h2{font-size:20px;margin-top:2px}
.admin-page .planning-head-actions{gap:12px}
.admin-page .planning-head-actions .admin-cal-nav{display:flex;align-items:center;gap:4px;padding:4px;border:1px solid #e1e8f1;background:#f7faff;border-radius:12px}
.admin-page .planning-head-actions .admin-cal-nav b{min-width:140px;font-size:13px;color:#17233a}
.admin-page .planning-add-shift{min-height:40px;padding:9px 16px;font-size:11px;border-radius:10px;box-shadow:0 6px 18px rgba(37,99,235,.16)}
.admin-page .planning-legend{padding:11px 22px 0;gap:16px;font-size:10px}
.admin-page .admin-cal-toolbar{padding:12px 22px 14px!important}
.admin-page .admin-view-switch{display:inline-flex;padding:3px;background:#f3f6fa;border:1px solid #e3e8ef;border-radius:11px;gap:2px}
.admin-page .admin-view-switch a{min-width:92px;padding:8px 16px;border-radius:8px;font-size:10px;font-weight:800;color:#60708a}
.admin-page .admin-view-switch a.active{background:#fff;color:#2563eb;box-shadow:0 2px 8px rgba(15,23,42,.08);border:1px solid #d7e4ff}

.admin-page .admin-planning .admin-cal-grid{margin:0 22px 22px;border:1px solid #dfe7f1!important;border-radius:14px;overflow:hidden;box-shadow:0 5px 20px rgba(15,23,42,.035);background:#fff}
.admin-page .admin-planning .admin-cal-week{height:40px;padding:13px 8px;background:#f8fafc;color:#66758c;font-size:10px;font-weight:800;border-color:#e5ebf2}
.admin-page .admin-planning .admin-cal-day{min-height:122px;background:#fff;border-color:#e7ecf2!important;transition:background .15s,box-shadow .15s}
.admin-page .admin-planning .admin-cal-day.empty{background:#fafbfd}
.admin-page .admin-cal-day-hit{min-height:121px;padding:11px 12px;position:relative;border-radius:0}
.admin-page .admin-cal-day-hit:hover{background:#f8fbff}
.admin-page .admin-cal-day-hit .admin-cal-date{font-size:13px;font-weight:900;color:#18243a;line-height:26px}
.admin-page .status-today .admin-cal-day-hit{background:#eef5ff}
.admin-page .status-today .admin-cal-day-hit:hover{background:#e8f1ff}
.admin-page .status-today .admin-cal-date{width:28px;height:28px;line-height:28px;border-radius:8px;background:#2563eb;color:#fff;margin:-1px 0 0 -2px;box-shadow:0 4px 10px rgba(37,99,235,.22)}
.admin-page .today-label{position:absolute;right:9px;top:10px;background:#2563eb;color:#fff!important;border-radius:999px;padding:3px 7px;font-size:7px!important;font-weight:900;letter-spacing:.01em}
.admin-page .admin-cal-day-summary{margin-top:auto;width:100%;display:flex!important;flex-direction:column;align-items:flex-start!important;gap:4px!important;text-align:left}
.admin-page .day-summary-line{display:flex;align-items:center;gap:6px;max-width:100%;min-height:14px}
.admin-page .day-summary-line .day-status-dot,.admin-page .day-summary-line>i:not(.day-status-dot){width:7px;height:7px;border-radius:50%;display:inline-grid;place-items:center;flex:0 0 7px;font-size:9px;font-style:normal}
.admin-page .day-summary-line b,.admin-page .day-summary-line small{font-size:9px!important;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.admin-page .day-summary-line b{color:#43516a}
.admin-page .free-line>i{background:#f59e0b}
.admin-page .free-line small{color:#b77900!important}
.admin-page .pref-line>i{width:auto!important;height:auto!important;color:#2563eb;font-size:12px!important}
.admin-page .pref-line small{color:#2563eb!important;font-weight:800}
.admin-page .status-full .day-status-dot{background:#16a34a}
.admin-page .status-partial .day-status-dot{background:#f59e0b}
.admin-page .status-problem .day-status-dot{background:#ef4444}
.admin-page .status-today .day-status-dot{background:#2563eb}
.admin-page .admin-cal-day.status-problem{box-shadow:inset 3px 0 0 #ef4444}
.admin-page .admin-cal-day.status-partial{box-shadow:inset 3px 0 0 #f59e0b}
.admin-page .admin-cal-day.status-full{box-shadow:inset 3px 0 0 #22c55e}
.admin-page .admin-cal-day.status-today{box-shadow:inset 3px 0 0 #2563eb}
.admin-page .no-shifts{font-size:8px!important;color:#9aa7b9!important}

.admin-page .admin-day-dialog{width:min(900px,calc(100vw - 34px));max-height:min(88vh,900px);border:0;border-radius:18px;padding:0;box-shadow:0 24px 80px rgba(15,23,42,.24);overflow:auto;background:#f7f9fc}
.admin-page .admin-day-dialog::backdrop{background:rgba(15,23,42,.42);backdrop-filter:blur(2px)}
.admin-page .admin-day-dialog .dialog-head{position:sticky;top:0;z-index:3;background:#fff;padding:18px 20px;border-bottom:1px solid #e7ecf2}
.admin-page .admin-day-dialog .dialog-head h3{font-size:20px}
.admin-page .day-dialog-actions{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:13px 18px;background:#fff;border-bottom:1px solid #e7ecf2}
.admin-page .day-dialog-meta{display:flex;align-items:center;gap:8px;font-size:10px;color:#6c7890;font-weight:800}
.admin-page .day-dialog-meta>span{padding:5px 8px;background:#f3f6fa;border-radius:999px}
.admin-page .day-dialog-meta .pref-count-badge{background:#eef5ff;color:#2563eb}
.admin-page .day-preferences{margin:14px 16px 0;padding:14px;border:1px solid #dbe7fb;border-radius:14px;background:linear-gradient(180deg,#f7fbff 0%,#eef5ff 100%)}
.admin-page .day-preferences-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}
.admin-page .day-preferences-head small{display:block;color:#5f77a0;font-size:8px;text-transform:uppercase;letter-spacing:.05em}
.admin-page .day-preferences-head b{font-size:12px;color:#20375d}
.admin-page .day-preferences-head>span{display:grid;place-items:center;min-width:28px;height:28px;padding:0 8px;border-radius:999px;background:#fff;color:#2563eb;font-weight:900;font-size:11px}
.admin-page .day-preference-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.admin-page .day-pref-person{display:flex;align-items:center;gap:8px;background:#fff;border:1px solid #e1eafa;border-radius:10px;padding:8px;min-width:0}
.admin-page .pref-avatar{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;flex:0 0 28px;background:#2563eb;color:#fff;font-size:10px;font-weight:900}
.admin-page .day-pref-person div,.admin-page .pref-person-main div{min-width:0}
.admin-page .day-pref-person b{display:block;font-size:9px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#20304c}
.admin-page .day-pref-person small{display:block;margin-top:2px;font-size:8px;color:#2563eb;font-weight:800}
.admin-page .day-shift-list{padding:14px 16px 18px;display:grid;gap:12px}
.admin-page .day-shift-card{background:#fff;border:1px solid #e2e8f0;border-radius:15px;padding:15px;box-shadow:0 5px 14px rgba(15,23,42,.035)}
.admin-page .day-shift-title{padding-bottom:11px;border-bottom:1px solid #edf0f4;margin-bottom:10px}
.admin-page .day-shift-title>div b{font-size:14px;color:#17233a}
.admin-page .day-shift-title>div span{font-size:9px;color:#78869a}
.admin-page .admin-cal-load{border-radius:999px;padding:5px 9px;font-size:9px;font-weight:900}
.admin-page .admin-cal-load.full{background:#eaf8f0;color:#15803d}
.admin-page .admin-cal-load.partial{background:#fff6df;color:#b77900}
.admin-page .admin-cal-load.free{background:#fff0f1;color:#d13b45}
.admin-page .assigned-list{display:grid;gap:6px;margin-bottom:10px}
.admin-page .assigned-list>strong{font-size:9px;text-transform:uppercase;color:#7b879a;letter-spacing:.04em}
.admin-page .assigned-person{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:7px 9px;background:#f8fafc;border-radius:9px;font-size:10px}
.admin-page .free-place{padding:7px 9px;background:#fff8e8;border-radius:9px;color:#a66e00;font-size:9px;font-weight:800}
.admin-page .shift-preference-box{margin:11px 0;padding:10px 11px;background:#f2f7ff;border:1px solid #dce9ff;border-radius:11px}
.admin-page .shift-preference-title{display:flex;align-items:center;gap:6px;margin-bottom:6px;color:#2557a7}
.admin-page .shift-preference-title span{font-size:14px}.admin-page .shift-preference-title b{font-size:10px}.admin-page .shift-preference-title em{margin-left:auto;background:#fff;border-radius:999px;padding:2px 6px;font-size:8px;font-style:normal}
.admin-page .shift-pref-row{display:flex;align-items:center;justify-content:space-between;gap:8px;border-top:1px solid #dfebff;padding:6px 0;font-size:9px}
.admin-page .shift-pref-row:first-of-type{border-top:0}
.admin-page .shift-pref-row small{color:#6c7890;font-size:8px}
.admin-page .pref-assign-btn{background:#2563eb!important;color:#fff!important;border-color:#2563eb!important}
.admin-page .shift-manage-actions{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;margin-top:10px}
.admin-page .day-empty-state{display:flex;flex-direction:column;align-items:center;text-align:center;padding:32px 20px;color:#6f7c91}
.admin-page .day-empty-state>span{width:44px;height:44px;display:grid;place-items:center;border-radius:13px;background:#eef4ff;color:#2563eb;font-size:20px;margin-bottom:9px}
.admin-page .day-empty-state b{color:#26364f;font-size:12px}.admin-page .day-empty-state small{font-size:9px;margin:5px 0 12px;max-width:320px}

.admin-page .admin-preferences-section{border:1px solid #e3eaf3;border-radius:16px}
.admin-page .admin-preferences-section .admin-section-head p{margin:4px 0 0;max-width:680px;font-size:9px;color:#78869b}
.admin-page .preference-admin-list{display:grid;gap:0;border-top:1px solid #edf0f4}
.admin-page .preference-admin-row{display:grid;grid-template-columns:minmax(210px,1.4fr) 120px 130px minmax(180px,1fr) auto;align-items:center;gap:12px;padding:10px 14px;border-bottom:1px solid #edf0f4}
.admin-page .preference-admin-row:hover{background:#fbfdff}
.admin-page .pref-person-main{display:flex;align-items:center;gap:9px;min-width:0}
.admin-page .pref-person-main b,.admin-page .pref-date-main b,.admin-page .pref-slot-main b{display:block;color:#24334c;font-size:10px}
.admin-page .pref-person-main small,.admin-page .pref-date-main small,.admin-page .pref-slot-main small,.admin-page .pref-match-main small{display:block;margin-top:2px;color:#8a96a8;font-size:8px}
.admin-page .pref-match-main .admin-status.warn{background:#fff6df;color:#ae7400}
.admin-page .preference-extra{display:none}
.admin-page .admin-preferences-section.preferences-expanded .preference-extra{display:grid}
.admin-page .preferences-expand-wrap{display:flex;justify-content:center;padding:12px}
.admin-page .day-empty-state.compact{padding:22px}

@media (max-width:1100px){
  .admin-page .day-preference-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .admin-page .preference-admin-row{grid-template-columns:minmax(190px,1.3fr) 110px 120px minmax(160px,1fr) auto}
}
@media (max-width:900px){
  .admin-page .admin-planning .admin-cal-grid{grid-template-columns:repeat(7,minmax(100px,1fr));overflow-x:auto;margin-left:14px;margin-right:14px}
  .admin-page .admin-planning .admin-cal-day{min-height:112px}.admin-page .admin-cal-day-hit{min-height:111px}
  .admin-page .preference-admin-row{grid-template-columns:1fr 110px 120px auto}.admin-page .pref-match-main{grid-column:1/4;padding-left:37px}.admin-page .preference-admin-row>.table-btn{grid-column:4;grid-row:1/3}
}
@media (max-width:680px){
  .admin-page .admin-planning-stats{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:8px}
  .admin-page .admin-planning-stats>div{min-height:88px!important;padding:10px!important;text-align:left!important;align-items:flex-start!important;display:grid!important;grid-template-columns:28px 1fr;grid-template-rows:auto auto auto;column-gap:8px;border-radius:13px}
  .admin-page .admin-planning-stats .stat-icon{position:static!important;grid-row:1/4;width:28px!important;height:28px!important;margin:0!important}
  .admin-page .admin-planning-stats b{font-size:18px!important}.admin-page .admin-planning-stats strong{font-size:8px!important}.admin-page .admin-planning-stats small{display:block!important;font-size:7px!important}
  .admin-page .admin-planning .planning-head{padding:14px 12px 10px}
  .admin-page .planning-head-actions{display:grid;grid-template-columns:1fr 38px;width:100%}
  .admin-page .planning-head-actions .admin-cal-nav{width:100%}.admin-page .planning-head-actions .admin-cal-nav b{min-width:0;flex:1}
  .admin-page .planning-add-shift{width:38px!important;height:38px!important;padding:0!important;font-size:0!important}
  .admin-page .planning-add-shift:after{content:'+';font-size:20px}
  .admin-page .admin-cal-toolbar{padding:8px 10px 10px!important}.admin-page .admin-view-switch{display:flex;width:100%}.admin-page .admin-view-switch a{flex:1;min-width:0;padding:7px 4px;font-size:9px}
  .admin-page .admin-planning .admin-cal-grid{grid-template-columns:repeat(7,minmax(0,1fr));overflow:visible;margin:0 7px 10px;border-radius:10px}
  .admin-page .admin-planning .admin-cal-week{height:28px;padding:8px 1px;font-size:7px}
  .admin-page .admin-planning .admin-cal-day{min-height:68px}.admin-page .admin-cal-day-hit{min-height:67px;padding:5px 4px}
  .admin-page .admin-cal-day-hit .admin-cal-date{font-size:10px;line-height:21px}.admin-page .status-today .admin-cal-date{width:21px;height:21px;line-height:21px;border-radius:6px}
  .admin-page .today-label{display:none}
  .admin-page .admin-cal-day-summary{gap:2px!important}.admin-page .day-summary-line{gap:3px;min-height:9px}
  .admin-page .day-summary-line .day-status-dot,.admin-page .day-summary-line>i:not(.day-status-dot){width:5px;height:5px;flex-basis:5px}
  .admin-page .day-summary-line b,.admin-page .day-summary-line small{font-size:6px!important;max-width:48px}.admin-page .pref-line>i{font-size:8px!important;width:auto!important}.admin-page .no-shifts{display:none}
  .admin-page .admin-day-dialog{width:calc(100vw - 12px);max-height:92vh;border-radius:15px}
  .admin-page .admin-day-dialog .dialog-head{padding:13px 14px}.admin-page .admin-day-dialog .dialog-head h3{font-size:17px}
  .admin-page .day-dialog-actions{padding:9px 12px}.admin-page .day-dialog-actions .primary{padding:8px 10px;font-size:9px}.admin-page .day-dialog-meta{font-size:8px;gap:4px}.admin-page .day-dialog-meta>span{padding:4px 6px}
  .admin-page .day-preferences{margin:9px 9px 0;padding:10px}.admin-page .day-preference-grid{grid-template-columns:1fr}.admin-page .day-shift-list{padding:9px}.admin-page .day-shift-card{padding:11px;border-radius:12px}
  .admin-page .assign-inline{grid-template-columns:1fr!important}.admin-page .shift-manage-actions{flex-direction:column}.admin-page .shift-manage-actions>*{width:100%}.admin-page .shift-manage-actions .table-btn{width:100%}
  .admin-page .preference-admin-row{grid-template-columns:1fr auto;padding:10px;gap:8px}.admin-page .pref-person-main{grid-column:1}.admin-page .pref-date-main,.admin-page .pref-slot-main{grid-column:auto;font-size:9px}.admin-page .pref-match-main{grid-column:1/3;padding-left:37px}.admin-page .preference-admin-row>.table-btn{grid-column:1/3;grid-row:auto;width:100%}
  .admin-page .admin-preferences-section .admin-section-head p{font-size:8px}
}
/* v21 hard guard: only first 10 participants are visible until expanded */
.admin-page .admin-people-section tbody tr.participant-extra{display:none!important}
.admin-page .admin-people-section.people-expanded tbody tr.participant-extra{display:table-row!important}
@media(max-width:680px){
  .admin-page .admin-people-section tbody tr.participant-extra{display:none!important}
  .admin-page .admin-people-section.people-expanded tbody tr.participant-extra{display:grid!important}
}
