:root{
  color-scheme:dark;
  font-family:'Inter',ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Arial,sans-serif;
  font-feature-settings:"cv01","ss03";
  --bg:#08090a;--bg-2:#0d0f12;--panel:#0f1011;--surface:rgba(255,255,255,.035);--surface-2:rgba(255,255,255,.055);--surface-3:#191a1b;
  --text:#f7f8f8;--text-2:#d0d6e0;--muted:#8a8f98;--muted-2:#62666d;--line:rgba(255,255,255,.08);--line-soft:rgba(255,255,255,.05);
  --accent:#7170ff;--accent-bg:#5e6ad2;--accent-hover:#828fff;--ok:#10b981;--warn:#f59e0b;--danger:#ef4444;
  --input:#111316;--shadow:0 18px 60px rgba(0,0,0,.34),inset 0 1px 0 rgba(255,255,255,.03);--radius:14px;
  --card:#12151c;
}
*{box-sizing:border-box}html{background:var(--bg)}body{margin:0;min-height:100vh;display:flex;background:radial-gradient(circle at 76% 4%,rgba(113,112,255,.2),transparent 30rem),linear-gradient(180deg,var(--bg),var(--bg-2));color:var(--text);font-size:15px;line-height:1.5}body:before{content:"";position:fixed;inset:0;background-image:linear-gradient(rgba(255,255,255,.025) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.025) 1px,transparent 1px);background-size:48px 48px;mask-image:linear-gradient(180deg,rgba(0,0,0,.7),transparent 70%);pointer-events:none}a{color:inherit}.sidebar{width:268px;position:sticky;top:0;height:100vh;z-index:4;display:flex;flex-direction:column;gap:26px;padding:24px 18px;background:rgba(10,11,13,.78);backdrop-filter:blur(18px);border-right:1px solid var(--line)}.brand{display:flex;align-items:center;gap:12px;text-decoration:none;color:var(--text);font-weight:510;letter-spacing:-.03em}.brand-mark{flex:0 0 auto;display:block;width:40px;height:40px;border-radius:12px;box-shadow:0 12px 35px rgba(94,106,210,.35)}.brand-text{font-size:20px}.brand-text b{color:var(--accent-hover);font-weight:600}.brand{flex:0 0 auto}nav{display:grid;gap:7px;-webkit-user-select:none;user-select:none}.sidebar nav{flex:1 1 auto;min-height:0;align-content:start;overflow-y:auto;overflow-x:hidden;margin:0 -6px;padding:0 6px;scrollbar-width:thin;scrollbar-color:var(--line) transparent}.sidebar nav::-webkit-scrollbar{width:8px}.sidebar nav::-webkit-scrollbar-thumb{background:var(--line);border-radius:99px;border:2px solid transparent;background-clip:padding-box}nav a{position:relative;text-decoration:none;color:var(--muted);padding:11px 12px;border-radius:10px;border:1px solid transparent;font-size:13px;font-weight:510}nav a:hover,nav a.active{color:var(--text);background:var(--surface);border-color:var(--line-soft)}nav a.active:before{content:"";position:absolute;left:0;top:10px;bottom:10px;width:3px;border-radius:99px;background:var(--accent)}.nav-group{display:grid;gap:4px}.nav-group>summary{display:flex;align-items:center;gap:8px;cursor:pointer;list-style:none;-webkit-user-select:none;user-select:none;color:var(--muted);padding:11px 12px;border-radius:10px;border:1px solid transparent;font-size:13px;font-weight:510}.nav-group>summary::-webkit-details-marker{display:none}.nav-group>summary:hover{color:var(--text);background:var(--surface);border-color:var(--line-soft)}.nav-group>summary:after{content:"";margin-left:auto;width:6px;height:6px;border-right:1.6px solid currentColor;border-bottom:1.6px solid currentColor;transform:rotate(-45deg);transition:transform .15s;opacity:.65}.nav-group[open]>summary:after{transform:rotate(45deg)}.nav-group-items{display:grid;gap:4px;margin:2px 0 2px 11px;padding-left:9px;border-left:1px solid var(--line-soft)}.nav-group-items a{font-size:12.5px;padding:9px 11px}.nav-group-items a.active:before{left:-10px}.sidebar-actions{margin-top:auto;flex:0 0 auto;display:grid;gap:10px}.notif-badge{min-width:18px;height:18px;padding:0 5px;display:inline-grid;place-items:center;border-radius:999px;background:#fff;color:#0d0f12;font-size:10px;font-weight:700;box-shadow:none}.notif-badge[hidden]{display:none}.notif-block{display:flex;align-items:center;gap:11px;width:100%;justify-content:flex-start;min-height:0;padding:9px 11px;border-radius:12px;border:1px solid var(--line-soft);background:var(--surface);color:var(--text-2);box-shadow:none;font-size:13px;font-weight:510}.notif-block:hover{background:var(--surface-2);color:var(--text);border-color:var(--line)}.notif-block-ring{flex:0 0 auto;display:grid;place-items:center;width:30px;height:30px;border-radius:50%;border:1px solid var(--line-soft);background:rgba(255,255,255,.05);color:#fff}.notif-block-ring svg{width:16px;height:16px;display:block}.notif-block-label{flex:1 1 auto;text-align:left}.notif-block .notif-badge{box-shadow:0 0 0 2px var(--surface)}.notif-popup{width:min(520px,calc(100vw - 32px))}.notif-popup-actions{display:flex;align-items:center;gap:8px}.notif-popup-actions .compact{min-height:0;padding:5px 9px;font-size:12px}.notif-popup .notif-list{margin-top:6px;max-height:min(60vh,460px);overflow-y:auto;display:grid;gap:1px;background:var(--line-soft);border:1px solid var(--line);border-radius:12px}.notif-empty{padding:18px 13px;color:var(--muted);font-size:13px;text-align:center;background:var(--surface)}.notif-item{display:flex;align-items:flex-start;gap:8px;padding:10px 12px;background:var(--surface)}.notif-item.is-unread{background:rgba(113,112,255,.12)}.notif-item-main{flex:1 1 auto;min-width:0;text-align:left;background:transparent;border:0;box-shadow:none;color:var(--text);display:block;padding:0;min-height:0;cursor:pointer}.notif-item-title{font-size:13px;font-weight:560;line-height:1.3}.notif-item-body{margin-top:2px;font-size:12px;color:var(--muted);overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.notif-item-x{flex:0 0 auto;width:26px!important;min-width:26px!important;min-height:26px;padding:0!important;border-radius:8px;background:transparent;border:0;color:var(--muted);box-shadow:none;font-size:16px}.notif-item-x:hover{background:var(--surface-2);color:var(--text)}.notif-toasts{position:fixed;bottom:18px;right:18px;z-index:60;display:flex;flex-direction:column-reverse;gap:10px;width:min(340px,calc(100vw - 32px));pointer-events:none}.notif-toast{pointer-events:auto;cursor:pointer;display:flex;align-items:flex-start;gap:8px;padding:12px 13px;border:1px solid var(--line);border-radius:12px;background:#14161a;box-shadow:0 18px 48px rgba(0,0,0,.5);animation:notif-toast-in .2s ease-out}.notif-toast:hover{border-color:var(--accent);background:rgba(113,112,255,.14)}.notif-toast.is-leaving{opacity:0;transform:translateX(12px);transition:.2s}.notif-toast-main{flex:1 1 auto;min-width:0;text-align:left;background:transparent;border:0;box-shadow:none;color:var(--text);display:block;padding:0;min-height:0;cursor:pointer}.notif-toast-main:hover,.notif-toast-main:focus,.notif-toast-main:active{background:transparent;color:var(--text);box-shadow:none}.notif-toast-title{font-size:13px;font-weight:600;line-height:1.3}.notif-toast-body{margin-top:2px;font-size:12px;color:var(--muted);overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.notif-toast-x{flex:0 0 auto;width:24px!important;min-width:24px!important;min-height:24px;padding:0!important;border-radius:8px;background:transparent;border:0;color:var(--muted);box-shadow:none;font-size:15px}.notif-toast-x:hover{color:var(--text);background:var(--surface-2)}@keyframes notif-toast-in{from{opacity:0;transform:translateX(16px)}to{opacity:1;transform:none}}.sidebar-user{display:flex;align-items:center;gap:10px;padding:10px 11px;border:1px solid var(--line-soft);border-radius:12px;background:var(--surface)}.sidebar-user .su-avatar{flex:0 0 auto;display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:linear-gradient(135deg,var(--accent-bg),#9b8cff);color:#fff;font-size:12px;font-weight:600;overflow:hidden}.sidebar-user .su-avatar img{width:100%;height:100%;object-fit:cover}.sidebar-user .su-meta{min-width:0;display:grid;line-height:1.25}.sidebar-user .su-name{font-size:13px;font-weight:560;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar-user .su-email{font-size:11px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar-user .su-imp{margin-top:3px;font-size:10px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--warn)}body.auth{align-items:center;justify-content:center;padding:24px}body.auth:before{mask-image:none}.login{position:relative;z-index:1;width:100%;max-width:430px;margin:0;padding:32px 30px;text-align:center;animation:login-pop .22s ease-out}.login h1{font-size:26px;letter-spacing:-.4px}.login>p{margin:8px 0 0;color:var(--muted)}.login .error{text-align:left}.login form{text-align:left}.login label{display:block}.login label+label{margin-top:4px}.login button{width:100%}.login form+form{margin-top:12px}@keyframes login-pop{from{opacity:0;transform:translateY(10px) scale(.98)}to{opacity:1;transform:none}}.login-actions{display:grid;gap:14px;margin-top:20px}.btn-microsoft{display:inline-flex;align-items:center;justify-content:center;gap:10px;width:100%;min-height:44px;background:#2f2f2f;border:1px solid rgba(255,255,255,.14)}.btn-microsoft:hover{background:#404040}.btn-microsoft .ms-logo{display:inline-grid;grid-template-columns:9px 9px;grid-template-rows:9px 9px;gap:2px}.btn-microsoft .ms-logo i{display:block}.btn-microsoft .ms-logo i:nth-child(1){background:#f25022}.btn-microsoft .ms-logo i:nth-child(2){background:#7fba00}.btn-microsoft .ms-logo i:nth-child(3){background:#00a4ef}.btn-microsoft .ms-logo i:nth-child(4){background:#ffb900}.login-divider{display:flex;align-items:center;gap:12px;color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.1em;margin:4px 0}.login-divider:before,.login-divider:after{content:"";flex:1;height:1px;background:var(--line)}.impersonate-list{display:grid;gap:8px;max-height:50vh;overflow:auto;margin:4px 0}main{position:relative;z-index:1;width:100%;max-width:1780px;padding:34px 30px 60px;overflow:hidden}.hero{display:flex;justify-content:space-between;align-items:flex-start;gap:24px;margin-bottom:24px}.hero.compact{min-height:86px}.eyebrow{margin-bottom:9px;color:var(--accent-hover);font-size:11px;font-weight:600;letter-spacing:.16em;text-transform:uppercase}.hero h1{margin:0;color:var(--text);font-size:clamp(32px,4vw,58px);line-height:1;letter-spacing:-1.05px;font-weight:510}.hero p{max-width:780px;margin:14px 0 0;color:var(--muted);font-size:16px}.card{margin-bottom:20px;padding:20px;border-radius:var(--radius);background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow)}.card.wide{width:100%}.grid-card{padding:0;overflow:hidden;background:rgba(255,255,255,.025)}.grid2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.inline{display:flex;gap:12px;align-items:center}.stack{display:grid;gap:12px}.actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap}h2{margin:0 0 12px;font-size:20px;font-weight:510;letter-spacing:-.24px}.muted{color:var(--muted)}button,.button{display:inline-flex;align-items:center;justify-content:center;min-height:40px;padding:9px 15px;border-radius:10px;border:1px solid rgba(255,255,255,.1);background:var(--accent-bg);color:white;text-decoration:none;font:inherit;font-weight:510;cursor:pointer;box-shadow:0 12px 30px rgba(94,106,210,.22)}button:hover,.button:hover{background:var(--accent-hover)}button.secondary,.ghost{background:var(--surface);color:var(--text-2);box-shadow:none}.ghost:hover,button.secondary:hover{background:var(--surface-2);color:var(--text)}input,select,textarea{width:100%;min-height:38px;border:1px solid var(--line);border-radius:10px;background:var(--input);color:var(--text);font:inherit;padding:9px 11px;outline:none}textarea{resize:vertical;min-width:180px}input:focus,select:focus,textarea:focus{border-color:rgba(113,112,255,.65);box-shadow:0 0 0 3px rgba(113,112,255,.18)}table{width:100%;border-collapse:separate;border-spacing:0}th,td{border-bottom:1px solid var(--line-soft);padding:10px;text-align:left}th{color:var(--muted);font-size:12px;font-weight:510;text-transform:uppercase;letter-spacing:.06em}.table-wrap{overflow:auto;max-height:calc(100vh - 230px);border-top:1px solid var(--line)}.excel-grid{min-width:1320px;border-collapse:separate;border-spacing:0}.excel-grid thead th{position:sticky;top:0;z-index:3;background:#101114;color:var(--text-2);border-right:1px solid var(--line-soft);text-align:center}.excel-grid thead th span{color:var(--muted);font-family:'JetBrains Mono',ui-monospace,monospace;font-size:11px}.excel-grid td{border-right:1px solid var(--line-soft);vertical-align:top;background:rgba(10,11,13,.86)}.sticky{position:sticky;left:0;z-index:2}.user-col{min-width:230px;text-align:left!important}.user{background:#111316!important}.user strong{display:block;font-weight:590;color:var(--text)}.user span{display:block;margin-top:3px;color:var(--muted);font-size:12px}.teamrow td{position:sticky;left:0;z-index:3;padding:0;border-bottom:1px solid rgba(113,112,255,.22);background:linear-gradient(90deg,rgba(94,106,210,.28),rgba(255,255,255,.035))!important}.teamrow span{display:inline-flex;align-items:center;gap:8px;margin:8px 10px;padding:5px 10px;border:1px solid rgba(113,112,255,.32);border-radius:999px;color:#dfe1ff;font-size:12px;font-weight:590;letter-spacing:.08em;text-transform:uppercase}.teamrow span:before{content:"";width:7px;height:7px;border-radius:50%;background:var(--accent-hover);box-shadow:0 0 18px var(--accent)}.day-cell{min-width:190px}.adhoc-col,.adhoc-cell{min-width:220px}.hours{min-width:92px}.hours input{min-width:74px}.comment-indicator{position:absolute;right:11px;top:40px;z-index:34;display:inline-grid;place-items:center;width:22px;height:22px;padding:0;border:0;background:transparent;color:#fff;cursor:pointer}.comment-indicator svg{display:block;width:14px;height:14px}.comment-dialog-card{display:flex;flex-direction:column;gap:14px}#comment-delete[hidden]{display:none}.comment-dialog-text{width:100%;border-radius:10px;border:1px solid var(--line-soft);background:var(--input);color:inherit;padding:10px 12px;font:inherit;line-height:1.45;resize:vertical;min-height:120px}.comment-dialog-actions{display:flex;align-items:center;gap:10px}.comment-dialog-spacer{flex:1 1 auto}.grid-toolbar{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:16px;background:rgba(255,255,255,.025)}.search-shell{display:flex;align-items:center;gap:10px;min-width:min(620px,100%);padding:7px 10px;border:1px solid var(--line);border-radius:12px;background:var(--input)}.search-shell span{color:var(--accent-hover);font-size:11px;font-weight:590;text-transform:uppercase;letter-spacing:.12em}.search-shell input{border:0;background:transparent;padding:0;min-height:28px;box-shadow:none}.autosave-note{color:var(--muted);font-size:13px}.save-status{position:fixed;right:22px;bottom:22px;z-index:9;min-width:90px;text-align:center;padding:10px 13px;border-radius:999px;background:var(--surface-3);border:1px solid var(--line);color:var(--text-2);box-shadow:var(--shadow);opacity:0;transform:translateY(8px);transition:.18s}.save-status:not(:empty){opacity:1;transform:translateY(0)}.save-status.ok{color:var(--ok)}.save-status.error,.error{color:var(--danger)}.error{padding:12px 14px;margin-bottom:16px;border:1px solid rgba(239,68,68,.28);border-radius:12px;background:rgba(239,68,68,.08)}.responsive-list{display:grid;gap:9px}.list-row{display:grid;gap:10px;align-items:center;padding:11px;border:1px solid var(--line-soft);border-radius:12px;background:var(--surface)}.user-edit{grid-template-columns:1.2fr 1.35fr 1fr .7fr 1fr 1fr auto auto auto auto}.project-edit{grid-template-columns:.6fr 1.4fr 1fr auto auto}.team-edit{grid-template-columns:1fr 120px}.check{display:inline-flex;align-items:center;gap:8px;color:var(--muted);white-space:nowrap}.check input{width:auto;min-height:auto}.hide-toggle{display:inline-flex;align-items:center;gap:7px;white-space:nowrap;color:var(--muted);font-size:12px;cursor:pointer}.hide-toggle input{width:auto;min-height:auto;cursor:pointer}.pill,.chip{display:inline-flex;align-items:center;width:max-content;border-radius:999px;border:1px solid var(--line);background:var(--surface);color:var(--text-2);padding:5px 9px;font-size:12px;text-decoration:none}.pill.ok{color:var(--ok);border-color:rgba(16,185,129,.35)}.pill.warn{color:var(--warn);border-color:rgba(245,158,11,.35)}.chips{display:flex;gap:10px;flex-wrap:wrap}.choices{margin-bottom:0;font-size:13px}.choices__inner{min-height:38px!important;padding:4px 7px!important;border-radius:10px!important;background:var(--input)!important;border:1px solid var(--line)!important;color:var(--text)!important}.choices.is-focused .choices__inner{border-color:rgba(113,112,255,.65)!important;box-shadow:0 0 0 3px rgba(113,112,255,.18)}.choices__list--multiple{display:flex!important;flex-wrap:wrap!important;gap:3px!important}.choices__list--multiple .choices__item{display:inline-flex!important;align-items:center!important;max-width:100%!important;margin:0!important;border:1px solid rgba(113,112,255,.35)!important;background:rgba(113,112,255,.18)!important;color:var(--text)!important;border-radius:999px!important;font-size:11px!important;line-height:1.25!important;overflow:hidden!important;text-overflow:ellipsis!important;white-space:nowrap!important}.choices__list--multiple .choices__item[data-deletable]{padding-right:5px!important}.choices[data-type*=select-multiple] .choices__button{flex:0 0 auto!important;border-left-color:rgba(255,255,255,.22)!important}.choices__list--multiple .choices__item::first-letter{text-transform:uppercase}.choices__input{background:transparent!important;color:var(--text)!important;min-height:24px!important;padding:0!important}.choices__list--dropdown,.choices__list[aria-expanded]{z-index:20!important;background:#14161a!important;border:1px solid var(--line)!important;border-radius:12px!important;box-shadow:0 18px 48px rgba(0,0,0,.45)!important;color:var(--text)!important}.choices__list--dropdown .choices__item--selectable{padding:9px 11px!important}.choices__list--dropdown .choices__item--selectable.is-highlighted{background:rgba(113,112,255,.18)!important}.has-choices select{position:absolute!important;width:1px!important;height:1px!important;opacity:0!important}tr[hidden]{display:none!important}
@media(max-width:1100px){body{display:block}.sidebar{position:relative;width:100%;height:auto}.brand{margin-bottom:14px}.sidebar nav{overflow:visible;margin:0;padding:0}.sidebar-actions{display:flex;margin-top:14px}.grid2{grid-template-columns:1fr}main{padding:22px 14px}.user-edit,.project-edit,.team-edit{grid-template-columns:1fr}.inline,.stack{display:grid;grid-template-columns:1fr}.date-form{grid-template-columns:minmax(230px,1fr) auto}.sticky{position:static}.excel-grid{min-width:1040px}.table-wrap{max-height:none}.grid-toolbar{display:grid}.search-shell{min-width:0}.hero{display:block}.hero .button,.hero button{margin-top:14px}}
@media(max-width:640px){main{padding:18px 10px}.excel-grid{min-width:880px}.day-cell{min-width:165px}.card{padding:16px}.grid-card{padding:0}.table-wrap{margin-left:-16px;margin-right:-16px}.user-col{min-width:190px}button,.button{width:100%}.actions{display:grid}.sidebar-actions{display:grid}.hero h1{font-size:32px}}

/* Dark-only, no-horizontal-scroll weekly grid overrides */
.table-wrap{max-width:100%;overflow-x:hidden!important;overflow-y:auto}.excel-grid{width:100%!important;min-width:0!important;table-layout:fixed}.excel-grid th,.excel-grid td{padding:8px 7px}.excel-grid th{font-size:11px;letter-spacing:.035em}.excel-grid thead th span{font-size:10px;white-space:nowrap}.excel-grid th:nth-child(1),.excel-grid td:nth-child(1){width:15%}.excel-grid th:nth-child(n+2):nth-child(-n+6),.excel-grid td:nth-child(n+2):nth-child(-n+6){width:10.5%}.excel-grid th:nth-child(7),.excel-grid td:nth-child(7){width:12%}.excel-grid th:nth-child(8),.excel-grid td:nth-child(8){width:5.5%}.excel-grid th:nth-child(9),.excel-grid td:nth-child(9){width:15%}.user-col,.day-cell,.adhoc-col,.adhoc-cell,.hours{min-width:0!important}.user strong,.user span,.choices__input,.choices__list--multiple .choices__item{min-width:0;max-width:100%;overflow:hidden;text-overflow:ellipsis}.choices__inner{padding:3px 5px!important;min-height:34px!important}.choices__input{font-size:12px!important}.choices__list--multiple .choices__item{font-size:10.5px!important;padding:2px 5px!important}.hours input{min-width:0!important;padding-left:6px;padding-right:4px}textarea{min-width:0!important;font-size:12px;padding:7px 8px}.sticky{max-width:100%}@media(max-width:1100px){.excel-grid{min-width:0!important}.table-wrap{overflow-x:hidden!important}.excel-grid th,.excel-grid td{padding:6px 5px}.excel-grid th:nth-child(1),.excel-grid td:nth-child(1){width:16%}.excel-grid th:nth-child(n+2):nth-child(-n+6),.excel-grid td:nth-child(n+2):nth-child(-n+6){width:10%}.excel-grid th:nth-child(7),.excel-grid td:nth-child(7){width:12%}.excel-grid th:nth-child(8),.excel-grid td:nth-child(8){width:6%}.excel-grid th:nth-child(9),.excel-grid td:nth-child(9){width:16%}.user strong{font-size:12px}.user span{font-size:10px}.choices__input{font-size:11px!important}.choices__list--multiple .choices__item{font-size:10px!important}}@media(max-width:640px){.excel-grid{min-width:0!important}.day-cell{min-width:0!important}.user-col{min-width:0!important}.table-wrap{margin-left:0!important;margin-right:0!important}.excel-grid th,.excel-grid td{padding:5px 3px}.excel-grid th{font-size:9px}.excel-grid thead th span{font-size:8px}.user strong{font-size:10px}.user span{display:none}.choices__inner{min-height:30px!important;padding:2px 3px!important}.choices__input{font-size:9px!important}.choices__list--multiple .choices__item{font-size:9px!important}textarea{font-size:10px}}

/* Week navigation header */
.week-nav{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.week-nav-btn{display:inline-grid;place-items:center;min-width:38px;height:38px;padding:0 10px;border-radius:10px;border:1px solid var(--line);background:var(--surface);color:var(--text-2);font-size:18px;font-weight:500;text-decoration:none;transition:all .15s;cursor:pointer;line-height:1}
.week-nav-btn:hover{background:var(--surface-2);border-color:var(--accent);color:var(--text)}
.week-nav-btn.is-current{background:rgba(113,112,255,.12);border-color:var(--accent);color:var(--accent-hover);font-size:12px;font-weight:600;letter-spacing:.02em}
.week-selector-form{display:flex;align-items:center;gap:8px;margin-left:6px}
.week-selector{appearance:none;-webkit-appearance:none;background:var(--surface);border:1px solid var(--line);border-radius:10px;color:var(--text);font-size:13px;font-weight:500;padding:8px 32px 8px 12px;height:38px;min-width:220px;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='%238a8f98'%3E%3Cpath d='M2 4l4 4 4-4'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;transition:border-color .15s}
.week-selector:hover,.week-selector:focus{border-color:var(--accent);outline:none}
.week-selector option{background:var(--bg-2);color:var(--text);padding:6px 8px}
.week-selector-form button{height:38px;padding:0 16px;font-size:13px;font-weight:600}
.week-number{color:var(--accent-hover);font-variant-numeric:tabular-nums}
.week-range{color:var(--muted);font-size:13px;margin-top:2px}
@media(max-width:1100px){.week-nav{margin-top:14px}.week-selector{min-width:180px}}

/* Team ordering, deletion and weekly team filtering */
.section-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;margin-bottom:14px}.section-head h2{margin-bottom:4px}.team-draggable{grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:10px}.team-draggable.dragging{opacity:.55;outline:1px dashed var(--accent);background:rgba(113,112,255,.08)}.drag-handle{width:38px;height:38px;padding:0;cursor:grab;border-radius:10px;color:var(--muted);background:var(--surface);border:1px solid var(--line)}.drag-handle:active{cursor:grabbing}.team-fields{display:grid;grid-template-columns:minmax(180px,1fr) 90px auto;gap:10px;align-items:center;min-width:0}.delete-team{margin:0}.danger{color:#fecaca!important;border-color:rgba(239,68,68,.35)!important;background:rgba(239,68,68,.08)!important}.danger:hover{background:rgba(239,68,68,.16)!important;border-color:rgba(239,68,68,.58)!important}.team-filter-shell{display:grid;gap:6px;min-width:260px}.team-filter-shell>span,.search-shell>span{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.08em}.team-filter-shell .choices{margin:0}.team-filter-shell .choices__inner{min-height:42px!important}.empty-state{padding:28px!important;text-align:center;color:var(--muted)}
@media(max-width:900px){.section-head{display:block}.team-draggable{grid-template-columns:1fr}.drag-handle{width:100%}.team-fields{grid-template-columns:1fr}.delete-team button{width:100%}.team-filter-shell{min-width:0}}

.grid-toolbar{grid-template-columns:minmax(260px,1.2fr) minmax(240px,.9fr) minmax(220px,auto);align-items:end}.grid-toolbar .autosave-note{justify-self:end;max-width:320px;white-space:normal;text-align:right;line-height:1.35}.search-shell{min-width:260px}@media(max-width:1200px){.grid-toolbar{grid-template-columns:1fr 1fr}.grid-toolbar .autosave-note{grid-column:1/-1;justify-self:start;text-align:left;max-width:none}}

.grid-toolbar{display:grid!important;grid-template-columns:repeat(auto-fit,minmax(220px,1fr))!important;align-items:end!important}.grid-toolbar .search-shell{grid-column:span 2}.user-filter-shell{min-width:0!important}.grid-toolbar .autosave-note{grid-column:1/-1!important;justify-self:start!important;max-width:none!important;text-align:left!important;white-space:normal!important}.team-filter-shell,.search-shell{min-width:0!important}.grid-toolbar .export-excel-btn{grid-column:1/-1;justify-self:start;width:auto;min-width:0;background:var(--surface);color:var(--text);border:1px solid var(--line-soft);box-shadow:none;white-space:nowrap}.grid-toolbar .export-excel-btn:hover{background:var(--surface-2);color:var(--text)}


/* Fix Choices remove-button hover/focus state so global button styles do not leak in */
.choices[data-type*=select-multiple] .choices__button,
.choices[data-type*=text] .choices__button{
  display:inline-block!important;
  width:12px!important;
  min-width:12px!important;
  height:12px!important;
  min-height:12px!important;
  margin:0 0 0 8px!important;
  padding:0 0 0 14px!important;
  border:0!important;
  border-left:1px solid rgba(255,255,255,.22)!important;
  border-radius:0!important;
  box-shadow:none!important;
  background-color:transparent!important;
  background-repeat:no-repeat!important;
  background-position:center!important;
  background-size:8px 8px!important;
  color:transparent!important;
}
.choices[data-type*=select-multiple] .choices__button:hover,
.choices[data-type*=select-multiple] .choices__button:focus,
.choices[data-type*=text] .choices__button:hover,
.choices[data-type*=text] .choices__button:focus{
  background-color:transparent!important;
  box-shadow:none!important;
  opacity:1!important;
  filter:brightness(1.2)!important;
}

/* Prevent first-paint flash of native multi-selects before Choices.js enhances them. */
.js select.project-picker{
  visibility:hidden;
}
/* Reserve the Choices control height up front for both the Teams and People
   filters. Without this the native <select multiple> renders as a tall list box
   (and the People one even flashes its first rows) and then collapses to ~42px
   when Choices enhances it a moment later, jumping the whole toolbar. Pinning the
   pre-enhancement box to the same height it will end up at keeps the layout still. */
.js .team-filter-shell:not(.has-choices) select{
  visibility:hidden;
  height:42px;
  min-height:42px;
  overflow:hidden;
}
.js.choices-unavailable select.project-picker,
.js.choices-unavailable .team-filter-shell select{
  visibility:visible;
  height:auto;
}


/* Tempo day summaries in weekly grid */
.tempo-grid th:nth-child(1),.tempo-grid td:nth-child(1){width:14%!important}
.tempo-grid th:nth-child(n+2):nth-child(-n+6),.tempo-grid td:nth-child(n+2):nth-child(-n+6){width:13%!important}
.tempo-grid th:nth-child(7),.tempo-grid td:nth-child(7){width:11%!important}
.tempo-grid th:nth-child(8),.tempo-grid td:nth-child(8){width:10%!important}
.tempo-cell{vertical-align:top;border-left:3px solid transparent;transition:background .18s ease,border-color .18s ease}
.tempo-cell.tempo-match{border-left-color:var(--ok);background:rgba(16,185,129,.045)}
.tempo-cell.tempo-mismatch,.tempo-cell.tempo-unplanned{border-left-color:var(--warn);background:rgba(245,158,11,.055)}
.tempo-cell.tempo-missing{border-left-color:var(--danger);background:rgba(239,68,68,.045)}
.day-cell-head{display:flex;align-items:center;justify-content:space-between;gap:6px;margin-bottom:5px}
.tempo-total{display:inline-flex;align-items:center;min-height:22px;padding:2px 7px;border-radius:999px;background:rgba(255,255,255,.07);border:1px solid var(--line);color:var(--text-2);font-size:11px;font-weight:650;font-variant-numeric:tabular-nums}
.icon-btn.tempo-refresh{width:24px!important;min-width:24px!important;height:24px!important;min-height:24px!important;padding:0!important;border-radius:8px!important;display:grid;place-items:center;color:var(--muted);background:var(--surface);border:1px solid var(--line);box-shadow:none;font-size:14px;line-height:1}
.icon-btn.tempo-refresh:hover{color:var(--text);border-color:rgba(113,112,255,.55);background:rgba(113,112,255,.14)}
.tempo-cell.syncing{opacity:.72;pointer-events:none}.tempo-cell.syncing .tempo-refresh{animation:tempo-spin .8s linear infinite}@keyframes tempo-spin{to{transform:rotate(360deg)}}
.tempo-projects{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px;min-height:20px}
.tempo-chip{display:inline-flex;align-items:center;gap:4px;max-width:100%;padding:2px 6px;border-radius:999px;border:1px solid rgba(255,255,255,.1);font-size:10.5px;line-height:1.25;color:var(--text-2);background:rgba(255,255,255,.045);font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tempo-chip b{font-weight:650;color:var(--text)}.tempo-chip.not-planned{border-color:rgba(245,158,11,.45);background:rgba(245,158,11,.12);color:#fde68a}.tempo-empty{font-size:10.5px;color:var(--muted-2);font-style:italic}
.tempo-grid .choices__inner{min-height:32px!important}.tempo-grid textarea{min-height:74px}
@media(max-width:1100px){.tempo-grid th:nth-child(1),.tempo-grid td:nth-child(1){width:16%!important}.tempo-grid th:nth-child(n+2):nth-child(-n+6),.tempo-grid td:nth-child(n+2):nth-child(-n+6){width:12.5%!important}.tempo-grid th:nth-child(7),.tempo-grid td:nth-child(7){width:11%!important}.tempo-grid th:nth-child(8),.tempo-grid td:nth-child(8){width:10.5%!important}.tempo-chip{font-size:10px;padding:2px 5px}}

/* Tempo details compact cell + modal refresh UX */
.table-wrap{max-height:none!important;overflow-y:visible!important}
.tempo-cell{vertical-align:top;border-left:3px solid transparent;transition:background .18s ease,border-color .18s ease,box-shadow .18s ease}
.tempo-cell.tempo-match{border-left-color:var(--ok);background:rgba(16,185,129,.035)}
.tempo-cell.tempo-mismatch,.tempo-cell.tempo-unplanned,.tempo-cell.tempo-has-warning{border-left-color:var(--warn);background:rgba(245,158,11,.055)}
.tempo-cell.tempo-missing{border-left-color:var(--danger);background:rgba(239,68,68,.04)}
.tempo-cell.tempo-has-warning{box-shadow:inset 0 0 0 1px rgba(245,158,11,.16)}
.day-cell-head{display:flex;align-items:center;justify-content:flex-start;gap:6px;margin-bottom:7px;min-height:26px}
.tempo-hours-link{display:inline-flex!important;align-items:center;gap:6px;width:auto!important;min-width:0!important;min-height:26px!important;padding:2px 8px!important;border-radius:999px!important;background:rgba(255,255,255,.065)!important;border:1px solid var(--line)!important;box-shadow:none!important;color:var(--text)!important;font-size:12px!important;font-weight:650!important;line-height:1!important;cursor:pointer}
.tempo-hours-link:hover{background:rgba(113,112,255,.14)!important;border-color:rgba(113,112,255,.55)!important;transform:none!important}
.tempo-total{padding:0;border:0;background:transparent;color:inherit;font-size:12px;font-weight:700;font-variant-numeric:tabular-nums}
.tempo-warning{display:inline-grid;place-items:center;width:18px;height:18px;border-radius:50%;background:rgba(245,158,11,.18);border:1px solid rgba(245,158,11,.42);color:#fbbf24;font-size:11px;line-height:1}
.tempo-cell.syncing{opacity:.72;pointer-events:none}.tempo-cell.syncing .tempo-hours-link{animation:tempo-pulse .8s ease-in-out infinite alternate}@keyframes tempo-pulse{to{box-shadow:0 0 0 4px rgba(113,112,255,.12)!important}}
.tempo-projects{display:none!important}
.tempo-dialog{width:min(560px,calc(100vw - 28px));padding:0;border:1px solid var(--line);border-radius:20px;background:#0d0f12;color:var(--text);box-shadow:0 28px 90px rgba(0,0,0,.62)}
.tempo-dialog::backdrop{background:rgba(0,0,0,.68);backdrop-filter:blur(5px)}
.tempo-dialog-card{padding:20px;margin:0;background:radial-gradient(circle at 100% 0,rgba(113,112,255,.18),transparent 18rem),var(--panel)}
.tempo-dialog-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:16px}.tempo-dialog-head h2{margin:0;font-size:24px;letter-spacing:-.03em}.tempo-dialog-head p{margin:4px 0 0;color:var(--muted);font-size:13px}.tempo-dialog-close{width:36px!important;min-width:36px!important;padding:0!important;font-size:22px!important;line-height:1!important}
.tempo-dialog-total{display:flex;align-items:baseline;gap:10px;padding:12px 14px;margin-bottom:12px;border-radius:14px;background:rgba(255,255,255,.05);border:1px solid var(--line)}.tempo-dialog-total span{font-size:28px;font-weight:700;font-variant-numeric:tabular-nums}.tempo-dialog-total small{color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.08em}
.tempo-dialog-projects{display:grid;gap:8px;max-height:50vh;overflow:auto;padding-right:2px}.tempo-project-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px 12px;align-items:center;padding:11px 12px;border-radius:14px;border:1px solid var(--line);background:rgba(255,255,255,.035)}.tempo-project-row.not-planned{border-color:rgba(245,158,11,.42);background:rgba(245,158,11,.09)}.tempo-project-row strong{display:block;font-size:13px}.tempo-project-row span{display:block;color:var(--muted);font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tempo-project-hours{font-size:15px;font-weight:700;font-variant-numeric:tabular-nums}.tempo-project-warning{grid-column:1/-1;display:inline-flex;align-items:center;gap:6px;width:max-content;padding:3px 8px;border-radius:999px;background:rgba(245,158,11,.15);border:1px solid rgba(245,158,11,.35);color:#fde68a;font-size:11px;font-weight:650}.tempo-empty-state{padding:18px;border-radius:14px;border:1px dashed var(--line);color:var(--muted);text-align:center}.tempo-dialog-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:16px}
@media(max-width:640px){.tempo-dialog-actions{display:grid}.tempo-project-row{grid-template-columns:1fr}.tempo-project-hours{justify-self:start}}


/* ============================================================
   FINAL OVERRIDES — weekly/monthly grid UX polish (v20260529k)
   1) Native browser scroll + working sticky header
   2) Time-tracked (Nh) cell buttons that fit the cell
   3) Readable project multi-select chips + roomy dropdown
   4) Tempo details dialog: real table, centered, polished
   ============================================================ */

/* 1) NATIVE PAGE SCROLL + STICKY HEADER ---------------------- */
/* table-wrap must NOT be its own scroll container, otherwise the
   sticky thead anchors to a non-scrolling box and never sticks.
   Letting it overflow visibly hands scrolling back to the browser
   window and lets position:sticky anchor to the viewport. */
.table-wrap{
  max-height:none!important;
  overflow:visible!important;
  border-top:1px solid var(--line);
}
.excel-grid thead th{
  position:sticky!important;
  top:0!important;
  z-index:5!important;
  background:#101114!important;
  box-shadow:0 1px 0 var(--line);
}
/* keep the sticky first column above body cells but below header row */
.excel-grid tbody .sticky{z-index:2}
.excel-grid thead th.sticky{z-index:6!important}

/* 2) TIME-TRACKED CELL BUTTON ------------------------------- */
.day-cell-head{
  display:flex;align-items:center;justify-content:flex-start;
  gap:6px;margin-bottom:8px;min-height:0;
}
.tempo-hours-link{
  display:inline-flex!important;align-items:center;justify-content:center;
  gap:6px;width:100%!important;min-width:0!important;
  min-height:30px!important;padding:5px 10px!important;
  border-radius:9px!important;
  background:rgba(255,255,255,.05)!important;
  border:1px solid var(--line)!important;
  box-shadow:none!important;color:var(--text)!important;
  font-size:13px!important;font-weight:650!important;line-height:1!important;
  font-variant-numeric:tabular-nums;cursor:pointer;
  transition:background .15s ease,border-color .15s ease;
}
.tempo-hours-link:hover{
  background:rgba(113,112,255,.16)!important;
  border-color:rgba(113,112,255,.55)!important;transform:none!important;
}
.tempo-total{padding:0;border:0;background:transparent;color:inherit;font-size:13px;font-weight:700}
/* colour the button itself by match state so 0h vs real hours reads instantly */
.tempo-cell.tempo-match .tempo-hours-link{background:rgba(16,185,129,.14)!important;border-color:rgba(16,185,129,.4)!important;color:#6ee7b7!important}
.tempo-cell.tempo-missing .tempo-hours-link{color:var(--muted)!important}
.tempo-cell.tempo-mismatch .tempo-hours-link,
.tempo-cell.tempo-unplanned .tempo-hours-link,
.tempo-cell.tempo-has-warning .tempo-hours-link{background:rgba(245,158,11,.14)!important;border-color:rgba(245,158,11,.42)!important;color:#fcd34d!important}
.tempo-warning{display:inline-grid;place-items:center;width:16px;height:16px;border-radius:50%;background:rgba(245,158,11,.22);border:1px solid rgba(245,158,11,.5);color:#fbbf24;font-size:10px;line-height:1}

/* 3) PROJECT MULTI-SELECT CHIPS ----------------------------- */
/* let chips wrap fully and show the whole project name */
.day-cell .choices__inner,.adhoc-cell .choices__inner{
  min-height:34px!important;padding:4px 6px!important;
}
.day-cell .choices__list--multiple,
.adhoc-cell .choices__list--multiple{gap:4px!important}
.day-cell .choices__list--multiple .choices__item,
.adhoc-cell .choices__list--multiple .choices__item{
  font-size:11px!important;line-height:1.3!important;
  padding:3px 7px!important;
  max-width:100%!important;
  white-space:normal!important;          /* allow names to wrap, not clip */
  overflow:visible!important;text-overflow:clip!important;
  word-break:break-word!important;
  border:1px solid rgba(113,112,255,.4)!important;
  background:rgba(113,112,255,.2)!important;color:var(--text)!important;
}
.day-cell .choices__list--multiple .choices__item.choices__placeholder,
.adhoc-cell .choices__list--multiple .choices__item.choices__placeholder{
  background:transparent!important;border:0!important;color:var(--muted)!important;
}
/* roomy dropdown so the FULL project name is readable while picking */
.choices__list--dropdown,.choices__list[aria-expanded]{
  min-width:320px!important;width:max-content!important;max-width:420px!important;
}
.choices__list--dropdown .choices__item--selectable{
  white-space:normal!important;line-height:1.35!important;padding:9px 12px!important;
}

/* 4) TEMPO DETAILS DIALOG ----------------------------------- */
.tempo-dialog{
  width:min(1040px,calc(100vw - 48px));padding:0;margin:auto;   /* center vertically + horizontally */
  max-height:calc(100vh - 48px);overflow:hidden;
  border:1px solid var(--line);border-radius:18px;
  background:#0d0f12;color:var(--text);
  box-shadow:0 30px 90px rgba(0,0,0,.65);
}
.tempo-dialog::backdrop{background:rgba(4,5,7,.62);backdrop-filter:blur(8px)}
.tempo-dialog-card{padding:24px;margin:0;max-height:calc(100vh - 48px);display:flex;flex-direction:column;background:radial-gradient(circle at 100% 0,rgba(113,112,255,.16),transparent 16rem),var(--panel);overflow:auto;overscroll-behavior:contain;border-radius:inherit}
.tempo-dialog-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:16px}
.tempo-dialog-head h2{margin:0;font-size:23px;letter-spacing:-.02em}
.tempo-dialog-head p{margin:5px 0 0;color:var(--muted);font-size:13px}
/* single, clear close affordance in the top-right corner */
.tempo-dialog-close{
  position:relative;width:34px!important;height:34px!important;min-width:34px!important;min-height:34px!important;
  flex:0 0 auto;padding:0!important;display:grid;place-items:center;
  font-size:20px!important;line-height:1!important;border-radius:10px!important;
  background:var(--surface)!important;border:1px solid var(--line)!important;color:var(--muted)!important;box-shadow:none!important;
}
.tempo-dialog-close:hover{background:rgba(239,68,68,.14)!important;border-color:rgba(239,68,68,.4)!important;color:#fecaca!important}
.tempo-dialog-total{display:flex;align-items:baseline;gap:10px;padding:12px 14px;margin-bottom:14px;border-radius:12px;background:rgba(255,255,255,.045);border:1px solid var(--line)}
.tempo-dialog-total span{font-size:26px;font-weight:700;font-variant-numeric:tabular-nums}
.tempo-dialog-total small{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.09em}

/* real table for reported time — the dialog owns scrolling for long reports */
.tempo-dialog-table-wrap{flex:1 1 auto;min-height:0;max-height:none;overflow:auto;border:1px solid var(--line);border-radius:12px;background:var(--panel);overscroll-behavior:contain}
.tempo-dialog-table-wrap.is-empty{border-style:dashed}
.tempo-dialog-table{width:100%;table-layout:fixed;border-collapse:separate;border-spacing:0;font-size:13px}
.tempo-dialog-table th:nth-child(1),.tempo-dialog-table td:nth-child(1){width:260px}
.tempo-dialog-table th:nth-child(3),.tempo-dialog-table td:nth-child(3){width:72px}
.tempo-dialog-table thead th{
  position:sticky;top:0;z-index:1;
  text-align:left;
  padding:9px 12px;background:#14161a;color:var(--muted);
  font-size:10.5px;font-weight:600;text-transform:uppercase;letter-spacing:.07em;
  border-bottom:1px solid var(--line);
}
.tempo-dialog-table thead th.num{text-align:right}
.tempo-dialog-table tbody td{padding:10px 12px;border-bottom:1px solid var(--line-soft);vertical-align:middle}
.tempo-dialog-table tbody tr:last-child td{border-bottom:0}
.tempo-dialog-table .tempo-project-key{white-space:normal;min-width:0}
.tempo-dialog-table .tempo-project-key strong{display:block;font-weight:700;font-size:13px;margin-bottom:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tempo-dialog-table .tempo-project-key small{display:block;color:var(--muted);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tempo-dialog-table .tempo-project-repeat{display:inline-grid;place-items:center;width:22px;height:22px;border-radius:999px;background:rgba(255,255,255,.06);color:var(--muted)}
.tempo-dialog-table .tempo-task-cell{min-width:0;color:var(--text-2)}
.tempo-dialog-table .tempo-task-cell strong{display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text);font-size:13px;font-weight:650}
.tempo-dialog-table .tempo-task-cell small{display:block;margin-top:3px;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted);font-size:12px}
.tempo-dialog-table .tempo-task-cell .tempo-task-day{display:inline-block;margin-bottom:4px;padding:1px 8px;border-radius:999px;background:rgba(255,255,255,.07);color:var(--muted);font-size:11px;font-weight:650;letter-spacing:.02em}
.tempo-dialog-table .tempo-project-name{color:var(--text-2);max-width:0;width:99%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tempo-dialog-table .tempo-project-hours{text-align:right;white-space:nowrap;font-weight:700;font-variant-numeric:tabular-nums}
.tempo-dialog-table tr.not-planned{background:rgba(245,158,11,.07)}
.tempo-dialog-table tr.not-planned .tempo-project-hours{color:#fcd34d}
.tempo-project-badge{display:inline-block;margin-left:8px;padding:2px 7px;border-radius:999px;background:rgba(245,158,11,.16);border:1px solid rgba(245,158,11,.4);color:#fde68a;font-size:10px;font-weight:650;vertical-align:middle}
.tempo-empty-row td{border-bottom:0!important;padding:0!important}
.tempo-empty-state{padding:22px;color:var(--muted);text-align:center}
.tempo-dialog-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:18px;position:sticky;bottom:0;z-index:2;padding-top:12px;background:linear-gradient(180deg,rgba(13,15,18,0),var(--panel) 42%)}
.tempo-dialog-actions .tdr-icon{margin-right:2px}
@media(max-width:760px), (max-height:760px){
  .tempo-dialog{width:min(1040px,calc(100vw - 28px));max-height:calc(100vh - 28px);overflow:hidden}
  .tempo-dialog-card{padding:20px;max-height:calc(100vh - 28px);overflow:auto;overscroll-behavior:contain}
  .tempo-dialog-table-wrap{overflow:auto}
}
@media(max-width:640px){.tempo-dialog-actions{display:grid}.tempo-dialog-actions .button{width:100%}.tempo-dialog-table th:nth-child(1),.tempo-dialog-table td:nth-child(1){width:150px}.tempo-dialog-table th:nth-child(3),.tempo-dialog-table td:nth-child(3){width:58px}}
/* Project/hour-rule forms are taller than the viewport. Make the modal itself own
   wheel/touch scrolling so the page behind it does not scroll under the popup. */
.project-limit-dialog.tempo-dialog{max-height:calc(100dvh - 48px);overflow:auto;overscroll-behavior:contain}
.project-limit-dialog .tempo-dialog-card{max-height:none;overflow:visible}
.project-limit-dialog .tempo-dialog-actions{position:sticky;bottom:0;z-index:2;padding-top:12px;background:linear-gradient(180deg,rgba(13,15,18,0),var(--panel) 38%)}
.fixed-email-fields{display:grid;gap:12px;margin-top:10px}.fixed-email-fields[hidden]{display:none!important}.fixed-email-receivers{display:grid!important;gap:6px}.fixed-email-receivers>span{display:block;font-weight:700;color:var(--text)}.fixed-email-toggle{margin-bottom:0}
@media(max-width:760px), (max-height:760px){.project-limit-dialog.tempo-dialog{max-height:calc(100dvh - 28px);overflow:auto}.project-limit-dialog .tempo-dialog-card{max-height:none;overflow:visible}}

/* sticky thead needs no clipping ancestor: main had overflow:hidden which
   silently disables position:sticky on the table header. */
main{overflow:visible!important}
/* main is a flex child of body (sidebar + main). Its default min-width:auto
   refuses to shrink below the content's intrinsic width, so the very wide month
   grid stretches main past the viewport — the whole page then scrolls sideways,
   dragging the sticky sidebar with it, and the table's own overflow-x:auto never
   engages. min-width:0 lets main stay viewport-width so horizontal scrolling is
   confined to the table-wrap and the sidebar stays put. */
main{min-width:0}
/* Keep the sidebar at its fixed width (don't let the flex row shrink it). In the
   <=1100px stacked layout body is display:block, so this is inert there. */
.sidebar{flex:0 0 auto}

/* the grid card clipped its content (overflow:hidden), which disabled the
   sticky table header. Let it overflow so position:sticky anchors to viewport. */
.grid-card{overflow:visible!important}

/* Chips: single-line, ellipsis-truncated (no ugly mid-word wrap).
   Full name is available on hover (title set via JS) and in the wide dropdown. */
.day-cell .choices__list--multiple .choices__item,
.adhoc-cell .choices__list--multiple .choices__item{
  white-space:nowrap!important;
  overflow:hidden!important;text-overflow:ellipsis!important;
  word-break:normal!important;
  max-width:100%!important;display:inline-flex!important;align-items:center!important;
}
/* let the truncated text node itself ellipsize inside the flex item */
.day-cell .choices__list--multiple .choices__item,
.adhoc-cell .choices__list--multiple .choices__item{min-width:0!important}

/* weekly-plan-cell-selector-title-wrap: selected project/user chips in weekly plan cells
   show the full title while keeping the remove × aligned in a fixed right column. */
.day-cell .choices__list--multiple .choices__item,
.adhoc-cell .choices__list--multiple .choices__item{
  display:inline-grid!important;
  grid-template-columns:minmax(0,1fr) auto!important;
  align-items:center!important;
  column-gap:4px!important;
  max-width:100%!important;
  white-space:normal!important;
  overflow:visible!important;
  text-overflow:clip!important;
  overflow-wrap:anywhere!important;
  word-break:break-word!important;
  line-height:1.22!important;
  text-align:left!important;
}
.day-cell .choices__list--multiple .choices__item .choices__button,
.adhoc-cell .choices__list--multiple .choices__item .choices__button{
  grid-column:2!important;
  align-self:center!important;
  justify-self:center!important;
  flex:0 0 auto!important;
  width:14px!important;
  min-width:14px!important;
  height:14px!important;
  min-height:14px!important;
  margin:0!important;
}
.project-picker-lite span{
  display:inline-flex!important;
  align-items:center!important;
  text-align:left!important;
  white-space:normal!important;
  overflow:visible!important;
  text-overflow:clip!important;
  overflow-wrap:anywhere!important;
  word-break:break-word!important;
  line-height:1.22!important;
}

/* Users page */
.user-edit{grid-template-columns:minmax(220px,1.1fr) minmax(220px,1.1fr) minmax(160px,.85fr) minmax(120px,.6fr) minmax(180px,.9fr) auto;align-items:center}
@media(max-width:1100px){.user-edit{grid-template-columns:1fr}}


/* Week carousel: direct week activation without an extra Open click */
.week-carousel{justify-content:flex-end;max-width:1120px}
.week-carousel-strip{display:flex;align-items:center;gap:7px;padding:4px;border:1px solid var(--line);border-radius:14px;background:rgba(255,255,255,.025);overflow:auto;scrollbar-width:thin}
.week-pill{display:grid;gap:1px;min-width:84px;padding:7px 10px;border-radius:10px;text-decoration:none;color:var(--muted);border:1px solid transparent;text-align:center;transition:background .15s,border-color .15s,color .15s}
.week-pill strong{color:var(--text-2);font-size:12px;font-weight:700;letter-spacing:.02em}
.week-pill span{font-size:10px;white-space:nowrap}
.week-pill:hover{background:var(--surface);border-color:rgba(113,112,255,.35);color:var(--text)}
.week-pill.is-active{background:linear-gradient(180deg,rgba(113,112,255,.22),rgba(113,112,255,.1));border-color:rgba(113,112,255,.55);color:var(--text)}
.week-pill.is-active strong{color:var(--accent-hover)}
.week-selector-form noscript{display:contents}
.js .week-selector-form noscript{display:none}
@media(max-width:1280px){.week-carousel{justify-content:flex-start}.week-carousel-strip{order:5;width:100%}}

/* Tempo status semantics: tracked-without-plan is neutral; red only after the next-day-midday deadline. */
.tempo-cell.tempo-tracked{border-left-color:rgba(113,112,255,.75);background:rgba(113,112,255,.035)}
.tempo-cell.tempo-planned{border-left-color:rgba(255,255,255,.16);background:rgba(255,255,255,.018)}
.tempo-cell.tempo-absence{border-left-color:rgba(156,163,175,.78)!important;background:rgba(148,163,184,.12)!important;box-shadow:inset 0 0 0 1px rgba(148,163,184,.12)}
.tempo-cell.tempo-tracked .tempo-hours-link{background:rgba(113,112,255,.12)!important;border-color:rgba(113,112,255,.35)!important;color:#c7d2fe!important}
.tempo-cell.tempo-planned .tempo-hours-link{background:rgba(255,255,255,.045)!important;border-color:var(--line)!important;color:var(--muted)!important}
.tempo-cell.tempo-absence .tempo-hours-link{background:rgba(148,163,184,.18)!important;border-color:rgba(148,163,184,.45)!important;color:#e5e7eb!important}


/* Copy empty days from previous week controls */
.swimlane-head{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%}
.copy-prev-btn{width:auto!important;min-width:0!important;min-height:26px!important;padding:4px 8px!important;border-radius:8px!important;border:1px solid rgba(113,112,255,.34)!important;background:rgba(113,112,255,.12)!important;color:#c7d2fe!important;box-shadow:none!important;font-size:11px!important;font-weight:650!important;line-height:1.2!important;white-space:nowrap;cursor:pointer}
.copy-prev-btn:hover{background:rgba(113,112,255,.2)!important;border-color:rgba(113,112,255,.58)!important;color:#fff!important;transform:none!important}
.copy-prev-btn:disabled{opacity:.65;cursor:wait}
.user-copy{display:inline-flex!important;margin-top:7px;max-width:100%}
.swimlane-copy{margin-left:auto}
@media(max-width:760px){.swimlane-head{display:grid}.swimlane-copy,.user-copy{width:100%!important}}

/* Week/month mode controls and horizontal month grid */
.mode-toggle{display:inline-flex;align-items:center;gap:4px;padding:4px;border:1px solid var(--line);border-radius:12px;background:rgba(255,255,255,.025)}
.mode-pill{display:inline-grid;place-items:center;min-width:64px;height:30px;padding:0 11px;border-radius:9px;text-decoration:none;color:var(--muted);font-size:12px;font-weight:700;letter-spacing:.02em}
.mode-pill:hover{background:var(--surface);color:var(--text)}
.mode-pill.is-active{background:rgba(113,112,255,.2);border:1px solid rgba(113,112,255,.52);color:var(--accent-hover)}
.mode-month .table-wrap{overflow-x:auto!important;overflow-y:visible!important;max-width:100%;padding-bottom:10px;scrollbar-width:thin}
.mode-month.excel-grid{width:max-content!important;min-width:calc(260px + (var(--day-count) * 172px) + 360px)!important;table-layout:fixed!important}
.mode-month.excel-grid th:nth-child(1),.mode-month.excel-grid td:nth-child(1){width:220px!important;min-width:220px!important}
.mode-month.excel-grid th:nth-child(n+2),.mode-month.excel-grid td:nth-child(n+2){width:172px!important;min-width:172px!important}
.mode-month.excel-grid th:nth-last-child(2),.mode-month.excel-grid td:nth-last-child(2){width:190px!important;min-width:190px!important}
.mode-month.excel-grid th:nth-last-child(1),.mode-month.excel-grid td:nth-last-child(1){width:170px!important;min-width:170px!important}
.mode-month.excel-grid thead th{top:0!important}
.mode-month.excel-grid .day-cell{min-width:172px!important}
.mode-month.excel-grid .choices__list--dropdown,.mode-month.excel-grid .choices__list[aria-expanded]{min-width:360px!important;max-width:460px!important}
@media(max-width:1280px){.mode-toggle{order:4}.week-carousel{gap:7px}}

/* Performance + sticky-grid overrides (v20260529l) */
.project-picker-lite{display:flex;width:100%;min-height:34px;align-items:flex-start;gap:4px;flex-wrap:wrap;text-align:left;padding:4px 6px!important;border:1px solid var(--line)!important;border-radius:9px!important;background:rgba(255,255,255,.035)!important;box-shadow:none!important;color:var(--text)!important;cursor:pointer}
.project-picker-lite:hover{border-color:rgba(113,112,255,.5)!important;background:rgba(113,112,255,.08)!important;transform:none!important}
.project-picker-lite span{display:inline-flex;max-width:100%;min-width:0;padding:3px 7px;border-radius:999px;border:1px solid rgba(113,112,255,.4);background:rgba(113,112,255,.2);color:var(--text);font-size:11px;line-height:1.25;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.project-picker-lite em{color:var(--muted);font-size:12px;font-style:normal;padding:3px 2px}
.has-choices .project-picker-lite{display:none!important}
.is-enhancing .project-picker-lite{opacity:.65;pointer-events:none}
/* Read-only booking cell (no weekly-plan:edit): the selected items are shown as plain
   labels, never an editable control — no border, no hover, default cursor. */
.project-picker-lite.is-readonly{cursor:default;border-color:transparent!important;background:transparent!important;padding-left:0!important}
.project-picker-lite.is-readonly:hover{border-color:transparent!important;background:transparent!important}

/* Horizontal + vertical sticky grid: users and team lanes remain visible at left; days remain visible at top. */
.excel-grid .sticky{position:sticky!important;left:0!important;z-index:4!important;background:#101114!important;box-shadow:1px 0 0 var(--line)}
.excel-grid tbody .sticky{z-index:4!important;background:#0f1011!important}
.excel-grid thead th{position:sticky!important;top:0!important;z-index:8!important;background:#101114!important}
.excel-grid thead th.sticky{left:0!important;z-index:12!important;background:#101114!important}
.teamrow .team-sticky-cell{left:0!important;z-index:7!important;padding:8px 10px!important;background:linear-gradient(90deg,#15171b,#101114)!important;border-right:1px solid var(--line)!important}
.teamrow .teamrow-fill{background:linear-gradient(90deg,rgba(113,112,255,.10),rgba(113,112,255,.025))!important;border-top:1px solid rgba(113,112,255,.18)!important;border-bottom:1px solid rgba(113,112,255,.14)!important;padding:0!important}
.teamrow .swimlane-head{min-height:0}.teamrow .swimlane-head .lane-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:700;color:var(--accent-hover)}

/* Month mode: keep horizontal scrolling on the grid only, with native vertical page scroll. */
.grid-card.mode-month{position:relative}
/* The month grid scrolls inside its own bounded box on BOTH axes so the day/date
   header (position:sticky;top:0) and the first column anchor to a scrollport that
   actually scrolls vertically and stay pinned. (When the wrap only scrolled
   horizontally and the page scrolled vertically, the sticky header anchored to the
   non-scrolling wrap and rode away on vertical scroll.) */
.grid-card.mode-month .table-wrap{overflow:auto!important;max-height:calc(100vh - 230px)!important;max-width:100%;padding-bottom:12px;scrollbar-width:thin;overscroll-behavior:contain;cursor:grab}
/* While dragging the grid to pan, force the grabbing cursor and stop text from
   being selected under the pointer. Controls keep their own cursors at rest. */
.grid-card .table-wrap.is-grabbing{cursor:grabbing;user-select:none}
.grid-card .table-wrap.is-grabbing *{cursor:grabbing!important}
/* Floating month-grid pan control: fixed to the viewport bottom so the wide grid
   can be scrolled horizontally without scrolling down to the native scrollbar. */
.month-hscroll{position:fixed;left:calc(50% + 134px);bottom:20px;transform:translateX(-50%);z-index:50;display:flex;gap:6px;padding:6px;border-radius:999px;background:rgba(13,15,18,.92);border:1px solid rgba(113,112,255,.45);box-shadow:0 18px 50px rgba(0,0,0,.5);backdrop-filter:blur(10px)}
.month-hscroll[hidden]{display:none}
.month-hscroll button{width:42px;height:42px;min-height:0;padding:0;border-radius:50%;font-size:22px;line-height:1;background:var(--surface);color:var(--text);border:1px solid var(--line-soft);box-shadow:none}
.month-hscroll button:hover:not(:disabled){background:var(--accent-bg);color:#fff;border-color:rgba(113,112,255,.55)}
.month-hscroll button:disabled{opacity:.3;cursor:default}
@media(max-width:1100px){.month-hscroll{left:50%}}
.mode-month.excel-grid{border-collapse:separate!important;border-spacing:0!important}
.mode-month.excel-grid th:nth-child(1),.mode-month.excel-grid td:nth-child(1){width:235px!important;min-width:235px!important;max-width:235px!important}
.mode-month.excel-grid th:nth-child(n+2),.mode-month.excel-grid td:nth-child(n+2){width:168px!important;min-width:168px!important}
.mode-month.excel-grid th:nth-last-child(2),.mode-month.excel-grid td:nth-last-child(2){width:185px!important;min-width:185px!important}
.mode-month.excel-grid th:nth-last-child(1),.mode-month.excel-grid td:nth-last-child(1){width:175px!important;min-width:175px!important}

/* Navigation loader without blocking the page forever if network is slow. */
html.is-navigating::before{content:'';position:fixed;left:0;top:0;height:3px;width:100%;z-index:10000;background:linear-gradient(90deg,transparent,var(--accent),var(--accent-hover),transparent);background-size:40% 100%;background-repeat:no-repeat;animation:spa-progress 1.1s ease-in-out infinite}
@keyframes spa-progress{0%{background-position:-40% 0}100%{background-position:140% 0}}
html.is-navigating::after{content:'Loading…';position:fixed;right:22px;bottom:22px;z-index:9999;padding:12px 16px;border-radius:999px;border:1px solid rgba(113,112,255,.45);background:rgba(13,15,18,.92);color:var(--text);box-shadow:0 18px 50px rgba(0,0,0,.42);backdrop-filter:blur(10px);font-weight:700;font-size:13px}

/* Team header layout fix (v20260529m): keep copy button under the team name in the sticky lane. */
.teamrow .team-sticky-cell{vertical-align:middle!important;height:auto!important;padding:3px 10px!important}
.teamrow .swimlane-head{display:flex!important;flex-direction:row!important;align-items:center!important;justify-content:flex-start!important;gap:6px!important;width:100%;min-height:0!important}
.teamrow .swimlane-head .lane-name{display:inline-block;max-width:100%;font-weight:700;color:var(--accent-hover);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.2}
.teamrow .swimlane-copy{margin-left:0!important;align-self:flex-start!important;max-width:100%!important;white-space:normal!important;text-align:left!important;line-height:1.15!important;padding:5px 9px!important}

/* Avatars and compact row action menus (v20260530g) */
.avatar{display:inline-grid;place-items:center;flex:0 0 auto;overflow:hidden;border-radius:50%;background:linear-gradient(135deg,rgba(113,112,255,.95),rgba(155,140,255,.82));border:1px solid rgba(255,255,255,.16);box-shadow:0 8px 24px rgba(0,0,0,.22);color:#fff;font-weight:800;letter-spacing:.02em;text-transform:uppercase}
.avatar img{width:100%;height:100%;object-fit:cover;display:block}.avatar .project-icon-fallback{display:none}.avatar.is-fallback .project-icon-fallback{display:grid;place-items:center;width:100%;height:100%}.avatar.is-fallback img{display:none!important}.avatar-plan{width:38px;height:38px;font-size:12px}.avatar-user{width:48px;height:48px;font-size:14px}
/* Project icons reuse the .avatar base (gradient + img cover + monogram) but sit in a
   rounded square rather than a circle, which suits Jira project logos. */
.project-icon{flex:0 0 auto;border-radius:7px}.project-icon-sm{width:22px;height:22px;font-size:9px;border-radius:6px}.dashboard-item-badge{display:inline-flex;align-items:center;gap:6px;min-width:0}
.project-icon-field{display:grid;gap:6px}.project-icon-field-label{font-weight:510;font-size:13px;color:var(--text-2)}.project-icon-edit{display:flex;align-items:center;gap:14px}.project-icon-controls{display:flex;gap:8px;flex-wrap:wrap}.project-icon-upload-btn{width:auto;margin:0;cursor:pointer}
/* Keep the icon a centered grid box even under .user-card-mini's generic span rule
   (which would otherwise flatten the monogram fallback). Images fill it either way. */
.user-card-mini .project-icon{display:inline-grid}
.user-avatar-wrap{position:relative;flex:0 0 auto;display:inline-flex;line-height:0}.presence-dot{position:absolute;right:0;bottom:0;width:12px;height:12px;border-radius:50%;border:2px solid var(--surface);box-shadow:0 0 0 1px rgba(0,0,0,.2)}.presence-dot.is-online{background:var(--ok,#10b981)}.presence-dot.is-offline{background:var(--muted,#6b7280)}.user-card-mini{display:flex;align-items:center;gap:9px;min-width:0}.user-card-mini>div{display:grid;gap:2px;min-width:0}.user-card-mini strong,.user-card-mini span{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-identity{display:flex;align-items:center;gap:10px;min-width:0}.user-identity input{min-width:0}.user-edit{grid-template-columns:minmax(250px,1.35fr) minmax(190px,1fr) minmax(150px,.8fr) minmax(110px,.55fr) minmax(170px,.85fr) auto auto!important;align-items:center}.sync-avatar-btn{width:auto!important;white-space:nowrap!important;padding-left:10px!important;padding-right:10px!important}
.team-sticky-cell,.sticky.user{position:sticky!important;left:0;overflow:visible!important}.team-sticky-cell .row-actions,.sticky.user .row-actions{position:absolute;right:8px;top:8px;z-index:35;margin:0!important}.sticky.user{padding-right:44px!important}.teamrow .team-sticky-cell{padding-right:44px!important}.row-actions{display:inline-block;overflow:visible!important}.row-actions summary{list-style:none;display:inline-grid;place-items:center;width:28px;height:28px;border-radius:9px;border:1px solid var(--line);background:rgba(255,255,255,.045);color:var(--text-2);font-size:18px;font-weight:800;line-height:1;cursor:pointer}.row-actions summary::-webkit-details-marker{display:none}.row-actions[open] summary{background:rgba(113,112,255,.16);border-color:rgba(113,112,255,.52);color:#fff}.row-actions>button,.row-actions>form{position:absolute;z-index:50;right:0;left:auto;top:34px;min-width:0!important;max-width:none!important;border-radius:14px!important;overflow:visible!important}.teamrow .swimlane-actions{align-self:auto}.teamrow .swimlane-head{min-height:42px!important}.row-actions .copy-prev-btn{display:grid!important;grid-template-columns:minmax(0,1fr)!important;gap:3px!important;width:226px!important;max-width:none!important;min-width:226px!important;min-height:0!important;padding:11px 13px!important;box-shadow:0 18px 50px rgba(0,0,0,.42)!important;background:linear-gradient(180deg,#202330,#13161d)!important;border:1px solid rgba(113,112,255,.55)!important;text-align:left!important;border-radius:14px!important;color:#fff!important;white-space:normal!important}.row-actions .copy-prev-btn b{display:block;font-size:12px;font-weight:750;line-height:1.2;white-space:normal}.row-actions .copy-prev-btn small{display:block;color:var(--muted);font-size:11px;font-weight:500;line-height:1.25;white-space:normal}.row-actions .copy-prev-btn:hover{background:linear-gradient(180deg,#282b3a,#171a23)!important;border-color:rgba(130,143,255,.78)!important}.row-actions .copy-prev-btn:hover small{color:#d7dbff}
.tempo-grid .user-card-mini{align-items:flex-start}.tempo-grid .user-card-mini>div{padding-top:1px}.tempo-grid .user-card-mini strong{white-space:normal!important;overflow:visible!important;text-overflow:clip!important;overflow-wrap:anywhere;word-break:normal;line-height:1.18;max-width:100%}.tempo-grid .user-card-mini span:not(.avatar):not(.avatar-plan){white-space:normal!important;overflow:visible!important;text-overflow:clip!important;overflow-wrap:anywhere;line-height:1.18}
@media(max-width:1100px){.user-edit{grid-template-columns:1fr!important}.sync-avatar-btn{width:100%!important}.avatar-user{width:42px;height:42px}}
/* Day bulk actions and expanded team action popups (v20260530h) */
.day-head{position:relative;overflow:visible!important;padding-right:38px!important}.day-head-inner{display:flex;align-items:flex-start;justify-content:center;gap:6px;min-height:32px}.day-head-title{display:block;text-align:center;min-width:0}.day-actions{position:absolute;right:6px;top:7px;z-index:45}.day-actions>button{right:0;left:auto;top:34px}.row-actions .day-set-all-btn{display:grid!important;grid-template-columns:minmax(0,1fr)!important;gap:3px!important;width:242px!important;max-width:none!important;min-width:242px!important;min-height:0!important;padding:11px 13px!important;box-shadow:0 18px 50px rgba(0,0,0,.42)!important;background:linear-gradient(180deg,#202330,#13161d)!important;border:1px solid rgba(113,112,255,.55)!important;text-align:left!important;border-radius:14px!important;color:#fff!important;white-space:normal!important}.row-actions .day-set-all-btn b{display:block;font-size:12px;font-weight:750;line-height:1.2;white-space:normal}.row-actions .day-set-all-btn small{display:block;color:var(--muted);font-size:11px;font-weight:500;line-height:1.25;white-space:normal}.teamrow:has(.row-actions[open]) .team-sticky-cell{padding-bottom:78px!important}.teamrow:has(.row-actions[open]) .teamrow-fill{height:112px!important}.teamrow .row-actions>button{top:34px!important}.set-all-dialog-card{min-width:min(560px,calc(100vw - 44px));overflow:visible!important}.set-all-dialog-card .field-label{display:block;margin:4px 0 8px;color:var(--muted);font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.08em}.set-all-dialog-card .choices{margin-bottom:0}.set-all-dialog-card .choices__inner{min-height:48px}.set-all-dialog-card .choices__list--dropdown{z-index:80}

/* Bulk project action polish (v20260530i) */
details.row-actions:not([open])>.row-action-menu{display:none!important}
.row-actions>.row-action-menu{
  position:absolute;
  z-index:60;
  right:0;
  left:auto;
  top:34px;
  display:grid;
  gap:6px;
  width:238px;
  min-width:238px;
  padding:6px;
  border:1px solid rgba(113,112,255,.45);
  border-radius:16px;
  background:linear-gradient(180deg,#202330,#13161d);
  box-shadow:0 18px 50px rgba(0,0,0,.42);
}
.row-actions>.row-action-menu .copy-prev-btn{
  position:static!important;
  width:100%!important;
  min-width:0!important;
  border-radius:11px!important;
  box-shadow:none!important;
  background:rgba(255,255,255,.035)!important;
  border-color:rgba(255,255,255,.08)!important;
}
.row-actions>.row-action-menu .copy-prev-btn:hover{
  background:rgba(113,112,255,.16)!important;
  border-color:rgba(130,143,255,.65)!important;
}
.day-head{overflow:visible!important;vertical-align:top!important}
.day-actions{z-index:80!important}
.day-actions[open] summary{box-shadow:0 0 0 3px rgba(113,112,255,.12)}
.row-actions .day-set-all-btn{
  width:224px!important;
  min-width:224px!important;
  max-width:224px!important;
  right:0!important;
  top:32px!important;
}
.set-all-dialog{overflow:visible!important}
.set-all-dialog-card{width:min(1040px,calc(100vw - 48px));overflow:visible!important}
.set-all-dialog-card .choices{width:100%;margin-bottom:0;overflow:visible!important}
.set-all-dialog-card .choices__inner{min-height:42px!important;width:100%!important}
.set-all-dialog-card .choices__list--dropdown,
.set-all-dialog-card .choices__list[aria-expanded]{
  z-index:1000!important;
  width:100%!important;
  min-width:100%!important;
  max-width:none!important;
  left:0!important;
  right:0!important;
  border-radius:0 0 12px 12px!important;
}
.set-all-dialog-card .choices__list--dropdown .choices__item--selectable,
.set-all-dialog-card .choices__list[aria-expanded] .choices__item--selectable{white-space:normal!important}

/* Floating row/day action menus and full-width set-all selector (v20260530j) */
.row-actions.is-floating>.row-action-menu,
.row-actions.is-floating>button{
  position:fixed!important;
  left:var(--row-action-left)!important;
  right:auto!important;
  top:var(--row-action-top)!important;
  z-index:2147483647!important;
}
.row-actions.is-floating>.row-action-menu{
  display:grid!important;
  gap:6px!important;
  width:238px!important;
  min-width:238px!important;
  max-width:238px!important;
  padding:6px!important;
  border:1px solid rgba(113,112,255,.55)!important;
  border-radius:14px!important;
  background:rgba(22,24,34,.98)!important;
  box-shadow:0 22px 60px rgba(0,0,0,.56)!important;
  backdrop-filter:blur(10px);
}
.row-actions.is-floating>.row-action-menu .copy-prev-btn{
  position:static!important;
  width:100%!important;
  min-width:0!important;
  max-width:none!important;
  padding:9px 11px!important;
  border-radius:10px!important;
  box-shadow:none!important;
}
.row-actions.is-floating>button.day-set-all-btn{
  width:224px!important;
  min-width:224px!important;
  max-width:224px!important;
  padding:9px 12px!important;
  background:rgba(22,24,34,.98)!important;
  box-shadow:0 22px 60px rgba(0,0,0,.56)!important;
}
.row-actions.is-floating summary{position:relative;z-index:2147483647!important}
.set-all-dialog-card .choices__list--dropdown,
.set-all-dialog-card .choices__list[aria-expanded]{
  width:100%!important;
  min-width:100%!important;
  max-width:100%!important;
  box-sizing:border-box!important;
  transform:none!important;
  top:100%!important;
  bottom:auto!important;
}
.set-all-dialog-card .choices.is-flipped .choices__list--dropdown,
.set-all-dialog-card .choices.is-flipped .choices__list[aria-expanded]{
  top:100%!important;
  bottom:auto!important;
}
.set-all-dialog-card .choices__list--dropdown .choices__list,
.set-all-dialog-card .choices__list[aria-expanded] .choices__list{max-height:min(38vh,360px)!important}

/* Keep every action block above sticky grid/header/sidebar layers (v20260530l) */
.row-actions,
.row-actions[open],
.row-actions.is-floating,
.day-actions,
.user-actions,
.swimlane-actions{
  z-index:2147483647!important;
}
.row-actions>button,
.row-actions>.row-action-menu,
.row-actions summary,
.row-actions.is-floating>.row-action-menu,
.row-actions.is-floating>button,
.row-actions.is-floating summary,
.day-actions.is-floating,
.user-actions.is-floating,
.swimlane-actions.is-floating{
  z-index:2147483647!important;
}
.excel-grid thead th.has-day-actions,
.excel-grid thead th.has-day-actions:has(.row-actions[open]){
  z-index:2147483646!important;
  overflow:visible!important;
}
/* When a row's ⋯ menu is open, lift that row's sticky cell above the rows below it.
   The menu is painted inside the sticky <td> (z-index:4); without this, the next
   project/user row's sticky cell (same z-index, later in the DOM) covers the menu's
   bottom. This rescues the non-floating fallback regardless of menu position. */
.excel-grid tbody tr:has(.row-actions[open]) .sticky{z-index:50!important}

/* Weekly plan Tempo range sync dialog */
.tempo-sync-dialog{width:min(520px,calc(100vw - 32px))}
.tempo-sync-dialog-card{gap:14px;overflow:visible}
.tempo-sync-dialog:has(.tempo-sync-unknowns-form) .tempo-sync-dialog-card{border-bottom-left-radius:0;border-bottom-right-radius:0}
.tempo-sync-range-fields{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.tempo-sync-range-fields label{display:grid;gap:6px;color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.08em}
.tempo-sync-range-fields input[type=date]{width:100%}
.tempo-dialog-actions{display:flex;align-items:center;justify-content:flex-end;gap:10px;margin-top:4px}
.tempo-sync-unknowns-form{display:grid;gap:12px;margin:0;padding:18px 24px 24px;border-top:1px solid var(--line);background:linear-gradient(180deg,rgba(255,255,255,.025),rgba(255,255,255,.012));border-radius:0 0 inherit inherit}.tempo-sync-unknowns-form p{margin:0;line-height:1.45}.tempo-sync-unknowns-form button{justify-self:start}
@media(max-width:640px){.tempo-sync-range-fields{grid-template-columns:1fr}.tempo-dialog-actions{display:grid}.tempo-dialog-actions button{width:100%}.tempo-sync-unknowns-form{padding:16px 20px 20px}}

/* Jira Tasks page */
.selected-task-group-card{border-color:rgba(113,112,255,.26);background:radial-gradient(circle at 100% 0,rgba(113,112,255,.12),transparent 20rem),var(--panel)}.selected-task-group-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px}.selected-task-group-head h2{margin:0 0 6px}.selected-task-group-head form{margin:0;flex:0 0 auto}.task-group-selector{display:flex;flex-wrap:wrap;gap:10px}.task-group-tab{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--line);border-radius:12px;background:var(--surface);text-decoration:none;color:var(--text-2)}.task-group-tab:hover,.task-group-tab.active{border-color:rgba(113,112,255,.58);background:rgba(113,112,255,.14);color:var(--text)}.task-group-tab b{display:grid;place-items:center;min-width:26px;height:24px;padding:0 7px;border-radius:999px;background:rgba(255,255,255,.08);font-size:12px}.task-swimlane{margin-top:22px;padding:20px;border:1px solid var(--line);border-radius:var(--radius);background:rgba(15,16,17,.72);box-shadow:var(--shadow)}.task-swimlane.pinned-lane{background:radial-gradient(circle at 100% 0,rgba(245,158,11,.12),transparent 22rem),rgba(15,16,17,.82);border-color:rgba(245,158,11,.22)}.task-card-list{display:grid;gap:14px}.jira-task-card{min-width:0;border:1px solid var(--line);border-radius:16px;padding:16px;background:linear-gradient(180deg,rgba(255,255,255,.045),rgba(255,255,255,.025));box-shadow:inset 0 1px 0 rgba(255,255,255,.04)}.jira-task-card.is-pinned{border-color:rgba(245,158,11,.36);background:linear-gradient(180deg,rgba(245,158,11,.12),rgba(255,255,255,.03))}.jira-task-card.dragging{opacity:.55;outline:1px dashed var(--warn)}.task-card-top{display:flex;align-items:flex-start;gap:12px;justify-content:space-between}.task-title{min-width:0;flex:1}.task-title-badge{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.task-title h3{margin:6px 0 4px;font-size:20px}.task-title p{margin:0;color:var(--text-2);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.task-id-link{display:flex;align-items:baseline;gap:8px;min-width:0;color:inherit}.task-id-link .task-key{flex:0 0 auto}.task-id-link:hover .task-key,.task-id-link:hover .task-id-summary{text-decoration:underline}.task-id-summary{flex:1 1 auto;min-width:0;font-weight:510;color:var(--text-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.task-title h3 .task-id-summary{font-size:inherit;font-weight:inherit;color:inherit}.dashboard-item-title h3 .task-id-summary{font-size:inherit;font-weight:inherit;color:inherit}.task-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.task-actions form{margin:0}.task-actions button{min-height:36px;padding:0 12px}.task-drag-handle{flex:0 0 auto}.task-meta-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:14px 0 0}.task-meta-grid div{min-width:0;padding:10px;border:1px solid var(--line-soft);border-radius:12px;background:rgba(0,0,0,.12)}.task-meta-grid dt{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.07em}.task-meta-grid dd{margin:3px 0 0;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-2)}.task-meta-grid a{color:var(--accent-hover)}@media(max-width:1200px){.task-meta-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:760px){.selected-task-group-head{display:grid}.selected-task-group-head form,.selected-task-group-head button{width:100%}.task-card-top{display:grid}.task-actions{display:grid}.task-actions button{width:100%}.task-meta-grid{grid-template-columns:1fr}.task-group-tab{width:100%;justify-content:space-between}}

.task-swimlane.hidden-lane{background:linear-gradient(180deg,rgba(148,163,184,.13),rgba(75,85,99,.08));border-color:rgba(148,163,184,.32);border-style:dashed}.jira-task-card.is-hidden-task{opacity:.9;background:linear-gradient(180deg,rgba(148,163,184,.16),rgba(75,85,99,.11));border-color:rgba(148,163,184,.3);border-style:dashed;filter:grayscale(.22)}.hidden-reason{margin-left:6px}.hidden-reason.manual{color:#fecaca!important;border-color:rgba(239,68,68,.35)!important;background:rgba(239,68,68,.1)!important}.hidden-reason.query{color:#fde68a!important;border-color:rgba(245,158,11,.35)!important;background:rgba(245,158,11,.1)!important}

.tasks-hero{align-items:flex-start}.task-page-actions{display:flex;align-items:center;justify-content:flex-end;gap:10px;flex-wrap:wrap}.task-group-dialog{width:min(760px,calc(100vw - 32px))}.task-group-dialog .stack{gap:14px}.task-group-dialog textarea{min-height:118px}.task-group-dialog .tempo-dialog-actions{justify-content:flex-end}.task-group-dialog .tempo-dialog-actions button{min-width:150px}.task-filter-card{margin-top:-8px}.task-filter-form{display:grid;grid-template-columns:minmax(240px,1fr) minmax(240px,1fr);gap:16px 18px;align-items:end}.task-filter-field{min-width:0}.task-filter-field .choices{margin-bottom:0}.task-filter-field .choices__inner{min-height:42px;background:var(--input);border-color:var(--line);border-radius:10px}.task-filter-form label{display:grid;gap:7px;color:var(--muted);font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.08em}.task-filter-controls{grid-column:1/-1;display:flex;align-items:center;gap:18px;flex-wrap:wrap;margin-top:2px}.task-filter-form .task-show-hidden-toggle{display:flex;align-items:center;gap:10px;min-height:40px;padding:0 14px;border:1px solid rgba(148,163,184,.24);border-radius:10px;background:rgba(148,163,184,.08);color:var(--text-2);white-space:nowrap;text-transform:none;letter-spacing:0}.task-filter-form .task-show-hidden-toggle input{width:auto;min-height:0}.task-filter-actions{display:flex;gap:10px;align-items:center;margin-left:4px}.task-filter-summary{grid-column:1/-1;margin:0}@media(max-width:960px){.task-filter-form{grid-template-columns:1fr}.task-filter-controls{gap:14px}.task-filter-actions{margin-left:0}}@media(max-width:760px){.tasks-hero{display:block}.task-page-actions{justify-content:stretch;margin-top:16px}.task-page-actions button{width:100%}.task-group-dialog .tempo-dialog-actions{display:grid}.task-group-dialog .tempo-dialog-actions button{width:100%}.task-filter-controls{display:grid}.task-filter-actions{display:grid}.task-filter-actions button,.task-filter-actions .button{width:100%}}

.task-meta-grid dd:has(.task-person){display:flex;align-items:center;min-height:24px;overflow:hidden}.task-person{display:inline-flex!important;align-items:center!important;gap:7px!important;min-width:0!important;max-width:100%;height:24px;line-height:24px;vertical-align:middle;overflow:hidden}.task-person>span:last-child{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:20px}.task-person .avatar.avatar-task-person,.task-meta-grid dd .avatar.avatar-task-person{box-sizing:border-box!important;display:inline-grid!important;place-items:center!important;width:20px!important;height:20px!important;min-width:20px!important;max-width:20px!important;min-height:20px!important;max-height:20px!important;aspect-ratio:1/1!important;flex:0 0 20px!important;font-size:8px!important;line-height:1!important;box-shadow:none!important;border-width:1px!important;overflow:hidden!important;position:static!important;transform:none!important;padding:0!important;margin:0!important}.task-person .avatar.avatar-task-person img,.task-meta-grid dd .avatar.avatar-task-person img{display:block!important;width:100%!important;height:100%!important;min-width:100%!important;max-width:100%!important;min-height:100%!important;max-height:100%!important;object-fit:cover!important;border-radius:50%!important;padding:0!important;margin:0!important}.task-person .avatar.avatar-task-person *{font-size:8px!important;line-height:1!important}


/* Notification templates and task notification assignments (v20260613notifications) */
.notification-templates-hero code,.notification-template-form code{padding:2px 5px;border-radius:6px;background:rgba(255,255,255,.07);color:#c7d2fe}.notification-template-filters{display:grid;grid-template-columns:minmax(260px,1fr) auto auto;gap:14px;align-items:end}.notification-template-filters label:not(.check){display:grid;gap:7px;color:var(--muted);font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.08em}.notification-show-hidden-toggle{align-self:center;display:flex;align-items:center;gap:9px;padding:10px 12px;border:1px solid rgba(148,163,184,.22);border-radius:10px;background:rgba(148,163,184,.08);color:var(--text-2);white-space:nowrap}.notification-show-hidden-toggle input{width:auto;min-height:0}.notification-template-list{display:grid;gap:14px}.notification-template-channels{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;margin-top:14px}.notification-template-channel{padding:10px 12px;border:1px solid var(--line);border-radius:12px;background:rgba(255,255,255,.025)}.notification-template-channel.is-channel-off{opacity:.55}.notification-template-channel>.pill{margin-bottom:6px}.notification-template-channel .notification-template-meta{margin-top:6px}.notification-template-channel-fields{display:grid;gap:10px;margin:0;padding:12px;border:1px solid var(--line);border-radius:14px;background:rgba(255,255,255,.025)}.notification-template-channel-fields>legend{padding:0 6px}.notification-template-channel-fields>legend label.check{color:var(--text-2);font-size:13px;font-weight:600;text-transform:none;letter-spacing:0}.notification-template-card{padding:16px;border:1px solid var(--line);border-radius:16px;background:linear-gradient(180deg,rgba(255,255,255,.045),rgba(255,255,255,.025))}.notification-template-card.is-hidden-template{opacity:.78;border-style:dashed;border-color:rgba(148,163,184,.3);background:linear-gradient(180deg,rgba(148,163,184,.13),rgba(75,85,99,.08));filter:grayscale(.18)}.notification-template-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}.notification-template-head h3{margin:7px 0 4px;font-size:20px}.notification-template-meta{margin-top:14px}.notification-template-dialog{width:min(860px,calc(100vw - 32px))}.notification-template-form textarea[name="body"]{min-height:180px}.token-control{display:grid;gap:9px;padding:12px;border:1px solid var(--line);border-radius:14px;background:rgba(255,255,255,.025)}.token-control>span{color:var(--muted);font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.08em}.token-list{display:grid;gap:8px}.token-row{display:grid!important;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:center}.token-row button{width:42px!important;min-width:42px!important;padding:0!important}.notification-form-section{display:grid;gap:10px;margin-top:4px;padding:12px;border:1px solid rgba(113,112,255,.22);border-radius:14px;background:rgba(113,112,255,.055)}.notification-form-section h3{margin:0}.notification-assignment-builder{display:grid;gap:10px}.notification-blocks{display:grid;gap:12px}.notification-assignment-block{display:grid;gap:10px;padding:12px;border:1px solid var(--line);border-radius:14px;background:rgba(255,255,255,.032)}.notification-block-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.notification-grid{display:grid;grid-template-columns:minmax(160px,.35fr) minmax(240px,1fr);gap:10px}.notification-assignment-block label{display:grid;gap:6px;color:var(--muted);font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.08em}.notification-assignment-block .choices{margin:0}.allowed-token-label{margin:0}.custom-receiver-list{display:grid;gap:8px}.custom-receiver-row{display:grid;grid-template-columns:minmax(130px,.8fr) minmax(180px,1fr) auto;gap:8px}.custom-receiver-row button{width:42px!important;min-width:42px!important;padding:0!important}.task-notifications-panel{margin-top:14px;border-top:1px solid var(--line);padding-top:12px}.task-notifications-panel>summary{cursor:pointer;color:var(--accent-hover);font-weight:700}.task-notifications-panel[open]>summary{margin-bottom:10px}.notification-assignment-form{display:grid;gap:10px}.js select.notification-receiver-users{visibility:hidden}.js.choices-unavailable select.notification-receiver-users{visibility:visible}@media(max-width:960px){.notification-template-filters,.notification-grid,.custom-receiver-row,.notification-template-channels{grid-template-columns:1fr}.notification-template-head{display:grid}.notification-show-hidden-toggle{white-space:normal}.notification-template-filters .task-filter-actions{display:grid}.notification-template-filters .task-filter-actions button,.notification-template-filters .task-filter-actions .button{width:100%}}


/* Selected group assigned-notification summary (v20260613groupnotifications) */
.selected-task-group-card .notification-summary-panel{margin-top:16px;max-width:980px;padding:12px;border:1px solid rgba(113,112,255,.22);border-radius:14px;background:rgba(113,112,255,.045)}.notification-summary-head{display:flex;align-items:center;gap:10px;margin-bottom:10px}.notification-summary-head strong{font-size:13px;color:var(--text);letter-spacing:.01em}.notification-summary-list{display:grid;gap:10px}.notification-summary-card{padding:11px 12px;border:1px solid var(--line-soft);border-radius:12px;background:rgba(0,0,0,.16)}.notification-summary-title{display:flex;align-items:center;gap:9px;margin-bottom:7px}.notification-summary-title strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.notification-summary-meta{display:grid;grid-template-columns:minmax(180px,.9fr) minmax(220px,1.1fr) minmax(180px,.8fr);gap:8px;margin:8px 0 0}.notification-summary-meta div{min-width:0;padding:8px;border:1px solid var(--line-soft);border-radius:10px;background:rgba(255,255,255,.025)}.notification-summary-meta dt{color:var(--muted);font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.07em}.notification-summary-meta dd{margin:3px 0 0;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-2);font-size:12px}.notification-summary-empty{margin:0}@media(max-width:960px){.notification-summary-meta{grid-template-columns:1fr}.selected-task-group-card .notification-summary-panel{max-width:none}}

/* Notification settings page (v20260613notificationmodals) */
.notice{margin:0 0 16px;padding:12px 14px;border:1px solid rgba(16,185,129,.35);border-radius:12px;background:rgba(16,185,129,.11);color:#bbf7d0}.notice.notice-error{border-color:rgba(239,68,68,.42);background:rgba(239,68,68,.12);color:#fecaca}.notice.notice-ok{border-color:rgba(16,185,129,.38);background:rgba(16,185,129,.12);color:#bbf7d0}.notification-settings-form{display:grid;gap:18px}.notification-settings-block{position:relative}.settings-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.settings-grid label{display:grid;gap:7px;color:var(--muted);font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.08em}.settings-grid input,.settings-grid textarea{width:100%}.secret-status{display:inline-block;margin-left:8px;padding:2px 7px;border:1px solid rgba(113,112,255,.25);border-radius:999px;background:rgba(113,112,255,.08);color:#c7d2fe;font-size:10px;font-weight:700;letter-spacing:.03em;text-transform:none}.settings-check-row{display:flex;flex-wrap:wrap;gap:16px;margin-top:14px}.settings-check-row .check,.notification-settings-block .section-head .check{display:flex;align-items:center;gap:9px;color:var(--text-2);font-size:13px;text-transform:none;letter-spacing:0}.settings-check-row input,.notification-settings-block .section-head input{width:auto;min-height:0}.notification-settings-note{margin-top:14px;padding:12px;border:1px solid var(--line);border-radius:12px;background:rgba(255,255,255,.03);color:var(--text-2)}.notification-settings-note strong{color:var(--text)}.whitelist-grid{grid-template-columns:1fr 1fr}.settings-guide-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.settings-guide-grid>div{padding:14px;border:1px solid var(--line);border-radius:14px;background:rgba(255,255,255,.03)}.settings-guide-grid h3{margin-top:0}.settings-guide-grid li{margin:7px 0}.sticky-form-actions{position:sticky;bottom:16px;z-index:3;display:flex;justify-content:flex-end;padding:12px;border:1px solid rgba(113,112,255,.2);border-radius:14px;background:rgba(10,11,13,.86);backdrop-filter:blur(16px);box-shadow:var(--shadow)}.custom-receiver-row{grid-template-columns:minmax(140px,.65fr) repeat(7,minmax(120px,1fr)) auto!important}.custom-receiver-row select{min-width:0}.notification-settings-actions{display:flex;align-items:center;justify-content:flex-end;gap:10px;flex-wrap:wrap}.notification-test-dialog{width:min(820px,calc(100vw - 32px))}.notification-test-dialog .tempo-dialog-card{gap:14px}.notification-test-form label{display:grid;gap:7px;color:var(--muted);font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.08em}.notification-test-user-select{width:100%}.notification-test-form .choices{margin:0}.notification-test-form .choices__inner{min-height:42px!important;background:var(--input);border-color:var(--line);border-radius:10px}.teams-test-channel-list{display:grid;gap:9px}.teams-test-channel-row{display:grid;grid-template-columns:minmax(260px,1fr) auto;gap:8px}.teams-test-channel-row button{width:42px!important;min-width:42px!important;padding:0!important}.teams-channel-control{margin-top:4px}.teams-auth-mode{display:grid;gap:12px;margin-top:16px;padding:14px;border:1px solid var(--line);border-radius:12px;background:rgba(255,255,255,.03)}.teams-auth-mode .settings-check-row{margin-top:0}.teams-auth-mode p.muted{margin:0}.teams-connection-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px}.teams-connection-actions{display:flex;flex-wrap:wrap;gap:9px}.secret-status.ok{border-color:rgba(16,185,129,.45);background:rgba(16,185,129,.14);color:#bbf7d0}@media(max-width:1300px){.settings-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.custom-receiver-row{grid-template-columns:1fr 1fr!important}.custom-receiver-row button{width:100%!important}.teams-test-channel-row{grid-template-columns:1fr 1fr}}@media(max-width:820px){.settings-grid,.whitelist-grid,.settings-guide-grid,.teams-test-channel-row{grid-template-columns:1fr}.sticky-form-actions{display:grid}.sticky-form-actions button{width:100%}.teams-test-channel-row button{width:100%!important}}

.project-row.project-limit-reached td{background:rgba(250,204,21,.16)!important}
.project-row.project-limit-reached .project-sticky-cell,.project-row.project-limit-reached td.user{background:rgba(250,204,21,.22)!important;box-shadow:inset 3px 0 0 #facc15}
.project-limit-badge{display:inline-block;margin-top:3px;padding:2px 8px;border-radius:999px;border:1px solid rgba(113,112,255,.4);background:rgba(113,112,255,.16);color:#c7d2fe;font-size:10px;font-weight:700;letter-spacing:.02em;text-transform:none}
.project-limit-badge.is-reached{border-color:rgba(250,204,21,.6);background:rgba(250,204,21,.2);color:#fde68a}
/* Tri-state planned-booking highlight on the weekly-plan project view: red = below
   minimum, green = within plan, yellow = over the limit. Applies to project rows
   and to client swimlane headers. */
.project-row.row-state-below-min td,.project-swimlane.row-state-below-min td{background:rgba(248,113,113,.16)!important}
.project-row-card.row-state-below-min,.dashboard-pinned-item.row-state-below-min{background:linear-gradient(180deg,rgba(248,113,113,.18),rgba(255,255,255,.025))!important;box-shadow:inset 3px 0 0 #f87171,0 0 0 1px rgba(248,113,113,.35)}
.project-row.row-state-below-min .project-sticky-cell,.project-row.row-state-below-min td.user,.project-swimlane.row-state-below-min .team-sticky-cell{background:rgba(248,113,113,.22)!important;box-shadow:inset 3px 0 0 #f87171}
.project-row.row-state-within td,.project-swimlane.row-state-within td{background:rgba(74,222,128,.13)!important}
.project-row-card.row-state-within,.dashboard-pinned-item.row-state-within{background:linear-gradient(180deg,rgba(74,222,128,.16),rgba(74,222,128,.07))!important;box-shadow:inset 3px 0 0 #4ade80,0 0 0 1px rgba(74,222,128,.32),0 0 28px rgba(74,222,128,.08)}
.project-row.row-state-within .project-sticky-cell,.project-row.row-state-within td.user,.project-swimlane.row-state-within .team-sticky-cell{background:rgba(74,222,128,.18)!important;box-shadow:inset 3px 0 0 #4ade80}
.project-row.row-state-over-limit td,.project-swimlane.row-state-over-limit td{background:rgba(250,204,21,.16)!important}
.project-row-card.row-state-over-limit,.dashboard-pinned-item.row-state-over-limit{background:linear-gradient(180deg,rgba(250,204,21,.20),rgba(250,204,21,.08))!important;box-shadow:inset 3px 0 0 #facc15,0 0 0 1px rgba(250,204,21,.38),0 0 28px rgba(250,204,21,.10)}
.project-row.row-state-over-limit .project-sticky-cell,.project-row.row-state-over-limit td.user,.project-swimlane.row-state-over-limit .team-sticky-cell{background:rgba(250,204,21,.22)!important;box-shadow:inset 3px 0 0 #facc15}
.project-limit-badge.state-below-min{border-color:rgba(248,113,113,.6);background:rgba(248,113,113,.2);color:#fecaca}
.project-limit-badge.state-within{border-color:rgba(74,222,128,.55);background:rgba(74,222,128,.18);color:#bbf7d0}
.project-limit-badge.state-over-limit{border-color:rgba(250,204,21,.6);background:rgba(250,204,21,.2);color:#fde68a}
.project-limit-dialog{width:min(820px,calc(100vw - 32px))}
.project-limit-dialog-card{gap:14px}
.project-limit-dialog-card .stack{gap:14px}
.project-limit-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.project-limit-week-grid{display:grid;grid-template-columns:repeat(2,minmax(120px,1fr));gap:12px;padding:12px;border:1px solid var(--line-soft);border-radius:12px;background:rgba(255,255,255,.035)}
.project-limit-grid label,.project-limit-week-grid label,.week-rule-row label{display:grid;gap:7px;color:var(--muted);font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.08em}
.week-rule-selector{display:flex;flex-direction:column;gap:10px;padding:12px;border:1px solid var(--line-soft);border-radius:12px;background:rgba(255,255,255,.035)}
.week-rule-label{color:var(--muted);font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.08em}
.week-rule-rows{display:flex;flex-direction:column;gap:10px}
.week-rule-row{display:grid;grid-template-columns:82px 104px minmax(260px,1fr) 44px;gap:12px;align-items:end}
.week-rule-remove{width:44px;min-width:44px;height:38px;padding:0!important;align-self:end;display:inline-flex;align-items:center;justify-content:center;white-space:nowrap}
.week-rule-add{align-self:flex-start}
.project-limit-delete-form{margin-top:6px;border-top:1px solid var(--line);padding-top:12px;display:flex;justify-content:flex-start}
@media(max-width:760px){.project-limit-grid{grid-template-columns:1fr}}
@media(max-width:560px){.week-rule-row{grid-template-columns:1fr}.week-rule-remove{width:100%}}

.selected-task-group-actions{display:flex;align-items:flex-start;justify-content:flex-end;gap:10px;flex-wrap:wrap;flex:0 0 auto;max-width:58%}
@media(max-width:760px){.selected-task-group-actions{width:100%}.selected-task-group-actions>*{flex:1 1 auto}.selected-task-group-actions .button,.selected-task-group-actions button{width:100%}}

.nav-warning,.view-warning,.week-warning{color:#facc15;font-size:13px;line-height:1;filter:drop-shadow(0 0 6px rgba(250,204,21,.5))}
nav a .nav-warning{margin-left:4px}
.week-pill.has-warning{border-color:rgba(250,204,21,.55)!important}
.mode-pill.has-warning{border-color:rgba(250,204,21,.6);grid-auto-flow:column;gap:5px;align-items:center}
.mode-pill .view-warning{display:inline-flex;align-items:center}
.project-limit-facts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:0 0 6px;padding:12px;border:1px solid var(--line);border-radius:12px;background:rgba(255,255,255,.03)}
.project-limit-facts dt{color:var(--muted);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em}
.project-limit-facts dd{margin:3px 0 0;font-size:16px;font-weight:600;color:var(--text)}
.project-limit-history{margin-top:6px;border-top:1px solid var(--line);padding-top:12px}
.project-limit-history h3{margin:0 0 8px;font-size:14px}
.approval-history-list{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.approval-history-list li{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:8px 10px;border:1px solid var(--line-soft);border-radius:10px;background:rgba(255,255,255,.025)}
.approval-history-list li small{margin-left:auto}
@media(max-width:760px){.project-limit-facts{grid-template-columns:1fr}}

/* Dashboard pinned project/task/group cards */
.dashboard-pin-grid{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(280px,.8fr) minmax(0,1.2fr);gap:18px;margin-bottom:22px}.dashboard-pin-card{min-width:0}.dashboard-card-list{display:grid;gap:12px}.dashboard-card-list.compact{gap:10px}.dashboard-pinned-item{border:1px solid var(--line);background:rgba(255,255,255,.035);border-radius:14px;padding:14px;display:grid;gap:12px}.dashboard-pinned-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.dashboard-pinned-head h3{margin:4px 0 0}.dashboard-pinned-head p{margin:4px 0 0}.dashboard-metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:8px;margin:0}.dashboard-metrics div{border:1px solid var(--line-soft);border-radius:10px;padding:8px;background:rgba(0,0,0,.12)}.dashboard-metrics dt{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.06em}.dashboard-metrics dd{margin:2px 0 0;font-weight:700}.limit-warning,.project-limit-reached{box-shadow:0 0 0 1px rgba(245,158,11,.45),0 0 28px rgba(245,158,11,.08)}.limit-warning-banner{border:1px solid rgba(245,158,11,.45);background:rgba(245,158,11,.12);color:#fcd34d;border-radius:10px;padding:8px 10px;font-weight:700}.dashboard-log summary{cursor:pointer;color:var(--accent-hover);font-weight:700}.dashboard-log-body{margin-top:10px;max-height:280px;overflow:auto}.dashboard-log-body table{font-size:12px}.row-action-form{margin:0}.row-action-form button{width:100%;text-align:left}@media(max-width:1200px){.dashboard-pin-grid{grid-template-columns:1fr}}

/* Dashboard compact pinned-item redesign */
.dashboard-hero{align-items:flex-start}.dashboard-week-carousel{justify-content:flex-end;max-width:820px}.dashboard-pin-grid-compact{grid-template-columns:repeat(3,minmax(0,1fr));align-items:start}.dashboard-tasklike-item{position:relative;padding:12px;border-radius:16px;background:linear-gradient(180deg,rgba(255,255,255,.045),rgba(255,255,255,.025));gap:9px}.dashboard-unpin-form{position:absolute;top:10px;right:10px;margin:0}.dashboard-unpin-btn{min-height:30px;padding:5px 9px;font-size:12px;border-radius:9px}.dashboard-item-title{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:start;gap:8px;padding-right:70px}.dashboard-item-title h3{margin:0;font-size:15px;line-height:1.25;min-width:0}.dashboard-item-title h3 a{text-decoration:none}.dashboard-item-title h3 a:hover{text-decoration:underline}.dashboard-metrics.compact{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}.dashboard-metrics.compact div{padding:6px 7px;border-radius:9px}.dashboard-metrics.compact dt{font-size:10px}.dashboard-metrics.compact dd{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dashboard-task-description{border:1px solid var(--line-soft);border-radius:10px;background:rgba(0,0,0,.12);padding:6px 8px}.dashboard-task-description summary{cursor:pointer;color:var(--text-2);font-size:12px;font-weight:700}.dashboard-task-description p{margin:7px 0 0;color:var(--muted);font-size:12px;line-height:1.45;max-height:140px;overflow:auto}.dashboard-log{border-top:1px solid var(--line-soft);padding-top:7px}.dashboard-log summary{font-size:12px}.dashboard-pin-grid-compact .empty-state{padding:18px!important;font-size:13px}.dashboard-pin-grid-compact .section-head{margin-bottom:10px}.dashboard-pin-grid-compact .section-head h2{font-size:18px}.dashboard-pin-grid-compact .section-head p{font-size:12px}.dashboard-pin-grid-compact .limit-warning-banner{padding:6px 8px;font-size:12px}@media(max-width:1300px){.dashboard-pin-grid-compact{grid-template-columns:1fr 1fr}.dashboard-pin-grid-compact .dashboard-pin-card:last-child{grid-column:1/-1}}@media(max-width:820px){.dashboard-pin-grid-compact{grid-template-columns:1fr}.dashboard-pin-grid-compact .dashboard-pin-card:last-child{grid-column:auto}.dashboard-week-carousel{justify-content:flex-start}.dashboard-tasklike-item{padding-right:12px;padding-top:46px}.dashboard-unpin-form{left:10px;right:auto}}

/* Dashboard projects + rich task cards (Tasks-page parity) */
.dashboard-pin-card{margin-bottom:18px}
.dashboard-card-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(380px,1fr));gap:14px}
.dashboard-tasks-section .section-head{align-items:flex-start}
.dashboard-tasks-head-actions{display:flex;align-items:center;gap:10px;flex:0 0 auto}
.dashboard-task-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(480px,1fr));gap:14px}
.dashboard-log-body table{width:100%;border-collapse:collapse;table-layout:fixed}
.dashboard-log-body th,.dashboard-log-body td{text-align:left;vertical-align:top;padding:4px 6px;word-break:break-word;border-bottom:1px solid var(--line-soft)}
.dashboard-log-body td:nth-child(3){white-space:normal}
.dashboard-log-body td:last-child,.dashboard-log-body th:last-child{width:52px;text-align:right;white-space:nowrap}
.dashboard-log-body th:first-child,.dashboard-log-body td:first-child{width:74px;white-space:nowrap}
.dashboard-task-card{align-content:start}
.dashboard-meta-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(96px,1fr));gap:6px;margin:0}
.dashboard-meta-grid div{min-width:0;border:1px solid var(--line-soft);border-radius:9px;padding:6px 8px;background:rgba(0,0,0,.12)}
.dashboard-meta-grid dt{color:var(--muted);font-size:10px;text-transform:uppercase;letter-spacing:.06em}
.dashboard-meta-grid dd{margin:2px 0 0;font-weight:600;font-size:12px;color:var(--text-2);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dashboard-meta-grid dd:has(.task-person){white-space:normal}
.dashboard-meta-grid a{color:var(--accent-hover)}
@media(max-width:820px){.dashboard-task-grid,.dashboard-card-grid{grid-template-columns:1fr}.dashboard-meta-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
.dashboard-limit-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:2px}
.dashboard-limit-actions button{flex:1 1 auto}
.client-card-actions{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));align-items:center;gap:8px;margin-top:auto;padding-top:10px;border-top:1px solid var(--line-soft)}
.client-card-actions button{width:100%;min-height:42px;padding:8px 12px;flex:none}
.client-card-actions form{margin:0;display:block}
.task-limit-approve-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;margin-top:8px;padding-top:8px;border-top:1px solid var(--line-soft)}
.task-group-flag{font-weight:500;text-transform:none;letter-spacing:0}
.archived-groups{margin-top:10px}
.archived-groups summary{cursor:pointer;color:var(--muted);font-size:13px}
.archived-group-list{list-style:none;margin:8px 0 0;padding:0;display:flex;flex-direction:column;gap:6px}
.archived-group-list li{display:flex;align-items:center;justify-content:space-between;gap:10px;border:1px solid var(--line-soft);border-radius:9px;padding:6px 10px}
.archived-group-list form{margin:0}
/* Dashboard "Add project" popup: keep the native dialog as narrow as its card
   and make the Choices.js project menu full-width above the action buttons. */
#dashboard-pin-project-dialog{
  width:min(600px,calc(100vw - 32px))!important;
  overflow:visible!important;
}
#dashboard-pin-project-dialog .tempo-dialog-card,
.dashboard-pin-dialog-card{
  width:100%!important;
  max-height:none!important;
  overflow:visible!important;
}
.dashboard-pin-dialog-card form.stack{
  display:grid!important;
  grid-template-columns:1fr!important;
  gap:14px!important;
  overflow:visible!important;
}
.dashboard-pin-dialog-card label{
  display:grid!important;
  width:100%!important;
  min-width:0!important;
  gap:6px!important;
}
.dashboard-pin-dialog-card .choices{
  width:100%!important;
  margin-bottom:0;
  overflow:visible!important;
  z-index:20;
}
.dashboard-pin-dialog-card .choices__inner{min-height:46px!important;width:100%!important}
.dashboard-pin-dialog-card .choices__list--dropdown,
.dashboard-pin-dialog-card .choices__list[aria-expanded]{
  position:absolute!important;
  z-index:10000!important;
  width:100%!important;
  min-width:100%!important;
  max-width:100%!important;
  left:0!important;
  right:0!important;
  top:100%!important;
  bottom:auto!important;
  box-sizing:border-box!important;
  transform:none!important;
}
.dashboard-pin-dialog-card .choices.is-flipped .choices__list--dropdown,
.dashboard-pin-dialog-card .choices.is-flipped .choices__list[aria-expanded]{top:100%!important;bottom:auto!important}
.dashboard-pin-dialog-card .choices__list--dropdown .choices__list,
.dashboard-pin-dialog-card .choices__list[aria-expanded] .choices__list{max-height:min(50vh,360px)!important;overflow-y:auto!important}
.dashboard-pin-dialog-card .tempo-dialog-actions{position:relative;z-index:1}

/* Projects page: header actions inline, and project cards with top-right actions */
.hero-actions{display:flex;gap:10px;align-items:center;flex-wrap:nowrap}
.hero-actions form{margin:0}
.project-client-lane .section-head{display:flex;align-items:center;justify-content:space-between;gap:12px}
.project-row-card{position:relative;display:grid;gap:6px;padding:14px 174px 14px 14px;border:1px solid var(--line-soft);border-radius:12px;background:var(--surface)}
.project-row-card.project-row-archived{background:linear-gradient(180deg,rgba(148,163,184,.16),rgba(148,163,184,.04));box-shadow:inset 3px 0 0 #94a3b8,0 0 0 1px rgba(148,163,184,.32)}
.project-row-card .project-row-main{display:flex;align-items:center;gap:10px;font-size:15px}
.project-row-card .project-row-meta,.project-row-card .project-row-people{color:var(--muted);font-size:13px;display:flex;flex-wrap:wrap;gap:8px}
.project-row-card .project-team-group{white-space:nowrap}
.pill-archived{background:rgba(148,163,184,.28);color:var(--text)}
.project-row-actions{position:absolute;top:12px;right:12px;display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px;align-items:center;max-width:152px}
.project-row-actions form{margin:0}
.project-row-actions .edit-btn{min-height:32px;padding:6px 14px}
.project-row-actions .ghost{min-height:32px;padding:6px 12px}
.project-list .project-row-card{padding:14px}
.project-list .project-row-actions{position:static;max-width:none;justify-content:flex-start;margin-top:2px}
/* Projects-page per-viewer swimlanes */
.project-swimlanes{display:flex;flex-direction:column;gap:16px}
.project-swimlane-lane{padding:14px}
.project-swimlane-lane.lane-dragging{opacity:.55}
.project-lane-head{display:flex;align-items:center;gap:8px;margin-bottom:12px}
.project-lane-head .lane-name{font-weight:700;color:var(--accent-hover);font-size:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:60%}
.project-lane-head .lane-name[data-proj-lane-rename],.project-lane-head .lane-name[data-client-lane-rename]{cursor:text;border-radius:7px;padding:2px 6px;margin:0 -3px;border:1px solid transparent}
.project-lane-head .lane-name[data-proj-lane-rename]:hover,.project-lane-head .lane-name[data-client-lane-rename]:hover{background:rgba(113,112,255,.14);border-color:rgba(113,112,255,.35)}
.project-lane-head .lane-name-static{color:var(--muted);font-weight:600}
.project-lane-head .lane-collapse-btn{flex:0 0 auto;display:inline-grid;place-items:center;width:22px;height:22px;min-height:0;padding:0;border:0;border-radius:7px;background:rgba(255,255,255,.04);box-shadow:none;cursor:pointer}
.project-lane-head .lane-collapse-btn::before{content:"";width:6px;height:6px;border-right:1.7px solid var(--accent-hover);border-bottom:1.7px solid var(--accent-hover);transform:rotate(45deg);transition:transform .15s;margin-top:-2px}
.project-lane-head .lane-collapse-btn[aria-expanded="false"]::before{transform:rotate(-45deg)}
.project-lane-head .lane-count{flex:0 0 auto}
.project-lane-head-spacer{flex:1 1 auto}
.project-lane-head .lane-drag-handle{flex:0 0 auto;display:inline-grid;place-items:center;width:24px;height:24px;color:var(--muted);font-size:13px;line-height:1;cursor:grab;opacity:.5;border:1px solid var(--line-soft);border-radius:7px;-webkit-user-select:none;user-select:none}
.project-lane-head:hover .lane-drag-handle{opacity:.85}
.project-lane-head .lane-drag-handle:active{cursor:grabbing}
.project-lane-head .lane-delete-btn{flex:0 0 auto;display:inline-grid;place-items:center;width:24px;height:24px;min-height:0;padding:0;border:1px solid rgba(248,113,113,.3);border-radius:7px;background:rgba(248,113,113,.08);color:#fecaca;cursor:pointer;box-shadow:none;opacity:.8}
.project-lane-head .lane-delete-btn svg{display:block}
.project-lane-head .lane-delete-btn:hover{opacity:1;background:rgba(248,113,113,.18);border-color:rgba(248,113,113,.55);color:#fff}
.project-lane-body.is-collapsed{display:none}
.project-lane-empty{margin:2px 0;font-size:13px}
.proj-lane-controls{flex:0 0 auto;display:inline-flex;align-items:center;gap:4px;margin-right:2px}
.proj-lane-assign-btn{display:inline-grid;place-items:center;width:28px;height:28px;min-height:0;padding:0;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--muted);box-shadow:none;cursor:pointer}
.proj-lane-assign-btn:hover{background:rgba(113,112,255,.16);border-color:rgba(113,112,255,.5);color:#fff}
.proj-lane-assign-btn.is-assigned{background:rgba(113,112,255,.2);border-color:rgba(113,112,255,.55);color:#c7d2fe}
.proj-lane-assign-btn svg{display:block}
.proj-drag-handle{display:inline-grid;place-items:center;width:22px;height:28px;color:var(--muted);font-size:13px;line-height:1;cursor:grab;opacity:.5;-webkit-user-select:none;user-select:none}
.proj-drag-handle:hover{opacity:.85}
.proj-drag-handle:active{cursor:grabbing}
.project-row-card.dragging{opacity:.5}
.project-roles-fieldset{display:grid;gap:10px;border:1px solid var(--line-soft);border-radius:12px;padding:12px 14px;margin:0}
.project-roles-fieldset legend{padding:0 6px;color:var(--muted);font-size:12px;font-weight:600;letter-spacing:.04em;text-transform:uppercase}
.swimlane-picker-remove{justify-content:center}
.swimlane-picker-remove[hidden]{display:none!important}
.project-filter-form{display:flex;flex-wrap:wrap;align-items:flex-end;gap:16px}
.project-filter-search{display:flex;flex-direction:column;gap:4px;flex:1 1 260px}
.project-filter-search label{color:var(--muted);font-size:13px}
.project-filter-search input{width:100%}
.project-filter-field{display:flex;flex-direction:column;gap:4px;flex:1 1 220px;min-width:0}
.project-filter-field label{color:var(--muted);font-size:13px}
.project-filter-field .choices{margin-bottom:0}
.project-filter-field select{width:100%}
/* Prevent the raw <select multiple> from flashing tall/expanded before Choices enhances
   it (no-js keeps the native control). Reserve the final ~38px so the layout stays put. */
.js .project-filter-field:not(.has-choices) select{visibility:hidden;height:38px;min-height:38px;overflow:hidden}
.js.choices-unavailable .project-filter-field select{visibility:visible;height:auto}
.project-filter-controls{display:flex;flex-wrap:wrap;align-items:center;gap:14px}

/* MCP access token scope picker — GitHub-like compact grouped scopes (v20260615mcp-scopes) */
.mcp-token-form{display:grid;gap:18px}.mcp-token-form .inline-form{display:grid;grid-template-columns:repeat(2,minmax(220px,1fr));gap:12px}.mcp-scope-picker{border:1px solid var(--line);border-radius:10px;background:rgba(3,6,12,.22);overflow:hidden}.mcp-scope-head{padding:14px 16px;border-bottom:1px solid var(--line);background:rgba(255,255,255,.018)}.mcp-scope-head h3{margin:0 0 4px;font-size:14px;font-weight:700;letter-spacing:-.01em}.mcp-scope-head p{margin:0;font-size:13px}.mcp-scope-table{display:grid}.mcp-scope-group{border-bottom:1px solid var(--line)}.mcp-scope-group:last-child{border-bottom:0}.mcp-scope-row{display:grid;grid-template-columns:minmax(230px,34%) minmax(0,1fr);gap:18px;align-items:start;min-height:34px;margin:0;padding:7px 10px 7px 8px;cursor:pointer}.mcp-scope-row:hover{background:rgba(255,255,255,.035)}.mcp-scope-row-parent{padding-top:12px;padding-bottom:8px;background:rgba(255,255,255,.015)}.mcp-scope-row-child{padding-left:24px}.mcp-scope-name{display:flex;align-items:center;gap:7px;min-width:0;color:var(--text)}.mcp-scope-name strong{font-size:13px;font-weight:700}.mcp-scope-name span{font-size:12px;font-weight:700}.mcp-scope-name code{font-size:11px;color:var(--muted);background:transparent;border:0;padding:0;white-space:nowrap}.mcp-scope-description{font-size:13px;color:var(--text-2);line-height:1.35}.mcp-scope-row input[type=checkbox]{appearance:none;-webkit-appearance:none;display:inline-grid!important;place-content:center;flex:0 0 auto;width:13px!important;min-width:13px!important;height:13px!important;min-height:13px!important;margin:2px 0 0!important;padding:0!important;border:1px solid rgba(255,255,255,.34)!important;border-radius:3px!important;background:rgba(255,255,255,.06)!important;box-shadow:none!important;cursor:pointer}.mcp-scope-row input[type=checkbox]::before{content:"";width:7px;height:7px;transform:scale(0);transition:transform .08s ease-in-out;background:#fff;clip-path:polygon(14% 44%,0 58%,38% 96%,100% 22%,86% 9%,36% 68%)}.mcp-scope-row input[type=checkbox]:checked{border-color:var(--accent-hover)!important;background:var(--accent-bg)!important}.mcp-scope-row input[type=checkbox]:checked::before{transform:scale(1)}.mcp-scope-row input[type=checkbox]:indeterminate{border-color:var(--accent-hover)!important;background:rgba(113,112,255,.7)!important}.mcp-scope-row input[type=checkbox]:indeterminate::before{clip-path:none;height:2px;width:7px;transform:scale(1)}.compact-list{margin:0;padding-left:18px}.compact-list li{margin:2px 0}.token-output{width:100%;min-height:92px}.inline-actions{display:flex;gap:10px;flex-wrap:wrap;margin:10px 0}@media(max-width:780px){.mcp-token-form .inline-form{grid-template-columns:1fr}.mcp-scope-row{grid-template-columns:1fr;gap:2px}.mcp-scope-row-child{padding-left:14px}.mcp-scope-description{padding-left:20px;font-size:12px}}

/* MCP access layout refinement — two-column scope picker and token scope popup (v20260615mcpcompact) */
@media (min-width: 980px){.mcp-scope-table{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start}.mcp-scope-group{border-right:1px solid var(--line)}.mcp-scope-group:nth-child(2n){border-right:0}.mcp-scope-group:nth-last-child(-n+2){border-bottom:0}}
@media (max-width: 979px){.mcp-scope-table{grid-template-columns:1fr}.mcp-scope-group{border-right:0}.mcp-scope-row{grid-template-columns:1fr;gap:4px}.mcp-scope-row-child{padding-left:18px}.mcp-scope-name{flex-wrap:wrap}}
.mcp-token-scopes-dialog{width:min(720px,calc(100vw - 32px));border:0;border-radius:18px;padding:0;background:transparent;color:var(--text)}.mcp-token-scopes-dialog::backdrop{background:rgba(0,0,0,.62);backdrop-filter:blur(2px)}.mcp-token-scopes-card{max-height:calc(100dvh - 64px);overflow:auto}.mcp-token-scope-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:8px;margin:0;padding:0;list-style:none}.mcp-token-scope-list li{display:grid;gap:4px;padding:10px;border:1px solid var(--line);border-radius:10px;background:rgba(255,255,255,.035)}.mcp-token-scope-list code{width:max-content}.simple-table button.compact{min-height:30px;padding:5px 10px;font-size:12px}
.dialog-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:14px}.dialog-head h3{margin:0;font-size:18px;letter-spacing:-.01em}.dialog-head p{margin:4px 0 0}
.token-row-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.token-row-actions form{margin:0}
.mcp-token-edit-dialog .mcp-token-scopes-card{gap:13px;max-height:calc(100dvh - 40px);overflow:hidden}.mcp-token-edit-dialog .dialog-head{margin-bottom:0}.mcp-token-edit-dialog .inline-actions{margin:0}
/* Edit dialog: head + note + Save/Cancel stay pinned; the operations list scrolls. */
.mcp-token-edit-dialog .mcp-scope-picker{margin:0;flex:1 1 auto;min-height:0;overflow:auto}
/* Force a single readable column inside the dialog (the wide create form keeps two). */
.mcp-token-edit-dialog .mcp-scope-table{grid-template-columns:1fr}.mcp-token-edit-dialog .mcp-scope-group{border-right:0;border-bottom:1px solid var(--line)}.mcp-token-edit-dialog .mcp-scope-group:nth-last-child(-n+2){border-bottom:1px solid var(--line)}.mcp-token-edit-dialog .mcp-scope-group:last-child{border-bottom:0}

/* MCP operation names visible under permission scopes (v20260616jqlrelation) */
.mcp-tool-list{display:flex;flex-wrap:wrap;gap:5px 7px;margin-top:6px;align-items:center;font-size:11px;color:var(--muted)}.mcp-tool-list>span{font-weight:700;text-transform:uppercase;letter-spacing:.05em}.mcp-tool-list code{font-size:11px;background:rgba(99,102,241,.12)!important;border:1px solid rgba(129,140,248,.25)!important;border-radius:6px!important;padding:2px 5px!important;color:#c7d2fe!important;white-space:nowrap!important}

/* Project Jira relation mode selector (v20260616jqlrelation) */
.project-jira-relation{border:1px solid var(--line);border-radius:12px;padding:12px;display:flex;gap:16px;align-items:center;flex-wrap:wrap}
.project-jira-relation legend{padding:0 6px;color:var(--muted);font-size:.9rem}
[data-project-jql-panel] textarea{width:100%;min-height:110px;resize:vertical}


/* weekly-plan-realtime-project-cursor */
/* weekly-plan-realtime-avatars-above-card */
.weekly-realtime-bar{display:flex;justify-content:flex-end;align-items:center;min-height:36px;margin:8px 0 10px 0;padding:0 16px;background:transparent;border:0;pointer-events:none}.realtime-avatars{display:flex;align-items:center;justify-content:flex-end;pointer-events:auto;padding:3px 0}.realtime-avatar{width:30px;height:30px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;margin-left:-7px;border:2px solid var(--rt-color,#8ab4ff);background:#172033;color:#fff;font-weight:700;font-size:.72rem;overflow:hidden;box-shadow:0 0 0 2px rgba(0,0,0,.32)}.realtime-avatar:first-child{margin-left:0}.realtime-avatar img{width:100%;height:100%;object-fit:cover}@media(max-width:720px){.weekly-realtime-bar{min-height:32px;margin:6px 0 8px;padding:0 8px}}.weekly-cursor-layer{position:fixed;inset:0;pointer-events:none;z-index:2147483647}.weekly-remote-cursor{position:fixed;left:0;top:0;pointer-events:none;will-change:transform;transition:transform .11s linear}.weekly-remote-cursor span{display:block;width:0;height:0;border-left:10px solid var(--rt-color,#8ab4ff);border-top:7px solid transparent;border-bottom:7px solid transparent;filter:drop-shadow(0 1px 1px rgba(0,0,0,.6));transform:rotate(28deg)}.weekly-remote-cursor b{display:inline-block;margin:2px 0 0 12px;padding:2px 7px;border-radius:999px;background:var(--rt-color,#8ab4ff);color:#06111f;font-size:11px;box-shadow:0 4px 12px rgba(0,0,0,.28);white-space:nowrap}

/* Move the remove (×) button to the START of every multi-select chip so it
   stays visible and clickable even when a project/user name is long enough to
   be truncated with an ellipsis (applies to weekly-plan project pickers, the
   project-view user picker, team filters, etc.). */
.choices[data-type*=select-multiple] .choices__button,
.choices[data-type*=text] .choices__button{
  order:-1!important;
  margin:0 7px 0 0!important;
  padding:0 0 0 12px!important;
  border-left:0!important;
  border-right:1px solid rgba(255,255,255,.22)!important;
}
.choices__list--multiple .choices__item[data-deletable]{padding-left:6px!important;padding-right:8px!important}

/* Grid-toolbar filter selectors must open ABOVE the sticky table header. The
   toolbar isolates its own stacking context that sits over the table-wrap, and
   the open dropdown z-index clears the header (z-index:8) for good measure. */
.grid-toolbar{position:relative;z-index:60;isolation:isolate}
/* Confine the table (and its position:sticky header, which would otherwise float
   up into main's stacking context and composite over the toolbar) to its own
   stacking context BELOW the toolbar. This is what guarantees an open filter
   dropdown renders over the sticky header instead of being covered by it. The
   header's internal z-indexes still order the sticky cells among themselves. */
.grid-card .table-wrap{position:relative;z-index:0}
.team-filter-shell .choices{position:relative}
.team-filter-shell .choices.is-open{z-index:120}
.team-filter-shell .choices__list--dropdown,
.team-filter-shell .choices__list[aria-expanded]{z-index:120!important}
/* Export + Sync Tempo share one row in the toolbar, sitting on the same line. */
.grid-toolbar .toolbar-actions{grid-column:1/-1;display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.grid-toolbar .toolbar-actions .button{width:auto;min-width:0;margin:0}

/* Login denial notice + no-access page + roles permission picker */
.login-notice{text-align:left;padding:12px 14px;margin-bottom:16px;border:1px solid rgba(245,158,11,.32);border-radius:12px;background:rgba(245,158,11,.08);color:var(--text-2)}
.no-access-card{max-width:560px}
.role-perm-picker{margin-top:6px}
/* Role permission dialogs have more rows than the viewport. Keep the header and
   action buttons visible while the Pages and operations picker owns scrolling. */
.role-dialog{width:min(1040px,calc(100vw - 28px));max-height:calc(100dvh - 28px);overflow:hidden}
.role-dialog-card{max-height:calc(100dvh - 28px);display:flex;flex-direction:column;overflow:hidden;min-height:0}
.role-dialog .role-perm-picker{flex:1 1 auto;min-height:220px;max-height:calc(100dvh - 300px);overflow:auto;overscroll-behavior:contain;scrollbar-width:thin}
.role-dialog .mcp-scope-head{position:sticky;top:0;z-index:3;background:linear-gradient(180deg,rgba(18,20,27,.98),rgba(13,15,18,.96));backdrop-filter:blur(6px)}
.role-dialog .tempo-dialog-actions{flex:0 0 auto;margin-top:14px}
@media(max-width:979px){.role-dialog .role-perm-picker{max-height:calc(100dvh - 260px)}}
.role-list .project-row-card{padding-right:240px}
.role-perm-summary{display:flex;flex-wrap:wrap;gap:6px}
.role-system-badge{font-size:10px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--accent-hover)}

/* Users management list redesign (v20260617users) */
.user-sync-summary{overflow:visible}.user-summary-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.user-management-list{display:grid;gap:10px}.user-management-row{display:grid;grid-template-columns:minmax(260px,1.25fr) minmax(210px,1fr) minmax(220px,.95fr) minmax(120px,.55fr) auto;gap:14px;align-items:center;padding:13px 14px;border:1px solid var(--line);border-radius:16px;background:rgba(255,255,255,.035);transition:border-color .15s ease,background .15s ease}.user-management-row:hover{border-color:rgba(113,112,255,.34);background:rgba(255,255,255,.05)}.user-row-person{display:flex;align-items:center;gap:12px;min-width:0}.user-row-person>div{display:grid;gap:2px;min-width:0}.user-row-person strong,.user-row-person span,.user-row-role strong,.user-row-role span{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-row-person strong{font-size:15px}.user-row-person span,.user-row-role span{color:var(--muted);font-size:13px}.user-row-role{min-width:0}.user-row-role strong{font-size:14px}.user-row-team{display:flex;align-items:center;gap:7px;flex-wrap:wrap;min-width:0}.user-row-login{display:grid;gap:2px;min-width:0;justify-self:start}.user-row-login strong{font-size:14px;display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-row-login strong.muted{font-weight:600}.user-row-login .muted,.user-row-login span{color:var(--muted);font-size:13px}.user-row-actions{display:flex;justify-content:flex-end;align-items:center;gap:8px;min-width:max-content}.user-row-actions .row-actions{position:relative}.user-row-actions .row-action-menu form{margin:0}.user-row-actions .row-action-menu a.copy-prev-btn{text-decoration:none}.user-row-actions .row-action-menu .copy-prev-btn{cursor:pointer}.user-dialog-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.user-dialog-checks{display:flex;gap:16px;flex-wrap:wrap;margin-top:2px}.user-sync-log-list{display:grid;gap:10px;max-height:58vh;overflow:auto}.user-sync-log-list p{margin:0;padding:11px 12px;border:1px solid var(--line-soft);border-radius:12px;background:rgba(255,255,255,.03)}@media(max-width:1180px){.user-management-row{grid-template-columns:minmax(240px,1.1fr) minmax(190px,1fr) minmax(170px,.8fr) auto}.user-row-login{grid-column:3}.user-row-actions{grid-column:4;grid-row:1 / span 2}}@media(max-width:820px){.user-management-row{grid-template-columns:1fr}.user-row-login,.user-row-actions{grid-column:auto;grid-row:auto}.user-row-actions{justify-content:flex-start}.user-dialog-grid{grid-template-columns:1fr}}

/* Rich-text editor (Quill) for notification template bodies */
.rte-field{display:flex;flex-direction:column;gap:6px}
.rte-label{font-size:13px;color:var(--muted)}
.rte-field .ql-toolbar.ql-snow,.rte-field .ql-container.ql-snow{border-color:var(--line)}
.rte-field .ql-toolbar.ql-snow{border-radius:10px 10px 0 0;background:rgba(255,255,255,.04)}
.rte-field .ql-container.ql-snow{border-radius:0 0 10px 10px;background:rgba(0,0,0,.18);font-family:inherit;font-size:14px}
.rte-field .ql-editor{min-height:180px;color:var(--text)}
.rte-field .ql-editor.ql-blank::before{color:var(--muted);font-style:normal;left:15px;right:15px}
.rte-field .ql-snow .ql-stroke{stroke:var(--muted)}
.rte-field .ql-snow .ql-fill{fill:var(--muted)}
.rte-field .ql-snow .ql-picker{color:var(--muted)}
.rte-field .ql-snow.ql-toolbar button:hover .ql-stroke,.rte-field .ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke{stroke:var(--text)}
.rte-field .ql-snow.ql-toolbar button.ql-active .ql-stroke{stroke:var(--accent)}
.rte-field .ql-snow.ql-toolbar button.ql-active .ql-fill{fill:var(--accent)}
.rte-field .ql-snow .ql-picker.ql-expanded .ql-picker-label{color:var(--text);border-color:var(--line)}
.rte-field .ql-snow .ql-picker-options{background:var(--surface);border-color:var(--line)!important}
.rte-field .ql-editor a{color:var(--accent-hover)}
.rte-field .ql-snow .ql-tooltip{background:var(--surface);border-color:var(--line);color:var(--text);box-shadow:0 12px 35px rgba(0,0,0,.4)}
.rte-field .ql-snow .ql-tooltip input[type=text]{background:rgba(0,0,0,.25);border-color:var(--line);color:var(--text)}

/* Quill toolbar: neutralise the global button{} styles (min-height/box-shadow/
   radius) that otherwise inflate the toolbar buttons and scale their svg icons */
.rte-field .ql-toolbar.ql-snow{padding:6px 8px;box-shadow:none}
.rte-field .ql-toolbar.ql-snow button{min-height:0;height:24px;width:28px;padding:3px 5px;margin:0;border:none;border-radius:4px;background:none;box-shadow:none;color:inherit}
.rte-field .ql-toolbar.ql-snow button:hover,.rte-field .ql-toolbar.ql-snow button:focus{background:rgba(255,255,255,.07);box-shadow:none}
.rte-field .ql-toolbar.ql-snow button svg{height:18px;width:18px;float:none}
.rte-field .ql-toolbar.ql-snow .ql-formats{margin-right:12px}
.rte-field .ql-toolbar.ql-snow .ql-picker{height:24px;color:var(--muted)}
.rte-field .ql-toolbar.ql-snow .ql-picker-label{box-shadow:none;border-radius:4px;padding:0 4px;display:inline-flex;align-items:center}
.rte-field .ql-toolbar.ql-snow .ql-picker-label:hover{background:rgba(255,255,255,.07)}

/* ---- On-page annotation overlay ---- */
.su-annot-toggle{margin-left:auto;width:30px;height:30px;border-radius:8px;border:1px solid var(--line-soft);background:transparent;color:var(--muted);cursor:pointer;font-size:15px;line-height:1;flex:0 0 auto}
.su-annot-toggle:hover{color:var(--text);border-color:var(--line)}
.su-annot-toggle.is-active{background:#ff4d4f;border-color:#ff4d4f;color:#fff}
.annot-layer{position:absolute;left:0;top:0;z-index:9000;pointer-events:none}
.annot-svg{position:absolute;left:0;top:0;overflow:visible;pointer-events:none}
.annot-shape{pointer-events:none}
.annot-shape-arrow{stroke:#ff4d4f;stroke-width:3}
.annot-arrowfill{fill:#ff4d4f}
.annot-shape-rect{fill:rgba(59,130,246,.12);stroke:#3b82f6;stroke-width:2}
.annot-preview{opacity:.7;stroke-dasharray:5 4}
.annot-pin{position:absolute;transform:translate(-50%,-50%);width:30px;height:30px;min-width:0;min-height:0;border-radius:50%;border:2px solid #ff4d4f;background:#12151c;cursor:pointer;pointer-events:auto;box-shadow:0 2px 10px rgba(0,0,0,.5);display:block;z-index:9001;padding:0;box-sizing:border-box;overflow:visible}
.annot-pin:hover{border-color:#fff}
.annot-pin .annot-pin-av{position:absolute;inset:0;width:100%;height:100%;border-radius:50%;object-fit:cover;display:grid;place-items:center;background:linear-gradient(135deg,var(--accent-bg),#9b8cff);color:#fff;font-size:12px;font-weight:700;overflow:hidden}
.annot-pin .annot-pin-num{position:absolute;right:-5px;bottom:-5px;min-width:16px;height:16px;padding:0 3px;border-radius:8px;background:#ff4d4f;color:#fff;font-size:10px;font-weight:700;display:flex;align-items:center;justify-content:center;border:1.5px solid #12151c;line-height:1;box-sizing:border-box}
.annot-capture{position:absolute;left:0;top:0;z-index:9500;cursor:crosshair;background:rgba(13,15,22,.04)}
html.annot-active{scroll-behavior:auto}
/* While drawing, the capture overlay sits above the whole document — including
   the sidebar/menu — so annotations can be placed there too. The sidebar is
   intentionally NOT lifted above the overlay (that would make the menu
   un-annotatable); instead the tool buttons are detached to <body> and pinned to
   their exact sidebar position (inline fixed left/top/width), with a same-size
   placeholder left behind so nothing reflows. They keep their normal .annot-tools
   look and just rise above the overlay so they stay clickable (switch tools /
   click the active tool again, or press Esc, to cancel). */
.annot-tools.annot-tools-floating{z-index:9700}
.annot-toolbar{position:fixed;right:18px;bottom:18px;z-index:9600;display:flex;gap:6px;align-items:center;background:var(--card,#12151c);border:1px solid var(--line-soft);border-radius:12px;padding:8px;box-shadow:0 8px 30px rgba(0,0,0,.45)}
.annot-toolbar[hidden]{display:none}
.annot-toolbar-title{font-size:12px;color:var(--muted);padding:0 6px;font-weight:600}
.annot-toolbar button{border:1px solid var(--line-soft);background:transparent;color:var(--text);border-radius:8px;padding:6px 10px;font-size:13px;cursor:pointer}
.annot-toolbar button:hover{border-color:var(--line)}
.annot-toolbar button.is-active{background:#ff4d4f;border-color:#ff4d4f;color:#fff}
.annot-modal-back{position:fixed;inset:0;z-index:9700;background:rgba(0,0,0,.55);display:flex;align-items:center;justify-content:center}
.annot-modal{background:var(--card,#12151c);border:1px solid var(--line-soft);border-radius:16px;padding:18px;width:min(460px,92vw);display:flex;flex-direction:column;gap:10px}
.annot-modal h3{margin:0}
.annot-modal textarea{width:100%;resize:vertical;border-radius:10px;border:1px solid var(--line-soft);background:var(--input);color:inherit;padding:10px}
.annot-check{display:flex;align-items:center;gap:8px;font-size:14px;cursor:pointer}
.annot-modal input[type=checkbox],.annot-check input[type=checkbox]{width:auto;min-width:0;min-height:0;margin:0;flex:0 0 auto;cursor:pointer}
.annot-title-field{display:flex;flex-direction:column;gap:5px;font-size:13px}
.annot-title-field[hidden]{display:none}
.annot-assignee-field{display:flex;flex-direction:column;gap:5px;font-size:13px}
.annot-assignee-field[hidden]{display:none}
.annot-modal .annot-assignee,.annot-pop-assign .annot-assignee{width:100%;border-radius:10px;border:1px solid var(--line-soft);background:var(--input);color:inherit;padding:8px}
.annot-pop-assign{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--muted);margin-top:6px}
.annot-pop-assign .annot-assignee{flex:1;padding:5px 6px}
.annot-modal .annot-muted{color:var(--muted);font-weight:400;font-size:11px}
.annot-modal-actions{display:flex;justify-content:flex-end;gap:8px}
.annot-hint{margin:0;font-size:12px;color:var(--muted)}
.annot-popover{position:fixed;z-index:9700;width:min(440px,94vw);max-height:86vh;overflow:auto;background:var(--card,#12151c);border:1px solid var(--line-soft);border-radius:14px;padding:14px;box-shadow:0 12px 40px rgba(0,0,0,.5);font-size:14px}
.annot-pop-head{display:flex;align-items:center;gap:8px;margin-bottom:8px}
.annot-pop-head .annot-muted{margin-left:auto;color:var(--muted);font-size:11px}
.annot-pop-close{border:none;background:transparent;color:var(--muted);cursor:pointer;font-size:14px;min-height:0;padding:2px 4px;box-shadow:none}
.annot-pop-shot{position:relative;display:block;margin:0 0 10px;border:1px solid var(--line-soft);border-radius:10px;overflow:hidden}
.annot-pop-shot img{display:block;width:100%;max-height:260px;object-fit:cover;object-position:top}
.annot-pop-shot-bar{position:absolute;left:0;right:0;bottom:0;display:flex;align-items:center;justify-content:center;gap:10px;padding:4px 8px;background:rgba(0,0,0,.45)}
.annot-pop-shot-nav{border:none;background:rgba(255,255,255,.14);color:#fff;cursor:pointer;min-height:0;padding:0 8px;font-size:16px;line-height:1.6;border-radius:6px;box-shadow:none}
.annot-pop-shot-count{font-size:12px;color:#fff}
.annot-pop-descwrap{position:relative;margin:0 0 8px;display:flex;align-items:flex-start;gap:6px}
.annot-pop-desc{margin:0;line-height:1.45;flex:1;white-space:pre-wrap;word-break:break-word}
.annot-pop-desc--editable{cursor:text;border-radius:6px;padding:2px 4px;margin:-2px -4px;transition:background .12s}
.annot-pop-desc--editable:hover{background:rgba(255,255,255,.05)}
.annot-pop-edit{flex:0 0 auto;border:1px solid var(--line-soft);background:transparent;color:var(--muted);cursor:pointer;border-radius:8px;font-size:12px;min-height:0;padding:3px 7px;box-shadow:none}
.annot-pop-edit:hover{color:var(--text);border-color:var(--line)}
.annot-pop-editta{width:100%;min-height:80px;resize:vertical;border-radius:8px;border:1px solid var(--line-soft);background:var(--input);color:inherit;padding:8px;font:inherit;line-height:1.45}
.annot-pop-editbar{display:flex;gap:8px;justify-content:flex-end;margin-top:6px}
.annot-pop-editbar button{min-height:0;padding:6px 12px;font-size:13px}
.annot-jira-line{margin:0 0 8px}
.annot-comments{list-style:none;padding:0;margin:0 0 8px;display:flex;flex-direction:column;gap:6px;max-height:220px;overflow:auto}
.annot-comments .annot-muted{color:var(--muted);font-size:11px}
.annot-comment-form{display:flex;gap:6px;margin-bottom:8px;align-items:flex-end}
.annot-comment-form input,.annot-comment-form textarea{flex:1;border-radius:8px;border:1px solid var(--line-soft);background:var(--input);color:inherit;padding:6px 8px}
.annot-comment-form textarea{min-height:60px;resize:vertical;line-height:1.4;font:inherit}
.annot-pop-actions{display:flex;gap:6px;flex-wrap:wrap}
.annot-pop-actions button{border:1px solid var(--line-soft);background:transparent;color:var(--text);border-radius:8px;padding:5px 8px;cursor:pointer;font-size:12px}
.annot-pop-actions button.danger{color:var(--danger)}
.annot-pop-shot{cursor:zoom-in}
/* ---- Shared image lightbox ---- */
.lightbox{position:fixed;inset:0;width:100%;height:100%;max-width:100%;max-height:100%;margin:0;padding:0;border:none;background:rgba(8,9,12,.92);color:#fff;display:flex;flex-direction:column;overflow:hidden}
.lightbox::backdrop{background:rgba(0,0,0,.6)}
.lightbox-bar{display:flex;gap:8px;justify-content:flex-end;align-items:center;padding:10px 14px;background:rgba(0,0,0,.35);flex:0 0 auto}
.lightbox-btn{display:inline-flex;align-items:center;justify-content:center;min-height:34px;padding:6px 12px;border-radius:8px;border:1px solid rgba(255,255,255,.18);background:rgba(255,255,255,.08);color:#fff;cursor:pointer;font-size:14px;text-decoration:none;box-shadow:none}
.lightbox-btn:hover{background:rgba(255,255,255,.2)}
.lightbox-close{margin-left:6px}
.lightbox-stage{flex:1 1 auto;min-height:0;overflow:hidden;display:flex;align-items:center;justify-content:center;cursor:grab}
.lightbox.is-grabbing .lightbox-stage{cursor:grabbing}
.lightbox-stage img{max-width:94%;max-height:94%;transform-origin:center center;user-select:none;transition:transform .08s ease-out;box-shadow:0 24px 70px rgba(0,0,0,.65)}
/* ---- @-mention autocomplete + user picker (annotations) ---- */
.mention-menu,.up-menu{position:fixed;z-index:12000;background:var(--card,#12151c);border:1px solid var(--line);border-radius:10px;box-shadow:0 12px 40px rgba(0,0,0,.5);max-height:240px;overflow:auto;padding:4px}
.mention-item,.up-item{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:8px;cursor:pointer;font-size:13px;white-space:nowrap}
.mention-item.is-active,.up-item.is-active{background:rgba(113,112,255,.18)}
.mention-name,.up-name{font-weight:560}
.mention-handle{margin-left:auto;color:var(--muted);font-size:11px;padding-left:10px}
.mention-av,.up-av,.annot-av{width:22px;height:22px;border-radius:50%;object-fit:cover;flex:0 0 auto;display:inline-grid;place-items:center;background:linear-gradient(135deg,var(--accent-bg),#9b8cff);color:#fff;font-size:11px;font-weight:600;overflow:hidden}
.user-picker{display:flex;flex-wrap:wrap;gap:6px;align-items:center;border:1px solid var(--line-soft);border-radius:10px;background:var(--input);padding:6px}
.user-picker .up-chips{display:contents}
.up-chip{display:inline-flex;align-items:center;gap:6px;background:rgba(113,112,255,.16);border:1px solid rgba(113,112,255,.35);border-radius:999px;padding:2px 8px 2px 2px;font-size:12px}
.up-x{border:none;background:transparent;color:inherit;cursor:pointer;font-size:15px;line-height:1;padding:0 2px;min-height:0;box-shadow:none}
.up-x:hover{color:var(--danger)}
.up-input{flex:1;min-width:120px;border:none;background:transparent;padding:4px;min-height:28px;box-shadow:none}
.up-input:focus{box-shadow:none;border:none}
.annot-author{display:inline-flex;align-items:center;gap:7px}
.annot-author .annot-av{width:24px;height:24px}
.annot-share-line{margin:6px 0 0;font-size:12px;color:var(--muted);display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.annot-share-line .annot-av{width:20px;height:20px}
.annot-id-badge{font-family:'JetBrains Mono',ui-monospace,monospace;font-size:11px;background:rgba(113,112,255,.16);border:1px solid rgba(113,112,255,.35);color:var(--text-2);border-radius:6px;padding:1px 6px;white-space:nowrap}
.annot-pop-head .annot-id-badge{margin-left:4px}
.annot-field-label{font-size:12px;color:var(--muted);margin:2px 0 -4px}
.annot-pop-author{display:inline-flex;align-items:center;gap:7px}
.annot-pop-head.annot-pop-drag{cursor:move;user-select:none}
.annot-pop-head.annot-pop-drag .annot-pop-close{cursor:pointer}
/* Sidebar "Annotation mode" block (above the user block) — toggle row + tools
   share one bordered card so it reads as a single annotation-related control. */
.annot-mode{border:1px solid var(--line-soft);border-radius:12px;background:var(--surface);overflow:hidden;transition:border-color .15s,box-shadow .15s}
.annot-mode:has(.annot-switch.is-active){border-color:rgba(59,130,246,.6);box-shadow:0 0 0 1px rgba(59,130,246,.25)}
.annot-mode-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 12px}
.annot-mode-label{display:inline-flex;align-items:center;gap:8px;font-size:13px;font-weight:560;color:var(--text-2)}
.annot-mode-dot{width:8px;height:8px;border-radius:50%;background:var(--muted);transition:background .15s,box-shadow .15s;flex:0 0 auto}
.annot-mode-row:has(.annot-switch.is-active) .annot-mode-dot{background:#3b82f6;box-shadow:0 0 8px #3b82f6}
.annot-mode-row:has(.annot-switch.is-active) .annot-mode-label{color:var(--text)}
.annot-switch{position:relative;flex:0 0 auto;width:42px;height:24px;min-height:0;padding:0;border-radius:999px;border:1px solid var(--line);background:var(--surface-3);cursor:pointer;box-shadow:none;transition:background .15s,border-color .15s}
.annot-switch:hover{border-color:var(--line)}
.annot-switch-knob{position:absolute;top:2px;left:2px;width:18px;height:18px;border-radius:50%;background:#fff;transition:transform .15s;box-shadow:0 1px 3px rgba(0,0,0,.4)}
.annot-switch.is-active{background:#3b82f6;border-color:#3b82f6}
.annot-switch.is-active .annot-switch-knob{transform:translateX(18px)}
.annot-tools{display:flex;gap:6px;padding:10px 12px;border-top:1px solid var(--line-soft);background:rgba(255,255,255,.02)}
.annot-tools[hidden]{display:none}
.annot-tools button{flex:1 1 0;display:inline-flex;align-items:center;justify-content:center;gap:4px;min-height:0;padding:8px 4px;border:1px solid var(--line-soft);border-radius:10px;background:var(--surface-2);color:var(--text-2);font-size:12px;font-weight:560;cursor:pointer;box-shadow:none;white-space:nowrap}
.annot-tools button:hover{color:var(--text);border-color:var(--line)}
.annot-tools button.is-active{background:#3b82f6;border-color:#3b82f6;color:#fff}

/* Notification popup hover polish (v20260618notifhover)
   Keep hover/focus on the whole notification row. The clickable inner button must
   stay visually transparent so global button:hover rules cannot paint a blue pill
   behind just the text. */
.notif-popup .notif-item{
  position:relative;
  border-radius:0;
  transition:background .14s ease, box-shadow .14s ease;
}
.notif-popup .notif-item:hover{
  background:rgba(255,255,255,.07);
  box-shadow:inset 3px 0 0 rgba(113,112,255,.55);
}
.notif-popup .notif-item.is-unread:hover{
  background:rgba(113,112,255,.18);
}
.notif-popup .notif-item-main,
.notif-popup .notif-item-main:hover,
.notif-popup .notif-item-main:focus,
.notif-popup .notif-item-main:active{
  width:auto!important;
  background:transparent!important;
  border-color:transparent!important;
  box-shadow:none!important;
  transform:none!important;
  color:var(--text)!important;
}
.notif-popup .notif-item-main:focus-visible{
  outline:2px solid rgba(130,143,255,.7);
  outline-offset:3px;
  border-radius:8px;
}
.notif-popup .notif-item:hover .notif-item-body{
  color:var(--text-2);
}

/* Weekly-plan wishes: the second (preference) swimlane inside each grid cell, plus
   the toolbar toggle and the copy-to-booking controls. A blue accent keeps wishes
   visually distinct from the purple booking line above them. */
.wishes-toggle-shell{display:inline-flex;align-items:center;gap:8px;white-space:nowrap;color:var(--muted);font-size:12px;cursor:pointer;padding:9px 12px;border:1px solid var(--line);border-radius:12px;background:var(--input)}
.wishes-toggle-shell input{width:auto;min-height:auto;cursor:pointer}
.wishes-toggle-shell span{font-weight:560;color:var(--text-2)}
.wish-lane{margin-top:8px;padding-top:7px;border-top:1px dashed rgba(59,130,246,.35);overflow:hidden;transition:opacity .16s ease,max-height .2s ease,margin-top .2s ease,padding-top .2s ease;max-height:400px}
/* "Show wishes" toggles this class on the grid card; lanes are kept in the DOM and
   collapsed/revealed (no navigation) for a smooth, instant show/hide. */
.grid-card:not(.wishes-on) .wish-lane{max-height:0;margin-top:0;padding-top:0;border-top-color:transparent;opacity:0;pointer-events:none}
/* The wish lane clips its content (overflow:hidden) so the max-height collapse
   animates cleanly. But the per-cell project/user picker's Choices dropdown is
   rendered inside the lane, so that same clip hid the entire options list —
   opening a wish picker showed an empty box and nothing could be selected. Let
   the lane overflow while a dropdown is actually open (no dropdown is open during
   a show/hide toggle, so the collapse animation is unaffected). */
.wish-lane:has(.choices.is-open){overflow:visible}
.wish-lane-head{display:flex;align-items:center;gap:6px;margin-bottom:5px;min-height:22px;flex-wrap:wrap}
.wish-tag{display:inline-flex;align-items:center;padding:2px 8px;border-radius:999px;border:1px solid rgba(59,130,246,.4);background:rgba(59,130,246,.14);color:#bcd7ff;font-size:10px;font-weight:600;letter-spacing:.06em;text-transform:uppercase}
.avatar-wish{width:20px;height:20px;font-size:9px}
.avatar-wish+.avatar-wish{margin-left:-6px}
.wish-copy-btn{margin-left:auto;min-height:0;padding:3px 8px!important;border-radius:8px!important;border:1px solid rgba(59,130,246,.4)!important;background:rgba(59,130,246,.12)!important;color:#bcd7ff!important;box-shadow:none!important;font-size:11px;font-weight:560;white-space:nowrap;cursor:pointer}
.wish-copy-btn:hover{background:rgba(59,130,246,.22)!important;border-color:rgba(59,130,246,.6)!important}
.wish-copy-btn:disabled{opacity:.55;cursor:default}
/* The global `button{display:inline-flex}` rule (author origin) beats the UA `[hidden]`
   rule, so the hidden attribute needs an explicit override to actually hide the button. */
.wish-copy-btn[hidden]{display:none!important}
.user-wish-copy-btn,.project-wish-copy-btn{border-color:rgba(59,130,246,.32)!important}
.user-wish-copy-btn b,.project-wish-copy-btn b{color:#bcd7ff}
.wish-picker-lite{border-color:rgba(59,130,246,.3)!important;background:rgba(59,130,246,.05)!important}
.wish-picker-lite:hover{border-color:rgba(59,130,246,.5)!important;background:rgba(59,130,246,.1)!important}
.wish-picker-lite span{border-color:rgba(59,130,246,.4)!important;background:rgba(59,130,246,.16)!important}
.wish-lane .choices__inner{background:rgba(59,130,246,.06)!important;border-color:rgba(59,130,246,.28)!important}
.wish-lane .choices__list--multiple .choices__item{border-color:rgba(59,130,246,.4)!important;background:rgba(59,130,246,.16)!important}
/* Brief highlight on the booking cell when a wish is copied into it (no full reload). */
.wish-copied-flash{animation:wishCopiedFlash 1.2s ease-out}
@keyframes wishCopiedFlash{0%{box-shadow:inset 0 0 0 2px rgba(59,130,246,.9);background:rgba(59,130,246,.22)}100%{box-shadow:inset 0 0 0 2px rgba(59,130,246,0);background:transparent}}
/* Light theme: the wish accents use a pale blue (#bcd7ff) tuned for the dark grid, which
   washes out to near-invisible on white and reads as "disabled". Darken text/borders so
   the wish line looks just as active as the booking line. */
html[data-theme="light"] .wish-tag{color:#1d4ed8;background:rgba(59,130,246,.12);border-color:rgba(59,130,246,.5)}
html[data-theme="light"] .wish-copy-btn{color:#1d4ed8!important;background:rgba(59,130,246,.1)!important;border-color:rgba(59,130,246,.5)!important}
html[data-theme="light"] .wish-copy-btn:hover{background:rgba(59,130,246,.18)!important;border-color:rgba(59,130,246,.65)!important}
html[data-theme="light"] .user-wish-copy-btn b,html[data-theme="light"] .project-wish-copy-btn b{color:#1d4ed8}
html[data-theme="light"] .wish-picker-lite{background:rgba(59,130,246,.06)!important;border-color:rgba(59,130,246,.42)!important}
html[data-theme="light"] .wish-picker-lite:hover{background:rgba(59,130,246,.12)!important;border-color:rgba(59,130,246,.6)!important}

/* weekly-plan-comment-icon-white: keep the user/project weekly-plan comment
   indicator as a plain white speech-bubble icon, matching the annotation list.
   Use a CSS mask instead of relying on inherited SVG stroke so global button/SVG
   rules cannot turn the icon into a dark empty pill. */
.sticky.user .comment-indicator,
.project-sticky-cell .comment-indicator{
  position:absolute!important;
  right:11px!important;
  top:40px!important;
  z-index:34!important;
  display:inline-grid!important;
  place-items:center!important;
  width:24px!important;
  min-width:24px!important;
  max-width:24px!important;
  height:24px!important;
  min-height:24px!important;
  max-height:24px!important;
  padding:0!important;
  margin:0!important;
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
  box-shadow:none!important;
  color:#fff!important;
  line-height:1!important;
  font-size:0!important;
  transform:none!important;
  appearance:none!important;
  -webkit-appearance:none!important;
}
.sticky.user .comment-indicator svg,
.project-sticky-cell .comment-indicator svg{
  display:none!important;
}
.sticky.user .comment-indicator::before,
.project-sticky-cell .comment-indicator::before{
  content:"";
  display:block;
  width:16px;
  height:16px;
  background:#fff;
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='black' d='M20 2H4a2 2 0 0 0-2 2v18l4-4h14a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2Z'/%3E%3C/svg%3E") center/contain no-repeat;
  mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='black' d='M20 2H4a2 2 0 0 0-2 2v18l4-4h14a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2Z'/%3E%3C/svg%3E") center/contain no-repeat;
}
.sticky.user .comment-indicator:hover,
.sticky.user .comment-indicator:focus-visible,
.project-sticky-cell .comment-indicator:hover,
.project-sticky-cell .comment-indicator:focus-visible{
  background:transparent!important;
  box-shadow:none!important;
  color:#fff!important;
  outline:1px solid rgba(255,255,255,.28);
  outline-offset:2px;
}

/* ── Wishes ─────────────────────────────────────────────────────────────── */
.wishes-block .section-head{margin-bottom:10px}
.wishes-list{display:flex;flex-direction:column}
.wish-row{display:flex;flex-direction:column;align-items:stretch;gap:2px;padding:6px 6px;border-bottom:1px solid var(--line)}
.wish-row:last-child{border-bottom:0}
.wish-row.dragging{opacity:.45}
.wish-row.is-hidden{opacity:.5}
.wish-row.wish-row-new{opacity:.92}
.wish-row-main{display:flex;align-items:center;gap:10px}
.wish-drag{cursor:grab;color:var(--muted);font-size:13px;line-height:1;user-select:none;padding:0 2px;flex:0 0 auto}
.wish-drag:active{cursor:grabbing}
.wish-editor-wrap{flex:1;min-width:0}
.wish-editor .ql-container.ql-bubble{border:0;font-family:inherit;font-size:14px}
.wish-editor .ql-editor{padding:4px 6px;min-height:24px;color:var(--text);line-height:1.5}
.wish-editor .ql-editor.ql-blank::before{left:6px;right:6px;color:var(--muted);font-style:normal}
.wish-editor .ql-editor a{color:var(--accent-hover,var(--accent))}
/* Compact bubble toolbar: smaller icons with space between them */
.ql-bubble .ql-toolbar{padding:3px 4px}
.ql-bubble .ql-toolbar .ql-formats{margin-right:10px}
.ql-bubble .ql-toolbar button{width:22px;height:22px;padding:3px;margin:0 1px}
.ql-bubble .ql-toolbar button svg{width:15px;height:15px}
.ql-bubble .ql-toolbar .ql-picker.ql-color-picker{width:24px;height:22px}
.ql-bubble .ql-toolbar .ql-color-picker .ql-picker-label{padding:2px}
.ql-bubble .ql-toolbar .ql-color-picker .ql-picker-label svg{width:15px;height:15px}
/* The focused row (and its popup toolbar / colour dropdown) must paint above the
   rows below it, with a solid dropdown background so nothing shows through. */
.wish-row:focus-within{position:relative;z-index:6}
.wish-editor .ql-tooltip.ql-bubble{z-index:9990}
.ql-bubble .ql-color-picker .ql-picker-options{z-index:9991;background:var(--surface);border:1px solid var(--line)!important;box-shadow:0 10px 30px rgba(0,0,0,.5);padding:5px}
/* meta line sits UNDER the editor and spans the full block width */
.wish-meta{display:flex;align-items:center;gap:8px;white-space:nowrap;color:var(--muted);font-size:11.5px;padding:0 6px 2px}
.wish-author{overflow:hidden;text-overflow:ellipsis;max-width:45%}
.wish-avatar{width:20px;height:20px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;overflow:hidden;background:rgba(255,255,255,.08);font-size:10px;color:var(--text);flex:0 0 auto}
.wish-avatar img{width:100%;height:100%;object-fit:cover}
.wish-date{font-variant-numeric:tabular-nums;margin-left:auto}
.wish-actions{display:flex;gap:2px;opacity:.4;transition:opacity .15s}
.wish-row:hover .wish-actions,.wish-row:focus-within .wish-actions{opacity:1}
.wish-actions button{display:inline-flex;align-items:center;justify-content:center;padding:3px 5px;line-height:0;color:var(--muted)}
.wish-actions button:hover{color:var(--text)}
.wish-actions .wish-delete:hover{color:#f87171}
.wish-actions svg,.wish-drag svg{display:block}
/* Per-wish week MULTISELECT. An accent token pill holding the selected weeks as chips
   (each with a × to clear it); click it to open .wish-week-menu to tick weeks / clear
   all. Renders on every surface, between the editor and the row actions. */
.wish-week{display:inline-flex;align-items:center;gap:4px;flex:0 0 auto;flex-wrap:wrap;max-width:230px;cursor:pointer;padding:2px 6px 2px 7px;border:1px solid color-mix(in srgb,var(--accent) 40%,var(--line));border-radius:12px;background:color-mix(in srgb,var(--accent) 8%,var(--input));transition:border-color .15s,background .15s,box-shadow .15s}
.wish-week:hover{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 14%,var(--input))}
.wish-week:focus{outline:none}
.wish-week:focus-visible{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 22%,transparent)}
.wish-week-chips{display:inline-flex;align-items:center;gap:4px;flex-wrap:wrap}
.wish-week-ph{color:color-mix(in srgb,var(--accent) 60%,var(--muted));font-size:11px;font-weight:600;padding:1px 2px}
.wish-week-chip{display:inline-flex;align-items:center;gap:2px;padding:1px 4px 1px 7px;border-radius:999px;background:color-mix(in srgb,var(--accent) 26%,transparent);color:var(--accent);font-size:11px;font-weight:700;font-variant-numeric:tabular-nums;line-height:1.5}
.wish-week-x{min-height:0;padding:0 1px;margin:0;border:0;background:transparent;color:var(--accent);font-size:13px;line-height:1;cursor:pointer;opacity:.75}
.wish-week-x:hover{opacity:1;color:#f87171}
.wish-week-caret{color:var(--accent);font-size:9px;line-height:1;padding:0 2px;opacity:.85;pointer-events:none;margin-left:auto}
/* Read-only surface: bare chips, no pill frame. */
.wish-week-static{border-color:transparent;background:transparent;padding:0;cursor:default;max-width:none}
/* Multiselect dropdown (fixed, mirrors the @mention menu so scroll containers don't clip it). */
.wish-week-menu{position:fixed;z-index:9800;background:var(--surface);background:color-mix(in srgb,var(--surface) 94%,transparent);backdrop-filter:blur(10px);border:1px solid var(--line);border-radius:10px;box-shadow:0 12px 35px rgba(0,0,0,.45);padding:4px;min-width:222px;display:flex;flex-direction:column}
.wish-week-head{padding:2px 2px 5px}
.wish-week-search{width:100%;min-height:0;padding:6px 9px;font-size:12.5px;border:1px solid var(--line);border-radius:8px;background:var(--input);color:var(--text)}
.wish-week-search:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 20%,transparent)}
.wish-week-list{max-height:230px;overflow-y:auto}
.wish-week-item{display:flex;align-items:center;gap:7px;padding:6px 8px;border-radius:8px;cursor:pointer;color:var(--text);font-size:13px;white-space:nowrap}
.wish-week-item.is-active,.wish-week-item:hover{background:color-mix(in srgb,var(--accent) 18%,transparent)}
.wish-week-item .wish-week-check{width:14px;flex:0 0 auto;color:var(--accent);font-weight:700;font-size:12px;text-align:center}
.wish-week-item .wish-week-num{font-weight:700;font-variant-numeric:tabular-nums;color:var(--accent);min-width:32px}
.wish-week-item:not(.is-selected) .wish-week-num{color:var(--text)}
.wish-week-item .wish-week-tag{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);background:rgba(255,255,255,.06);border-radius:999px;padding:1px 7px}
.wish-week-item .wish-week-range{margin-left:auto;color:var(--muted);font-size:11.5px;font-variant-numeric:tabular-nums}
.wish-week-empty{color:var(--muted);padding:8px;font-size:12.5px}
.wish-week-clear{margin-top:4px;width:100%;min-height:0;padding:7px;border:0;border-top:1px solid var(--line);border-radius:0 0 8px 8px;background:transparent;color:#f87171;font-size:12px;font-weight:600;cursor:pointer}
.wish-week-clear:hover{background:color-mix(in srgb,#f87171 12%,transparent)}
.wish-week-clear[hidden]{display:none}
.wish-empty{color:var(--muted);padding:8px 6px;font-size:14px}
.wishes-more{margin-top:8px}
/* @mention dropdown (above the floating bar) — translucent like the bar */
.wish-mention-menu{position:fixed;z-index:9800;background:var(--surface);background:color-mix(in srgb,var(--surface) 80%,transparent);backdrop-filter:blur(10px);border:1px solid var(--line);border-radius:10px;box-shadow:0 12px 35px rgba(0,0,0,.45);padding:4px;min-width:200px;max-width:300px}
.wish-mention-item{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:8px;cursor:pointer;color:var(--text);font-size:13px}
.wish-mention-item.is-active,.wish-mention-item:hover{background:rgba(255,255,255,.08)}
.wish-mention-item small{color:var(--muted)}
.wish-mention-avatar{width:22px;height:22px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;overflow:hidden;background:rgba(255,255,255,.08);font-size:11px;flex:0 0 auto}
.wish-mention-avatar img{width:100%;height:100%;object-fit:cover}
/* Dashboard wishes block: compact single-line rows (text · author/date · hide, text
   wraps), showing ~5 then scrolling the rest. */
[data-wishes-context="dashboard"] .wishes-list{max-height:300px;overflow-y:auto}
[data-wishes-context="dashboard"] .wish-row{padding:3px 4px}
[data-wishes-context="dashboard"] .wish-row-main{align-items:flex-start;gap:6px}
[data-wishes-context="dashboard"] .wish-editor .ql-editor{padding:2px 4px;min-height:20px}
[data-wishes-context="dashboard"] .wish-meta{padding:0;font-size:11px;flex:0 0 auto;align-self:center}
[data-wishes-context="dashboard"] .wish-date{margin-left:0}
[data-wishes-context="dashboard"] .wish-actions,[data-wishes-context="dashboard"] .wish-drag{align-self:center}
/* Tight surfaces: keep the week pill vertically centred and cap its width on the
   compact dashboard block / narrow floating bar so many weeks don't crowd the row. */
[data-wishes-context="dashboard"] .wish-week,[data-wishes-context="bar"] .wish-week{align-self:center;max-width:160px}
/* Floating, draggable, RESIZABLE, semi-transparent sticky bar. Size + position are
   remembered per user (localStorage keyed by user id). Capped to the viewport so the
   inner body always scrolls and stays reachable. */
.wishes-bar{position:fixed;right:18px;bottom:18px;z-index:9600;width:460px;height:60vh;min-width:300px;min-height:200px;max-width:calc(100vw - 24px);max-height:calc(100vh - 24px);resize:both;display:flex;flex-direction:column;background:var(--surface);background:color-mix(in srgb,var(--surface) 96%,transparent);backdrop-filter:blur(10px);border:1px solid var(--line);border-radius:14px;box-shadow:0 18px 48px rgba(0,0,0,.5);overflow:hidden}
.wishes-bar[hidden]{display:none}
.wishes-bar-head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 10px;cursor:move;border-bottom:1px solid var(--line);background:rgba(255,255,255,.04);flex:0 0 auto}
.wishes-bar-title{font-weight:600;font-size:13px;color:var(--text)}
.wishes-bar-close{padding:0 8px;font-size:16px;line-height:1}
.wishes-bar-body{overflow-y:auto;padding:6px 8px;flex:1 1 auto;min-height:0}
/* --- Weekly-plan per-viewer pinning: lane controls + curated sub-labels --- */
.row-lead{display:flex;align-items:flex-start;gap:8px;min-width:0}
.wp-row-controls{flex:0 0 auto;display:flex;flex-direction:column;align-items:center;gap:4px;padding-top:2px}
.wp-pin-btn{min-height:0;width:24px;height:24px;padding:0;border:0;background:transparent;box-shadow:none;font-size:13px;line-height:1;cursor:pointer;opacity:.4;filter:grayscale(1);transition:opacity .12s,filter .12s}
.wp-pin-btn:hover{background:transparent;opacity:.85}
.wp-pin-btn.is-pinned{opacity:1;filter:none}
.wp-drag-handle{display:inline-grid;place-items:center;width:22px;height:18px;color:var(--muted);font-size:13px;line-height:1;cursor:grab;-webkit-user-select:none;user-select:none}
.wp-drag-handle:active{cursor:grabbing}
tr.user-row.dragging,tr.project-row.dragging{opacity:.5;outline:1px dashed var(--accent);background:rgba(113,112,255,.08)}
.row-sublabel{display:block;min-width:0;margin-top:1px;color:var(--muted);font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.weekly-report-label.is-clickable{cursor:pointer;color:var(--accent-hover);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:2px;transition:color .12s,text-decoration-thickness .12s}
.weekly-report-label.is-clickable:hover,.weekly-report-label.is-clickable:focus-visible{color:#fff;text-decoration-thickness:2px;outline:none}
.tempo-grid .user-card-mini .row-sublabel{white-space:normal!important;overflow:visible!important;text-overflow:clip!important;overflow-wrap:anywhere;line-height:1.18}
.wp-plan-pin-btn.is-pinned{border-color:rgba(113,112,255,.5);color:var(--accent-hover)}
/* Weekly-plan named swimlanes: compact lane-head chrome (CSS-chevron collapse caret,
   click-to-rename name, hover-revealed reorder handle + delete) with the hours summary
   in the second (day-spanning) cell; collapsed bodies; the lane picker dialog. */
.teamrow .swimlane-head{min-height:0!important}
.swimlane-head .lane-collapse-btn{flex:0 0 auto;display:inline-grid;place-items:center;width:18px;height:18px;min-height:0;padding:0;border:0;background:transparent;box-shadow:none;cursor:pointer}
.swimlane-head .lane-collapse-btn::before{content:"";width:6px;height:6px;border-right:1.7px solid var(--accent-hover);border-bottom:1.7px solid var(--accent-hover);transform:rotate(45deg);transition:transform .15s;margin-top:-2px}
.swimlane-head .lane-collapse-btn[aria-expanded="false"]::before{transform:rotate(-45deg)}
.swimlane-head .lane-collapse-btn:hover::before{border-color:#fff}
.swimlane-head .lane-name[data-lane-rename]{cursor:text;border-radius:6px;padding:1px 5px;margin:0 -3px}
.swimlane-head .lane-name[data-lane-rename]:hover{background:rgba(255,255,255,.08)}
.lane-rename-input{min-height:0!important;height:21px;width:100%;max-width:none;padding:1px 6px;font:inherit;font-size:12px;font-weight:700;border-radius:6px;border:1px solid rgba(113,112,255,.6);background:var(--input);color:var(--text)}
.swimlane-head .lane-drag-handle{flex:0 0 auto;display:inline-grid;place-items:center;width:18px;height:18px;color:var(--muted)!important;font-weight:400!important;font-size:12px;line-height:1;cursor:grab;opacity:.4;-webkit-user-select:none;user-select:none}
.swimlane-head:hover .lane-drag-handle{opacity:.8}
.swimlane-head .lane-drag-handle:active{cursor:grabbing}
.swimlane-head .lane-delete-btn{flex:0 0 auto;margin-left:auto;display:inline-grid;place-items:center;width:18px;height:18px;min-height:0;padding:0;border:0;background:transparent;color:var(--muted)!important;font-weight:400!important;font-size:15px;line-height:1;cursor:pointer;box-shadow:none;opacity:.35}
.swimlane-head .lane-delete-btn svg{display:block;width:14px;height:14px}
.swimlane-head:hover .lane-delete-btn{opacity:.7}
.swimlane-head .lane-delete-btn:hover{color:#fecaca!important;opacity:1;background:rgba(248,113,113,.16);border-radius:5px}
.pin-lane-head-group.lane-dragging{opacity:.5}
.teamrow .teamrow-fill{vertical-align:middle!important}
.teamrow .teamrow-fill .swimlane-summary{display:inline-block;color:var(--muted);font-size:11.5px;font-weight:500;letter-spacing:0;text-transform:none;white-space:nowrap;padding:0 14px;line-height:1.2}
/* Month view scrolls horizontally — keep each swimlane's "N projects · …" summary pinned
   right after the sticky first column instead of scrolling out of view. The offset tracks
   --wp-first-col (the project-view first-column width) so it never overlaps that column. */
.tempo-grid.view-project.mode-month .teamrow .teamrow-fill{position:static!important}
.tempo-grid.view-project.mode-month .teamrow .teamrow-fill .swimlane-summary{position:sticky;left:var(--wp-first-col);z-index:6;background:rgba(16,18,23,.92);border-radius:8px}
tbody.pin-lane.is-collapsed{display:none!important}
.add-swimlane-btn{box-shadow:none}
.add-swimlane-btn:hover{background:var(--surface-2);color:var(--text)}
.add-swimlane-btn span{font-weight:560;color:var(--text-2)}
.swimlane-picker-card{display:flex;flex-direction:column;gap:14px;min-width:min(420px,calc(100vw - 44px))}
.swimlane-picker-options{display:grid;gap:8px;max-height:46vh;overflow:auto}
.swimlane-picker-options:empty{display:none}
.swimlane-option{justify-content:flex-start;text-align:left;background:var(--surface);color:var(--text);border:1px solid var(--line);box-shadow:none;font-weight:560}
.swimlane-option:hover{background:rgba(113,112,255,.16);border-color:rgba(113,112,255,.5);color:#fff}
.swimlane-picker-new{display:flex;gap:8px;align-items:center;border-top:1px solid var(--line-soft);padding-top:12px}
.swimlane-picker-new input{flex:1 1 auto}
.swimlane-picker-new .button{flex:0 0 auto;white-space:nowrap}
/* add-projects mode: put the project selector and the "Add projects" button on one row.
   The card is a column (head / picker / button-row); wrap the picker + button onto a
   shared line (head keeps its own full-width row) and drop the now-redundant heading +
   help text — the dialog subtitle already explains what to pick. */
#swimlane-picker-dialog[data-mode="add-items"] .swimlane-picker-card{flex-flow:row wrap;align-items:center}
#swimlane-picker-dialog[data-mode="add-items"] .tempo-dialog-head{flex:1 1 100%}
#swimlane-picker-dialog[data-mode="add-items"] .swimlane-picker-options{display:none}
#swimlane-picker-dialog[data-mode="add-items"] .swimlane-picker-projects{order:1;flex:1 1 auto;min-width:0;border-top:0;padding-top:0}
#swimlane-picker-dialog[data-mode="add-items"] .swimlane-picker-projects>span,
#swimlane-picker-dialog[data-mode="add-items"] .swimlane-picker-projects>small,
#swimlane-picker-dialog[data-mode="add-items"] .swimlane-picker-projects [data-swimlane-project-help]{display:none}
#swimlane-picker-dialog[data-mode="add-items"] .swimlane-picker-new{order:2;flex:0 0 auto;border-top:0;padding-top:0}

/* weekly-plan-project-swimlane-ui: explicit project-view lane controls + project picker affordances */
.tempo-grid.view-project{--wp-first-col:300px}
.tempo-grid.view-project th:nth-child(1),.tempo-grid.view-project td:nth-child(1){width:var(--wp-first-col)!important}
/* Narrow first column → let the day columns share the freed width (override the
   generic .tempo-grid 13% day-column cap). Long names in the first column wrap.
   Week mode only — month mode keeps its fixed-width scrolling columns. */
.tempo-grid.view-project:not(.mode-month) th:nth-child(n+2),.tempo-grid.view-project:not(.mode-month) td:nth-child(n+2){width:auto!important}
.tempo-grid.view-project th.user-col{padding:8px 10px!important;vertical-align:middle!important}
.weekly-first-head-cell{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;min-width:0}
.weekly-first-head-cell>span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.project-head-add-swimlane{width:auto!important;min-width:0!important;min-height:28px!important;padding:5px 9px!important;border-radius:9px!important;border:1px solid rgba(113,112,255,.42)!important;background:rgba(113,112,255,.13)!important;color:#e6e8ff!important;box-shadow:none!important;font-size:11px!important;font-weight:750!important;line-height:1.1!important;white-space:nowrap!important;justify-self:end;cursor:pointer}
.project-head-add-swimlane:hover{background:rgba(113,112,255,.24)!important;border-color:rgba(113,112,255,.72)!important;color:#fff!important;transform:none!important}
.tempo-grid.view-project .teamrow .team-sticky-cell{padding:7px 8px!important;padding-right:8px!important;min-width:0!important;overflow:hidden!important}
.tempo-grid.view-project .teamrow .swimlane-head{display:flex!important;align-items:center!important;gap:7px!important;min-width:0!important;width:100%!important;flex-wrap:nowrap!important}
.tempo-grid.view-project .swimlane-head .lane-name{flex:1 1 auto!important;min-width:0!important;max-width:none!important;color:#d9ddff!important;font-size:12px!important;line-height:1.2!important;white-space:normal!important;overflow:visible!important;text-overflow:clip!important;overflow-wrap:anywhere}
/* The unassigned/static lane name is not editable — render it as a plain label
   (hug its text instead of stretching like an input field, default cursor). */
.tempo-grid.view-project .swimlane-head .lane-name-static{flex:0 1 auto!important;cursor:default;color:#aab0d4!important;font-weight:600!important}
.tempo-grid.view-project .swimlane-head .lane-name[data-lane-rename]{border:1px solid transparent;padding:3px 6px;margin:0;border-radius:8px;background:rgba(255,255,255,.035)}
.tempo-grid.view-project .swimlane-head .lane-name[data-lane-rename]:hover{background:rgba(113,112,255,.14);border-color:rgba(113,112,255,.35)}
.tempo-grid.view-project .swimlane-head .lane-drag-handle{order:-2;width:22px!important;height:22px!important;opacity:1!important;border:1px solid rgba(113,112,255,.38);border-radius:7px;background:rgba(113,112,255,.12);color:#c7d2fe!important;font-size:0!important;line-height:1!important;cursor:grab;box-shadow:none!important;position:relative}
.tempo-grid.view-project .swimlane-head .lane-drag-handle::before{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:12px;height:12px;background:radial-gradient(circle,#c7d2fe 1.5px,transparent 1.7px) 0 0/6px 6px}
.tempo-grid.view-project .swimlane-head .lane-collapse-btn{order:-1;width:20px!important;height:20px!important;border-radius:7px!important;background:rgba(255,255,255,.035)!important}
.tempo-grid.view-project .swimlane-head .lane-delete-btn{width:22px!important;height:22px!important;opacity:.9!important;border:1px solid rgba(248,113,113,.3)!important;border-radius:7px!important;background:rgba(248,113,113,.08)!important;color:#fecaca!important;font-size:16px!important;line-height:1!important;box-shadow:none!important}
.tempo-grid.view-project .swimlane-head .lane-delete-btn:hover{opacity:1!important;background:rgba(248,113,113,.18)!important;border-color:rgba(248,113,113,.58)!important;color:#fff!important}
.project-add-row td{background:rgba(113,112,255,.045)!important;border-top:1px dashed rgba(113,112,255,.26)!important}
.project-add-cell{padding:7px 8px!important}
.project-lane-add-project-btn{width:100%!important;min-height:32px!important;padding:7px 10px!important;border-radius:10px!important;border:1px dashed rgba(113,112,255,.48)!important;background:rgba(113,112,255,.1)!important;color:#e6e8ff!important;box-shadow:none!important;font-size:12px!important;font-weight:750!important;cursor:pointer}
.project-lane-add-project-btn:hover{background:rgba(113,112,255,.2)!important;border-style:solid!important;color:#fff!important;transform:none!important}
.project-add-fill{color:var(--muted);font-size:11.5px;vertical-align:middle!important}
.swimlane-picker-dialog{overflow:visible!important}
.swimlane-picker-card{overflow:visible!important}
.swimlane-picker-projects{display:grid;gap:7px;border-top:1px solid var(--line-soft);padding-top:12px}
.swimlane-picker-projects[hidden]{display:none!important}
.swimlane-picker-projects>span{font-size:11px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.swimlane-picker-projects select{width:100%;min-height:190px;border:1px solid var(--line);border-radius:12px;background:var(--input);color:var(--text);padding:8px;font:inherit;box-shadow:inset 0 1px 0 rgba(255,255,255,.03)}
.swimlane-picker-projects .choices{width:100%;margin:0;overflow:visible!important}
.swimlane-picker-projects .choices__inner{width:100%!important;min-height:42px!important}
.swimlane-picker-projects .choices__list--dropdown,.swimlane-picker-projects .choices__list[aria-expanded]{z-index:10000!important;width:100%!important;min-width:100%!important;max-width:100%!important;border-radius:0 0 12px 12px!important}
.swimlane-picker-projects .choices__list--multiple .choices__item{max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.swimlane-picker-projects option{padding:6px 8px;border-radius:6px}
.swimlane-picker-projects option:checked{background:rgba(113,112,255,.38);color:#fff}

/* Custom confirm / alert popups (window.uiConfirm / window.uiAlert) that replace
   the native browser confirm()/alert() boxes. Native <dialog> + showModal(), styled
   to match the .tempo-dialog family. */
.ui-modal{width:min(460px,calc(100vw - 32px));padding:0;border:1px solid var(--line);border-radius:20px;background:var(--bg-2);color:var(--text);box-shadow:0 28px 90px rgba(0,0,0,.62)}
.ui-modal::backdrop{background:rgba(4,5,7,.62);backdrop-filter:blur(8px)}
.ui-modal-card{padding:24px;margin:0;border-radius:inherit;background:radial-gradient(circle at 100% 0,rgba(113,112,255,.16),transparent 16rem),var(--panel)}
.ui-modal.is-danger .ui-modal-card{background:radial-gradient(circle at 100% 0,rgba(239,68,68,.15),transparent 16rem),var(--panel)}
.ui-modal-icon{display:grid;place-items:center;width:46px;height:46px;margin-bottom:15px;border-radius:14px;font-size:22px;line-height:1;background:rgba(113,112,255,.16);border:1px solid rgba(113,112,255,.3)}
.ui-modal.is-danger .ui-modal-icon{background:rgba(239,68,68,.14);border-color:rgba(239,68,68,.34)}
.ui-modal-title{margin:0;font-size:19px;font-weight:560;letter-spacing:-.02em;line-height:1.25}
.ui-modal-message{margin:9px 0 0;color:var(--muted);font-size:14px;line-height:1.5;white-space:pre-wrap}
.ui-modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:22px}
.ui-modal-actions button{min-width:104px}
.ui-modal[open]{animation:ui-modal-pop .16s ease-out}
@keyframes ui-modal-pop{from{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:none}}
@media(max-width:560px){.ui-modal-actions{display:grid}.ui-modal-actions button{width:100%}}

/* ===== Guided tour (Driver.js) — dark theme to match the app ===== */
.driver-popover{background-color:#14161a;color:var(--text);border:1px solid var(--line);border-radius:14px;padding:16px 16px 14px;max-width:320px;box-shadow:0 24px 70px rgba(0,0,0,.55);font:inherit}
.driver-popover-title{font:inherit;font-size:15px;font-weight:600;color:var(--text);line-height:1.35;padding-right:18px}
.driver-popover-description{font:inherit;font-size:13px;color:var(--text-2);line-height:1.5;margin-top:6px}
.driver-popover-description b{color:var(--text)}
.driver-popover-description code{font-family:'JetBrains Mono',ui-monospace,monospace;font-size:12px;background:rgba(255,255,255,.07);border:1px solid var(--line-soft);border-radius:5px;padding:1px 5px}
.driver-popover-progress-text{font-size:12px;color:var(--muted)}
.driver-popover-close-btn{color:var(--muted);font-size:20px}
.driver-popover-close-btn:hover{color:var(--text)}
.driver-popover-footer{margin-top:16px;gap:10px}
.driver-popover-footer button{all:unset;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;font:inherit;font-size:12.5px;font-weight:510;text-shadow:none;padding:7px 12px;border-radius:9px;border:1px solid var(--line);background:var(--surface);color:var(--text-2)}
.driver-popover-footer button:hover{background:var(--surface-2);color:var(--text)}
.driver-popover-prev-btn{background:var(--surface);color:var(--text-2)}
.driver-popover-next-btn{background:var(--accent-bg);border-color:rgba(255,255,255,.1);color:#fff;box-shadow:0 10px 24px rgba(94,106,210,.28)}
.driver-popover-next-btn:hover{background:var(--accent-hover);color:#fff}
.driver-popover-btn-disabled{opacity:.45;pointer-events:none}
/* Arrow: recolor only the visible edge per side so the triangle stays intact */
.driver-popover-arrow-side-left{border-left-color:#14161a}
.driver-popover-arrow-side-right{border-right-color:#14161a}
.driver-popover-arrow-side-top{border-top-color:#14161a}
.driver-popover-arrow-side-bottom{border-bottom-color:#14161a}

/* Sidebar "Take a tour" launcher — reuses .notif-block with an accent ring */
.tour-block .notif-block-ring{color:var(--accent-hover);border-color:rgba(113,112,255,.4);background:rgba(113,112,255,.14)}
.tour-block:hover{border-color:rgba(113,112,255,.45)}

/* Tour picker menu (reuses .tempo-dialog) */
.tour-menu{width:min(460px,calc(100vw - 28px))}
.tour-menu-list{display:grid;gap:10px;margin-top:2px}
.tour-menu-item{display:flex;align-items:center;gap:13px;width:100%;justify-content:flex-start;text-align:left;min-height:0;padding:13px 14px;border-radius:13px;border:1px solid var(--line-soft);background:var(--surface);color:var(--text);box-shadow:none}
.tour-menu-item:hover{background:var(--surface-2);border-color:var(--accent)}
.tour-menu-icon{flex:0 0 auto;display:grid;place-items:center;width:38px;height:38px;border-radius:11px;background:rgba(113,112,255,.14);border:1px solid var(--line-soft);font-size:20px}
.tour-menu-text{display:grid;gap:2px;min-width:0}
.tour-menu-title{font-size:14px;font-weight:560;color:var(--text)}
.tour-menu-desc{font-size:12.5px;color:var(--muted);line-height:1.4}
.tour-menu-go{flex:0 0 auto;margin-left:auto;color:var(--muted);font-size:18px}
.tour-menu-item:hover .tour-menu-go{color:var(--accent-hover)}
/* ===== Unified full-width swimlane header bar (user + project views) ===== */
.tempo-grid .teamrow .team-sticky-cell.swimlane-bar{position:sticky!important;left:0!important;z-index:7!important;padding:0!important;min-width:0!important;overflow:visible!important;border-right:0!important;background:linear-gradient(90deg,rgba(94,106,210,.30),rgba(113,112,255,.07) 55%,rgba(113,112,255,.025))!important;border-top:1px solid rgba(113,112,255,.20)!important;border-bottom:1px solid rgba(113,112,255,.16)!important}
.tempo-grid .teamrow .swimlane-bar .swimlane-head{position:sticky;left:0;z-index:6;display:inline-flex!important;flex-direction:row!important;align-items:center!important;justify-content:flex-start!important;gap:8px!important;width:max-content!important;max-width:calc(100vw - 300px)!important;min-height:42px!important;padding:5px 14px!important}
.tempo-grid .swimlane-bar .swimlane-head .lane-name{flex:0 1 auto;min-width:30px;max-width:40vw;margin:0!important;border:0!important;border-radius:8px;padding:3px 2px;background:none;font-weight:700!important;color:#d9ddff!important;font-size:12.5px!important;line-height:1.2!important;letter-spacing:0!important;text-transform:none!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tempo-grid .swimlane-bar .swimlane-head .lane-name:before{content:none!important;display:none!important}
.tempo-grid .swimlane-bar .swimlane-head .lane-name-static{color:#c2c7ee!important;cursor:default}
.tempo-grid .swimlane-bar .swimlane-head .lane-name[data-lane-rename]{padding:3px 7px!important;cursor:text;background:rgba(255,255,255,.04)}
.tempo-grid .swimlane-bar .swimlane-head .lane-name[data-lane-rename]:hover{background:rgba(113,112,255,.16);box-shadow:inset 0 0 0 1px rgba(113,112,255,.4)}
.tempo-grid .swimlane-bar .swimlane-head .swimlane-summary{flex:0 1 auto;display:inline-block;margin:0!important;border:0!important;border-radius:0!important;padding:0!important;background:none!important;color:var(--muted)!important;font-size:11.5px!important;font-weight:500!important;letter-spacing:0!important;text-transform:none!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.2}
.tempo-grid .swimlane-bar .swimlane-head .swimlane-summary:before{content:none!important;display:none!important}
.tempo-grid .swimlane-bar .swimlane-head .lane-drag-handle{order:-2;flex:0 0 auto;width:22px!important;height:22px!important;display:inline-grid!important;place-items:center;margin:0!important;opacity:1!important;border:1px solid rgba(113,112,255,.38)!important;border-radius:7px!important;background:rgba(113,112,255,.12)!important;color:#c7d2fe!important;font-size:0!important;line-height:1!important;letter-spacing:0!important;cursor:grab;box-shadow:none!important;position:relative}
.tempo-grid .swimlane-bar .swimlane-head .lane-drag-handle:before{content:""!important;display:block!important;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:12px;height:12px;background:radial-gradient(circle,#c7d2fe 1.5px,transparent 1.7px) 0 0/6px 6px}
.tempo-grid .swimlane-bar .swimlane-head .lane-collapse-btn{order:-1;flex:0 0 auto;width:22px!important;height:22px!important;border-radius:7px!important;background:rgba(255,255,255,.05)!important}
.tempo-grid .swimlane-bar .swimlane-head .lane-delete-btn{flex:0 0 auto;margin:0 0 0 4px!important;width:22px!important;height:22px!important;display:inline-grid!important;place-items:center;opacity:.92!important;border:1px solid rgba(248,113,113,.34)!important;border-radius:7px!important;background:rgba(248,113,113,.10)!important;color:#fecaca!important;font-size:16px!important;line-height:1!important;box-shadow:none!important}
.tempo-grid .swimlane-bar .swimlane-head .lane-delete-btn:hover{opacity:1!important;background:rgba(248,113,113,.20)!important;border-color:rgba(248,113,113,.62)!important;color:#fff!important}
.tempo-grid .project-swimlane.row-state-below-min .team-sticky-cell.swimlane-bar{background:rgba(248,113,113,.20)!important;box-shadow:inset 3px 0 0 #f87171}
.tempo-grid .project-swimlane.row-state-within .team-sticky-cell.swimlane-bar{background:rgba(74,222,128,.16)!important;box-shadow:inset 3px 0 0 #4ade80}
.tempo-grid .project-swimlane.row-state-over-limit .team-sticky-cell.swimlane-bar{background:rgba(250,204,21,.18)!important;box-shadow:inset 3px 0 0 #facc15}
/* user view first column needs room for "Team / User" + the Add-swimlane button */
.tempo-grid.view-user .user-col{min-width:252px}
.weekly-first-head-cell .project-head-add-swimlane{flex:0 0 auto;padding:4px 8px!important;font-size:10.5px!important;letter-spacing:0!important}
.excel-grid.view-user th:nth-child(1),.excel-grid.view-user td:nth-child(1){width:21%!important}


/* White theme and theme switcher (v20260623-white-theme) */
html[data-theme="light"]{
  color-scheme:light;
  --bg:#f7f8fb;
  --bg-2:#eef2f7;
  --panel:#ffffff;
  --surface:rgba(15,23,42,.045);
  --surface-2:rgba(15,23,42,.075);
  --surface-3:#edf2f7;
  --text:#111827;
  --text-2:#334155;
  --muted:#64748b;
  --muted-2:#94a3b8;
  --line:rgba(15,23,42,.13);
  --line-soft:rgba(15,23,42,.08);
  --accent:#5e5ce6;
  --accent-bg:#5e6ad2;
  --accent-hover:#4338ca;
  --input:#ffffff;
  --shadow:0 18px 55px rgba(15,23,42,.10),inset 0 1px 0 rgba(255,255,255,.78);
  --card:#ffffff;
}
.theme-mode-compact{display:flex;justify-content:flex-end;margin-top:-2px}
.theme-mode-compact .theme-toggle{width:max-content}
.theme-toggle{display:grid;grid-template-columns:32px 32px;gap:4px;padding:4px;border:1px solid var(--line-soft);border-radius:999px;background:var(--input);box-shadow:inset 0 1px 0 rgba(255,255,255,.04)}
.theme-choice{min-height:32px!important;width:32px!important;height:32px!important;padding:0!important;border:0!important;border-radius:999px!important;background:transparent!important;color:var(--muted)!important;box-shadow:none!important;font-size:0!important;line-height:1!important;display:grid!important;place-items:center!important}
.theme-choice svg{width:17px;height:17px;display:block;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.theme-choice[data-theme-choice="dark"] svg path{fill:currentColor;stroke:none}
.theme-choice:hover{background:var(--surface-2)!important;color:var(--text)!important;transform:none!important}
.theme-choice.is-active,.theme-choice[aria-pressed="true"]{background:var(--accent-bg)!important;color:#fff!important;box-shadow:0 8px 18px rgba(94,106,210,.30)!important}
.theme-choice[aria-pressed="true"] svg{filter:drop-shadow(0 1px 4px rgba(0,0,0,.16))}
@media(max-width:1100px){.theme-mode-compact{justify-content:flex-start;margin-top:0}}
@media(max-width:640px){.theme-mode-compact .theme-toggle{width:100%;grid-template-columns:1fr 1fr}.theme-choice{width:auto!important}}
html[data-theme="light"] body{background:radial-gradient(circle at 76% 4%,rgba(94,106,210,.16),transparent 30rem),linear-gradient(180deg,var(--bg),var(--bg-2));color:var(--text)}
html[data-theme="light"] body:before{background-image:linear-gradient(rgba(15,23,42,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(15,23,42,.035) 1px,transparent 1px);mask-image:linear-gradient(180deg,rgba(0,0,0,.35),transparent 70%)}
html[data-theme="light"] .sidebar{background:rgba(255,255,255,.82);border-right-color:var(--line);box-shadow:12px 0 45px rgba(15,23,42,.06)}
html[data-theme="light"] .brand-text b{color:var(--accent-hover)}
html[data-theme="light"] nav a:hover,html[data-theme="light"] nav a.active{background:rgba(94,106,210,.08);border-color:rgba(94,106,210,.16)}
html[data-theme="light"] .card{background:rgba(255,255,255,.82);border-color:var(--line);box-shadow:var(--shadow)}
html[data-theme="light"] .grid-card{background:rgba(255,255,255,.72)}
html[data-theme="light"] .notif-block-ring{background:rgba(94,106,210,.10);color:var(--accent-hover);border-color:rgba(94,106,210,.18)}
html[data-theme="light"] .notif-badge{background:#111827;color:#fff}
html[data-theme="light"] .btn-microsoft{background:#ffffff;color:#1f2937;border-color:var(--line);box-shadow:var(--shadow)}
html[data-theme="light"] .btn-microsoft:hover{background:#f8fafc}
html[data-theme="light"] input,html[data-theme="light"] select,html[data-theme="light"] textarea{background:#fff;color:var(--text);border-color:var(--line)}
html[data-theme="light"] input::placeholder,html[data-theme="light"] textarea::placeholder{color:#94a3b8}
html[data-theme="light"] button.secondary,html[data-theme="light"] .ghost{background:rgba(15,23,42,.045);color:var(--text-2);border-color:var(--line);box-shadow:none}
html[data-theme="light"] .ghost:hover,html[data-theme="light"] button.secondary:hover{background:rgba(15,23,42,.075);color:var(--text)}
html[data-theme="light"] .excel-grid thead th{background:#f1f5f9!important;color:var(--text-2);box-shadow:0 1px 0 var(--line)}
html[data-theme="light"] .excel-grid tbody td,html[data-theme="light"] .excel-grid tbody th{background-color:rgba(255,255,255,.78)}
html[data-theme="light"] .excel-grid tbody tr:hover td{background-color:#f8fafc}
html[data-theme="light"] .sticky{background:#fff}
html[data-theme="light"] .teamrow,html[data-theme="light"] .teamrow .teamrow-fill,html[data-theme="light"] .team-sticky-cell{background:#eef2ff!important;color:var(--text)}
html[data-theme="light"] .choices__inner{background:#fff!important;color:var(--text)!important;border-color:var(--line)!important}
html[data-theme="light"] .choices__input{color:var(--text)!important}
html[data-theme="light"] .choices__list--dropdown,html[data-theme="light"] .choices__list[aria-expanded]{background:#fff!important;color:var(--text)!important;border-color:var(--line)!important;box-shadow:0 18px 48px rgba(15,23,42,.16)!important}
html[data-theme="light"] .choices__list--dropdown .choices__item--selectable.is-highlighted{background:rgba(94,106,210,.10)!important;color:var(--text)!important}
html[data-theme="light"] .choices__list--multiple .choices__item{background:rgba(94,106,210,.12)!important;color:var(--text)!important;border-color:rgba(94,106,210,.28)!important}
html[data-theme="light"] .day-cell .choices__list--multiple .choices__item,html[data-theme="light"] .adhoc-cell .choices__list--multiple .choices__item{background:rgba(94,106,210,.12)!important;color:var(--text)!important;border-color:rgba(94,106,210,.30)!important}
html[data-theme="light"] .tempo-dialog,html[data-theme="light"] .ui-modal{background:#fff;color:var(--text);border-color:var(--line);box-shadow:0 30px 90px rgba(15,23,42,.22)}
html[data-theme="light"] .tempo-dialog::backdrop,html[data-theme="light"] .ui-modal::backdrop{background:rgba(15,23,42,.30);backdrop-filter:blur(8px)}
html[data-theme="light"] .tempo-dialog-card,html[data-theme="light"] .ui-modal-card{background:radial-gradient(circle at 100% 0,rgba(94,106,210,.12),transparent 16rem),var(--panel)}
html[data-theme="light"] .tempo-dialog-table-wrap{background:#fff;border-color:var(--line)}
html[data-theme="light"] .tempo-dialog-table thead th{background:#f1f5f9;color:var(--muted)}
html[data-theme="light"] .tempo-dialog-table tbody tr:not(.not-planned){background:#fff}
html[data-theme="light"] .tempo-total,html[data-theme="light"] .tempo-hours-link{color:var(--text)!important}
html[data-theme="light"] .tempo-cell.tempo-match .tempo-hours-link{background:rgba(16,185,129,.12)!important;color:#047857!important;border-color:rgba(16,185,129,.32)!important}
html[data-theme="light"] .tempo-cell.tempo-mismatch .tempo-hours-link,html[data-theme="light"] .tempo-cell.tempo-unplanned .tempo-hours-link,html[data-theme="light"] .tempo-cell.tempo-has-warning .tempo-hours-link{background:rgba(245,158,11,.14)!important;color:#92400e!important;border-color:rgba(245,158,11,.34)!important}
html[data-theme="light"] .tempo-cell.tempo-missing .tempo-hours-link{color:var(--muted)!important;background:#f8fafc!important}
html[data-theme="light"] .tempo-chip{background:rgba(15,23,42,.045);border-color:var(--line);color:var(--text-2)}
html[data-theme="light"] .tempo-chip.not-planned,html[data-theme="light"] .tempo-project-warning{background:rgba(245,158,11,.12);color:#92400e;border-color:rgba(245,158,11,.32)}
html[data-theme="light"] .row-actions>.row-action-menu{background:linear-gradient(180deg,#ffffff,#f8fafc);border-color:rgba(94,106,210,.24);box-shadow:0 18px 50px rgba(15,23,42,.16)}
html[data-theme="light"] .row-actions>.row-action-menu .copy-prev-btn{background:#fff!important;border-color:var(--line)!important;color:var(--text)!important}
html[data-theme="light"] .save-status{background:#fff;color:var(--text);border-color:var(--line);box-shadow:var(--shadow)}
html[data-theme="light"] .notif-popup .notif-list,html[data-theme="light"] .notif-popup .notif-item{background:#fff;color:var(--text)}
html[data-theme="light"] .notif-popup .notif-item:hover{background:#f8fafc}
html[data-theme="light"] .wishes-bar{background:rgba(255,255,255,.92);border-color:var(--line);box-shadow:0 20px 70px rgba(15,23,42,.16)}
/* Annotation overlay surfaces (modal, popover, toolbar, mention menu) pick up the
   light background via --card; the shadows/hover/pin border were hardcoded dark, so
   soften them here so text and titles read on the white theme. */
html[data-theme="light"] .annot-toolbar{box-shadow:0 8px 30px rgba(15,23,42,.14)}
html[data-theme="light"] .annot-modal,html[data-theme="light"] .annot-popover{box-shadow:0 18px 55px rgba(15,23,42,.18)}
html[data-theme="light"] .mention-menu,html[data-theme="light"] .up-menu{box-shadow:0 12px 40px rgba(15,23,42,.18)}
html[data-theme="light"] .annot-pop-desc--editable:hover{background:rgba(15,23,42,.05)}
html[data-theme="light"] .annot-pin{background:#fff;box-shadow:0 2px 10px rgba(15,23,42,.28)}
html[data-theme="light"] .annot-pin .annot-pin-num{border-color:#fff}


/* Light theme contrast fixes across dense admin surfaces (v20260623-light-contrast-fixes) */
.sidebar-logout-row{display:flex;align-items:center;gap:10px;width:100%}
.sidebar-logout-row form{margin:0;flex:1 1 auto;min-width:0}
.sidebar-logout-row form .ghost{width:100%;min-height:36px}
.sidebar-logout-row .theme-mode-compact{flex:0 0 auto;margin-top:0;justify-content:flex-end}
.sidebar-logout-row .theme-toggle{grid-template-columns:34px 34px;gap:5px;padding:4px}
.sidebar-logout-row .theme-choice{width:34px!important;height:34px!important;min-height:34px!important;border:1px solid var(--line-soft)!important}
@media(max-width:1100px){.sidebar-logout-row{max-width:360px}.sidebar-logout-row form .ghost{width:auto;min-width:120px}.sidebar-logout-row .theme-mode-compact{justify-content:flex-end}}
@media(max-width:640px){.sidebar-logout-row{display:grid;grid-template-columns:1fr}.sidebar-logout-row form .ghost{width:100%}.sidebar-logout-row .theme-toggle{width:100%}}
html[data-theme="light"] .theme-toggle{background:#fff;border-color:rgba(15,23,42,.20);box-shadow:0 1px 2px rgba(15,23,42,.08),inset 0 1px 0 rgba(255,255,255,.9)}
html[data-theme="light"] .theme-choice{border-color:rgba(15,23,42,.16)!important;color:#475569!important;background:#f8fafc!important}
html[data-theme="light"] .theme-choice:hover{background:#eef2ff!important;color:#312e81!important;border-color:rgba(94,106,210,.36)!important}
html[data-theme="light"] .theme-choice[aria-pressed="true"]{background:#4338ca!important;color:#fff!important;border-color:#312e81!important;box-shadow:0 8px 18px rgba(67,56,202,.26)!important}

html[data-theme="light"] .excel-grid .sticky,
html[data-theme="light"] .excel-grid td.sticky,
html[data-theme="light"] .excel-grid th.sticky,
html[data-theme="light"] .sticky.user,
html[data-theme="light"] .project-sticky-cell{background:#ffffff!important;color:var(--text)!important;box-shadow:1px 0 0 var(--line)!important}
html[data-theme="light"] .excel-grid thead th.sticky{background:#eef2f7!important;color:#334155!important}
html[data-theme="light"] .tempo-grid .user-card-mini strong,
html[data-theme="light"] .tempo-grid .project-sticky-cell strong,
html[data-theme="light"] .tempo-grid .sticky.user strong{color:#111827!important}
html[data-theme="light"] .weekly-report-label,
html[data-theme="light"] .weekly-report-label.is-clickable{color:#4338ca!important}
html[data-theme="light"] .weekly-report-label.is-clickable:hover,
html[data-theme="light"] .weekly-report-label.is-clickable:focus-visible{color:#312e81!important}
html[data-theme="light"] .wp-pin-btn{opacity:.72;filter:none;color:#334155!important;border:1px solid rgba(15,23,42,.14)!important;border-radius:8px;background:#f8fafc!important}
html[data-theme="light"] .wp-pin-btn.is-pinned{opacity:1;background:#fff7ed!important;border-color:#fb923c!important;color:#c2410c!important}
html[data-theme="light"] .wp-drag-handle{color:#475569!important}

html[data-theme="light"] .tempo-grid .teamrow .team-sticky-cell.swimlane-bar,
html[data-theme="light"] .teamrow .team-sticky-cell,
html[data-theme="light"] .teamrow .teamrow-fill{background:linear-gradient(90deg,#eef2ff,#f8fafc 58%,#ffffff)!important;border-top-color:#c7d2fe!important;border-bottom-color:#c7d2fe!important;color:#334155!important;box-shadow:none!important}
html[data-theme="light"] .tempo-grid .swimlane-bar .swimlane-head .lane-name,
html[data-theme="light"] .tempo-grid.view-project .swimlane-head .lane-name,
html[data-theme="light"] .teamrow .swimlane-head .lane-name{color:#3730a3!important;text-shadow:none!important}
html[data-theme="light"] .tempo-grid .swimlane-bar .swimlane-head .lane-name-static,
html[data-theme="light"] .tempo-grid .swimlane-bar .swimlane-head .swimlane-summary,
html[data-theme="light"] .teamrow .teamrow-fill .swimlane-summary{color:#475569!important}
html[data-theme="light"] .tempo-grid .swimlane-bar .swimlane-head .lane-drag-handle,
html[data-theme="light"] .tempo-grid.view-project .swimlane-head .lane-drag-handle{background:#ffffff!important;border-color:#c7d2fe!important;color:#3730a3!important}
html[data-theme="light"] .tempo-grid .swimlane-bar .swimlane-head .lane-drag-handle:before,
html[data-theme="light"] .tempo-grid.view-project .swimlane-head .lane-drag-handle::before{background:radial-gradient(circle,#3730a3 1.5px,transparent 1.7px) 0 0/6px 6px!important}
html[data-theme="light"] .tempo-grid .swimlane-bar .swimlane-head .lane-collapse-btn,
html[data-theme="light"] .tempo-grid.view-project .swimlane-head .lane-collapse-btn{background:#fff!important;border:1px solid #c7d2fe!important}
html[data-theme="light"] .swimlane-head .lane-collapse-btn::before{border-color:#3730a3!important}
html[data-theme="light"] .tempo-grid .swimlane-bar .swimlane-head .lane-delete-btn,
html[data-theme="light"] .tempo-grid.view-project .swimlane-head .lane-delete-btn{background:#fff1f2!important;border-color:#fecdd3!important;color:#be123c!important}
html[data-theme="light"] .project-head-add-swimlane,
html[data-theme="light"] .project-lane-add-project-btn{background:#eef2ff!important;color:#3730a3!important;border-color:#a5b4fc!important;box-shadow:none!important}
html[data-theme="light"] .project-head-add-swimlane:hover,
html[data-theme="light"] .project-lane-add-project-btn:hover{background:#e0e7ff!important;color:#312e81!important;border-color:#6366f1!important}
html[data-theme="light"] .project-add-row td{background:#f8fafc!important;border-top-color:#c7d2fe!important}
html[data-theme="light"] .project-add-fill{color:#64748b!important}

html[data-theme="light"] .project-row.row-state-below-min td,
html[data-theme="light"] .project-swimlane.row-state-below-min td{background:#fff1f2!important;color:#111827!important}
html[data-theme="light"] .project-row.row-state-below-min .project-sticky-cell,
html[data-theme="light"] .project-row.row-state-below-min td.user,
html[data-theme="light"] .project-swimlane.row-state-below-min .team-sticky-cell{background:#ffe4e6!important;box-shadow:inset 3px 0 0 #e11d48!important;color:#111827!important}
html[data-theme="light"] .project-row.row-state-within td,
html[data-theme="light"] .project-swimlane.row-state-within td{background:#ecfdf5!important;color:#111827!important}
html[data-theme="light"] .project-row.row-state-within .project-sticky-cell,
html[data-theme="light"] .project-row.row-state-within td.user,
html[data-theme="light"] .project-swimlane.row-state-within .team-sticky-cell{background:#dcfce7!important;box-shadow:inset 3px 0 0 #16a34a!important;color:#111827!important}
html[data-theme="light"] .project-row.row-state-over-limit td,
html[data-theme="light"] .project-swimlane.row-state-over-limit td{background:#fffbeb!important;color:#111827!important}
html[data-theme="light"] .project-row.row-state-over-limit .project-sticky-cell,
html[data-theme="light"] .project-row.row-state-over-limit td.user,
html[data-theme="light"] .project-swimlane.row-state-over-limit .team-sticky-cell{background:#fef3c7!important;box-shadow:inset 3px 0 0 #f59e0b!important;color:#111827!important}
html[data-theme="light"] .project-limit-badge.state-below-min{background:#ffe4e6!important;border-color:#fb7185!important;color:#be123c!important}
html[data-theme="light"] .project-limit-badge.state-within{background:#dcfce7!important;border-color:#22c55e!important;color:#166534!important}
html[data-theme="light"] .project-limit-badge.state-over-limit{background:#fef3c7!important;border-color:#f59e0b!important;color:#92400e!important}
html[data-theme="light"] .project-row-card.row-state-below-min,
html[data-theme="light"] .dashboard-pinned-item.row-state-below-min{background:#fff7f7!important;color:var(--text)!important;box-shadow:inset 3px 0 0 #e11d48,0 0 0 1px rgba(225,29,72,.22)!important}
html[data-theme="light"] .project-row-card.row-state-within,
html[data-theme="light"] .dashboard-pinned-item.row-state-within{background:#f0fdf4!important;color:var(--text)!important;box-shadow:inset 3px 0 0 #16a34a,0 0 0 1px rgba(22,163,74,.20)!important}
html[data-theme="light"] .project-row-card.row-state-over-limit,
html[data-theme="light"] .dashboard-pinned-item.row-state-over-limit{background:#fffbeb!important;color:var(--text)!important;box-shadow:inset 3px 0 0 #f59e0b,0 0 0 1px rgba(245,158,11,.22)!important}

html[data-theme="light"] button.danger,
html[data-theme="light"] .ghost.danger,
html[data-theme="light"] .button.danger{background:#fff1f2!important;border-color:#fb7185!important;color:#be123c!important;box-shadow:none!important}
html[data-theme="light"] button.danger:hover,
html[data-theme="light"] .ghost.danger:hover,
html[data-theme="light"] .button.danger:hover{background:#ffe4e6!important;border-color:#e11d48!important;color:#9f1239!important}
html[data-theme="light"] .pill.warn{background:#fef3c7!important;border-color:#f59e0b!important;color:#92400e!important}
html[data-theme="light"] .pill.ok{background:#dcfce7!important;border-color:#22c55e!important;color:#166534!important}

html[data-theme="light"] .task-swimlane{background:#ffffff!important;border-color:var(--line)!important;color:var(--text)!important;box-shadow:var(--shadow)!important}
html[data-theme="light"] .task-swimlane.pinned-lane{background:linear-gradient(180deg,#fffbeb,#ffffff 48%)!important;border-color:#fbbf24!important}
html[data-theme="light"] .jira-task-card{background:#ffffff!important;border-color:var(--line)!important;color:var(--text)!important;box-shadow:0 1px 2px rgba(15,23,42,.06)!important}
html[data-theme="light"] .jira-task-card.is-pinned{background:#fff7ed!important;border-color:#fb923c!important}
html[data-theme="light"] .task-meta-grid dd{background:#f8fafc!important;color:#334155!important;border-color:var(--line)!important}
html[data-theme="light"] .task-notifications-panel{background:#f8fafc!important;border-color:var(--line)!important;color:var(--text)!important}
html[data-theme="light"] .task-swimlane.hidden-lane,
html[data-theme="light"] .jira-task-card.is-hidden-task{background:#f8fafc!important;border-color:#cbd5e1!important;color:#334155!important}

html[data-theme="light"] .notice{background:#ecfdf5!important;border-color:#22c55e!important;color:#166534!important}
html[data-theme="light"] .notice.notice-error{background:#fff1f2!important;border-color:#fb7185!important;color:#be123c!important}
html[data-theme="light"] .notice.notice-ok{background:#ecfdf5!important;border-color:#22c55e!important;color:#166534!important}
html[data-theme="light"] .secret-status{background:#eef2ff!important;border-color:#a5b4fc!important;color:#3730a3!important}
html[data-theme="light"] .secret-status.ok{background:#dcfce7!important;border-color:#86efac!important;color:#166534!important}
html[data-theme="light"] .teams-auth-mode{background:#f8fafc!important;border-color:var(--line)!important}
html[data-theme="light"] .notification-settings-note,
html[data-theme="light"] .settings-guide-grid>div{background:#f8fafc!important;border-color:var(--line)!important;color:#334155!important}
html[data-theme="light"] .sticky-form-actions{background:rgba(255,255,255,.94)!important;border-color:#c7d2fe!important;box-shadow:0 18px 45px rgba(15,23,42,.14)!important;backdrop-filter:blur(10px)}

html[data-theme="light"] .rte-field .ql-toolbar.ql-snow{background:#f8fafc!important;border-color:var(--line)!important;color:#334155!important}
html[data-theme="light"] .rte-field .ql-container.ql-snow{background:#ffffff!important;border-color:var(--line)!important;color:var(--text)!important}
html[data-theme="light"] .rte-field .ql-editor{background:#ffffff!important;color:var(--text)!important}
html[data-theme="light"] .rte-field .ql-picker-options,
html[data-theme="light"] .rte-field .ql-snow .ql-tooltip{background:#ffffff!important;border-color:var(--line)!important;color:var(--text)!important;box-shadow:0 12px 35px rgba(15,23,42,.16)!important}
html[data-theme="light"] .rte-field .ql-toolbar.ql-snow button:hover,
html[data-theme="light"] .rte-field .ql-toolbar.ql-snow button:focus,
html[data-theme="light"] .rte-field .ql-toolbar.ql-snow .ql-picker-label:hover{background:#eef2ff!important}

html[data-theme="light"] .mcp-scope-picker{background:#ffffff!important;border-color:var(--line)!important;color:var(--text)!important}
html[data-theme="light"] .mcp-scope-head,
html[data-theme="light"] .role-dialog .mcp-scope-head{background:linear-gradient(180deg,#f8fafc,#eef2f7)!important;color:var(--text)!important;border-color:var(--line)!important}
html[data-theme="light"] .mcp-scope-group{border-color:var(--line)!important;background:#ffffff!important}
html[data-theme="light"] .mcp-scope-row{color:var(--text)!important;background:#ffffff!important}
html[data-theme="light"] .mcp-scope-row-parent{background:#f8fafc!important}
html[data-theme="light"] .mcp-scope-row:hover{background:#eef2ff!important}
html[data-theme="light"] .mcp-scope-name,
html[data-theme="light"] .mcp-scope-name strong,
html[data-theme="light"] .mcp-scope-name span{color:#111827!important}
html[data-theme="light"] .mcp-scope-name code{color:#4338ca!important}
html[data-theme="light"] .mcp-scope-description{color:#475569!important}
html[data-theme="light"] .mcp-scope-row input[type=checkbox]{background:#ffffff!important;border-color:#94a3b8!important}
html[data-theme="light"] .mcp-scope-row input[type=checkbox]:checked{background:#4338ca!important;border-color:#4338ca!important}
html[data-theme="light"] .mcp-tool-list{color:#475569!important}
html[data-theme="light"] .mcp-tool-list code{background:#eef2ff!important;border-color:#a5b4fc!important;color:#3730a3!important}
html[data-theme="light"] .mcp-token-scope-list li{background:#ffffff!important;border-color:var(--line)!important;color:var(--text)!important}
html[data-theme="light"] pre,
html[data-theme="light"] code,
html[data-theme="light"] .token-output{background:#f8fafc;color:#334155;border-color:var(--line)}
html[data-theme="light"] .simple-table th{background:#f1f5f9!important;color:#334155!important}
html[data-theme="light"] .simple-table td{background:#ffffff!important;color:#334155!important;border-color:var(--line)!important}

html[data-theme="light"] .annot-dialog{width:min(980px,calc(100vw - 32px));max-height:calc(100dvh - 32px);overflow:auto;border:1px solid var(--line);border-radius:20px;background:#ffffff;color:var(--text);padding:20px;box-shadow:0 30px 90px rgba(15,23,42,.22)}
html[data-theme="light"] .annot-dialog::backdrop{background:rgba(15,23,42,.35);backdrop-filter:blur(8px)}
html[data-theme="light"] .annot-dialog-head{background:#ffffff;color:var(--text);border-bottom:1px solid var(--line);padding-bottom:12px;margin-bottom:14px}
html[data-theme="light"] .annot-shot{background:#f8fafc!important;border-color:var(--line)!important}
html[data-theme="light"] .annot-shot-tools{background:rgba(255,255,255,.92)!important;border-color:var(--line)!important}
html[data-theme="light"] .annot-dialog-meta,
html[data-theme="light"] .annot-share-line,
html[data-theme="light"] .annot-thread h4{color:#334155!important}
html[data-theme="light"] .annot-edit-form input,
html[data-theme="light"] .annot-edit-form textarea,
html[data-theme="light"] .annot-comment-form textarea,
html[data-theme="light"] .annot-notify-edit .user-picker{background:#ffffff!important;color:var(--text)!important;border-color:var(--line)!important}
html[data-theme="light"] .annot-thread,
html[data-theme="light"] .annot-comments li{background:#f8fafc!important;border-color:var(--line)!important;color:var(--text)!important}
html[data-theme="light"] .annot-image-upload{background:#ffffff!important;color:#334155!important}
html[data-theme="light"] .mention-menu,
html[data-theme="light"] .up-menu{background:#ffffff!important;color:var(--text)!important;border-color:var(--line)!important;box-shadow:0 12px 35px rgba(15,23,42,.16)!important}
html[data-theme="light"] .mention-item.is-active,
html[data-theme="light"] .up-item.is-active{background:#eef2ff!important}

html[data-theme="light"] .notification-assignment-block,
html[data-theme="light"] .notification-summary-card,
html[data-theme="light"] .notification-template-channel,
html[data-theme="light"] .notification-template-channel-fields,
html[data-theme="light"] .notification-template-card{background:#ffffff!important;border-color:var(--line)!important;color:var(--text)!important}
html[data-theme="light"] .notification-template-card.is-hidden-template{background:#f8fafc!important;border-color:#cbd5e1!important}


/* Light theme final polish for menus, warnings, chips, cards, and avatars (v20260623-light-polish-2) */
html[data-theme="light"] .row-actions summary{
  background:#ffffff!important;
  border-color:#cbd5e1!important;
  color:#334155!important;
  box-shadow:0 1px 2px rgba(15,23,42,.08)!important;
}
html[data-theme="light"] .row-actions summary:hover,
html[data-theme="light"] .row-actions[open] summary{
  background:#eef2ff!important;
  border-color:#818cf8!important;
  color:#312e81!important;
  box-shadow:0 0 0 3px rgba(99,102,241,.16)!important;
}
html[data-theme="light"] .row-actions.is-floating>.row-action-menu,
html[data-theme="light"] .row-actions>.row-action-menu{
  background:#ffffff!important;
  border:1px solid #a5b4fc!important;
  box-shadow:0 22px 65px rgba(15,23,42,.22),0 0 0 4px rgba(99,102,241,.10)!important;
  color:#111827!important;
  backdrop-filter:blur(10px)!important;
}
html[data-theme="light"] .row-actions.is-floating>.row-action-menu .copy-prev-btn,
html[data-theme="light"] .row-actions>.row-action-menu .copy-prev-btn,
html[data-theme="light"] .row-actions.is-floating>button.day-set-all-btn{
  background:#ffffff!important;
  border-color:#dbeafe!important;
  color:#111827!important;
  box-shadow:0 1px 2px rgba(15,23,42,.06)!important;
}
html[data-theme="light"] .row-actions.is-floating>.row-action-menu .copy-prev-btn b,
html[data-theme="light"] .row-actions>.row-action-menu .copy-prev-btn b,
html[data-theme="light"] .row-actions.is-floating>button.day-set-all-btn b{color:#111827!important}
html[data-theme="light"] .row-actions.is-floating>.row-action-menu .copy-prev-btn small,
html[data-theme="light"] .row-actions>.row-action-menu .copy-prev-btn small,
html[data-theme="light"] .row-actions.is-floating>button.day-set-all-btn small{color:#475569!important}
html[data-theme="light"] .row-actions.is-floating>.row-action-menu .copy-prev-btn:hover,
html[data-theme="light"] .row-actions>.row-action-menu .copy-prev-btn:hover,
html[data-theme="light"] .row-actions.is-floating>button.day-set-all-btn:hover{
  background:#eef2ff!important;
  border-color:#818cf8!important;
  color:#312e81!important;
}

html[data-theme="light"] .tempo-warning,
html[data-theme="light"] .nav-warning,
html[data-theme="light"] .view-warning,
html[data-theme="light"] .week-warning{
  background:#f59e0b!important;
  border:1px solid #92400e!important;
  color:#111827!important;
  box-shadow:0 0 0 2px #fff7ed,0 0 0 4px rgba(245,158,11,.28),0 6px 14px rgba(146,64,14,.18)!important;
  filter:none!important;
}
html[data-theme="light"] .tempo-project-row.not-planned,
html[data-theme="light"] .tempo-dialog-table tbody tr.not-planned,
html[data-theme="light"] .tempo-project-warning,
html[data-theme="light"] .tempo-chip.not-planned,
html[data-theme="light"] .limit-warning-banner,
html[data-theme="light"] .project-limit-badge.is-reached,
html[data-theme="light"] .project-limit-badge.state-over-limit,
html[data-theme="light"] .pill.warn,
html[data-theme="light"] .hidden-reason.query{
  background:#fffbeb!important;
  border-color:#d97706!important;
  color:#78350f!important;
  box-shadow:inset 0 0 0 1px rgba(217,119,6,.20)!important;
}
html[data-theme="light"] .tempo-dialog-table tbody tr.not-planned td,
html[data-theme="light"] .tempo-dialog-table tbody tr.not-planned th{background:#fffbeb!important;color:#111827!important}
html[data-theme="light"] .tempo-dialog-table tbody tr.not-planned .tempo-project-hours,
html[data-theme="light"] .tempo-project-row.not-planned .tempo-project-hours{color:#b45309!important;font-weight:800!important}

html[data-theme="light"] .choices[data-type*=select-multiple] .choices__button,
html[data-theme="light"] .choices[data-type*=text] .choices__button{
  position:relative!important;
  width:16px!important;
  min-width:16px!important;
  height:16px!important;
  min-height:16px!important;
  margin-left:7px!important;
  padding-left:16px!important;
  border-left:1px solid rgba(49,46,129,.35)!important;
  background-image:none!important;
  opacity:1!important;
  filter:none!important;
}
html[data-theme="light"] .choices[data-type*=select-multiple] .choices__button::before,
html[data-theme="light"] .choices[data-type*=select-multiple] .choices__button::after,
html[data-theme="light"] .choices[data-type*=text] .choices__button::before,
html[data-theme="light"] .choices[data-type*=text] .choices__button::after{
  content:""!important;
  position:absolute!important;
  left:8px!important;
  top:50%!important;
  width:10px!important;
  height:2px!important;
  border-radius:999px!important;
  background:#312e81!important;
  transform:translate(-50%,-50%) rotate(45deg)!important;
}
html[data-theme="light"] .choices[data-type*=select-multiple] .choices__button::after,
html[data-theme="light"] .choices[data-type*=text] .choices__button::after{transform:translate(-50%,-50%) rotate(-45deg)!important}
html[data-theme="light"] .choices[data-type*=select-multiple] .choices__button:hover::before,
html[data-theme="light"] .choices[data-type*=select-multiple] .choices__button:hover::after,
html[data-theme="light"] .choices[data-type*=text] .choices__button:hover::before,
html[data-theme="light"] .choices[data-type*=text] .choices__button:hover::after{background:#be123c!important}
html[data-theme="light"] .choices__list--multiple .choices__item{
  background:#eef2ff!important;
  border-color:#a5b4fc!important;
  color:#1e293b!important;
}

html[data-theme="light"] .card,
html[data-theme="light"] .grid-card,
html[data-theme="light"] .dashboard-pin-card,
html[data-theme="light"] .dashboard-pinned-item,
html[data-theme="light"] .dashboard-tasklike-item,
html[data-theme="light"] .dashboard-task-card,
html[data-theme="light"] .project-row-card,
html[data-theme="light"] .client-card,
html[data-theme="light"] .user-management-row,
html[data-theme="light"] .selected-task-group-card,
html[data-theme="light"] .task-swimlane,
html[data-theme="light"] .jira-task-card,
html[data-theme="light"] .notification-template-card,
html[data-theme="light"] .notification-template-channel,
html[data-theme="light"] .notification-summary-card,
html[data-theme="light"] .empty-state{
  background:#ffffff!important;
  border-color:#dbe3ef!important;
  color:#111827!important;
}
html[data-theme="light"] .dashboard-metrics div,
html[data-theme="light"] .dashboard-meta-grid div,
html[data-theme="light"] .task-meta-grid div,
html[data-theme="light"] .task-meta-grid dd,
html[data-theme="light"] .notification-template-meta div,
html[data-theme="light"] .notification-summary-meta div,
html[data-theme="light"] .dashboard-task-description,
html[data-theme="light"] .task-notifications-panel,
html[data-theme="light"] .project-limit-facts,
html[data-theme="light"] .week-rule-selector,
html[data-theme="light"] .project-limit-week-grid{
  background:#ffffff!important;
  border-color:#dbe3ef!important;
  color:#334155!important;
}
html[data-theme="light"] .dashboard-metrics dt,
html[data-theme="light"] .dashboard-meta-grid dt,
html[data-theme="light"] .task-meta-grid dt,
html[data-theme="light"] .notification-template-meta dt,
html[data-theme="light"] .notification-summary-meta dt{color:#64748b!important}
html[data-theme="light"] .dashboard-metrics dd,
html[data-theme="light"] .dashboard-meta-grid dd,
html[data-theme="light"] .task-meta-grid dd,
html[data-theme="light"] .notification-template-meta dd,
html[data-theme="light"] .notification-summary-meta dd{color:#1f2937!important}
html[data-theme="light"] .jira-task-card.is-pinned,
html[data-theme="light"] .task-swimlane.pinned-lane{background:#fffdf7!important;border-color:#f59e0b!important}
html[data-theme="light"] .jira-task-card.is-hidden-task,
html[data-theme="light"] .task-swimlane.hidden-lane,
html[data-theme="light"] .notification-template-card.is-hidden-template{background:#ffffff!important;border-color:#cbd5e1!important;filter:none!important}

html[data-theme="light"] .avatar:has(img),
html[data-theme="light"] .avatar.avatar-user:has(img),
html[data-theme="light"] .avatar.avatar-plan:has(img),
html[data-theme="light"] .avatar.avatar-task-person:has(img),
html[data-theme="light"] .avatar.avatar-wish:has(img){
  background:transparent!important;
  box-shadow:0 0 0 2px #ffffff,0 2px 8px rgba(15,23,42,.16)!important;
}
html[data-theme="light"] .user-avatar-wrap,
html[data-theme="light"] .task-person,
html[data-theme="light"] .user-row-person{background:transparent!important}
html[data-theme="light"] .presence-dot{border-color:#ffffff!important;box-shadow:0 0 0 1px #cbd5e1!important}


/* Light-theme toast polish: save/status pills, navigation loader, and notification toasts (v20260623-light-toast-polish) */
html[data-theme="light"] .save-status{
  min-width:118px;
  max-width:min(360px,calc(100vw - 32px));
  padding:11px 16px 11px 18px;
  border-radius:999px;
  background:#ffffff!important;
  color:#1f2937!important;
  border:1px solid #c7d2fe!important;
  box-shadow:0 16px 38px rgba(15,23,42,.16),0 0 0 4px rgba(99,102,241,.08)!important;
  font-weight:800;
  letter-spacing:-.01em;
}
html[data-theme="light"] .save-status:not(:empty)::before{
  content:"";
  display:inline-block;
  width:8px;
  height:8px;
  margin-right:9px;
  border-radius:999px;
  background:#6366f1;
  box-shadow:0 0 0 4px rgba(99,102,241,.14);
  vertical-align:1px;
}
html[data-theme="light"] .save-status.ok,
html[data-theme="light"] .save-status.success{
  color:#065f46!important;
  border-color:#34d399!important;
  box-shadow:0 16px 38px rgba(15,23,42,.14),0 0 0 4px rgba(16,185,129,.10)!important;
}
html[data-theme="light"] .save-status.ok:not(:empty)::before,
html[data-theme="light"] .save-status.success:not(:empty)::before{background:#10b981;box-shadow:0 0 0 4px rgba(16,185,129,.16)}
html[data-theme="light"] .save-status.error,
html[data-theme="light"] .save-status.err{
  color:#9f1239!important;
  border-color:#fb7185!important;
  box-shadow:0 16px 38px rgba(15,23,42,.14),0 0 0 4px rgba(244,63,94,.10)!important;
}
html[data-theme="light"] .save-status.error:not(:empty)::before,
html[data-theme="light"] .save-status.err:not(:empty)::before{background:#e11d48;box-shadow:0 0 0 4px rgba(225,29,72,.16)}
html[data-theme="light"].is-navigating::after{
  content:'Loading…';
  right:24px;
  bottom:24px;
  padding:12px 18px 12px 42px;
  min-width:118px;
  border-radius:999px;
  background:#ffffff!important;
  color:#1f2937!important;
  border:1px solid #c7d2fe!important;
  box-shadow:0 18px 44px rgba(15,23,42,.18),0 0 0 4px rgba(99,102,241,.09)!important;
  font-weight:850;
  letter-spacing:-.01em;
  backdrop-filter:blur(12px);
}
html[data-theme="light"].is-navigating::before{
  background:linear-gradient(90deg,transparent,#818cf8,#4338ca,transparent);
  background-size:40% 100%;
  background-repeat:no-repeat;
}
html[data-theme="light"] .notif-toasts{bottom:24px;right:24px;gap:12px;width:min(380px,calc(100vw - 32px));z-index:10050}
html[data-theme="light"] .notif-toast{
  position:relative;
  overflow:hidden;
  padding:14px 14px 14px 17px;
  border-radius:18px;
  background:#ffffff!important;
  color:#111827!important;
  border:1px solid #c7d2fe!important;
  box-shadow:0 22px 60px rgba(15,23,42,.20),0 0 0 4px rgba(99,102,241,.08)!important;
}
html[data-theme="light"] .notif-toast::before{
  content:"";
  position:absolute;
  left:0;
  top:0;
  bottom:0;
  width:4px;
  background:linear-gradient(180deg,#4338ca,#818cf8);
}
html[data-theme="light"] .notif-toast:hover{
  background:#f8faff!important;
  border-color:#818cf8!important;
  box-shadow:0 24px 68px rgba(15,23,42,.24),0 0 0 4px rgba(99,102,241,.14)!important;
  transform:translateY(-1px);
}
html[data-theme="light"] .notif-toast-main,
html[data-theme="light"] .notif-toast-main:hover,
html[data-theme="light"] .notif-toast-main:focus,
html[data-theme="light"] .notif-toast-main:active{
  background:transparent!important;
  border-color:transparent!important;
  box-shadow:none!important;
  transform:none!important;
  color:#111827!important;
}
html[data-theme="light"] .notif-toast-title{color:#111827!important;font-weight:850}
html[data-theme="light"] .notif-toast-body{color:#475569!important;line-height:1.45}
html[data-theme="light"] .notif-toast-x{
  width:28px!important;
  min-width:28px!important;
  min-height:28px!important;
  border-radius:999px!important;
  background:#f1f5f9!important;
  border:1px solid #cbd5e1!important;
  color:#334155!important;
  font-weight:900!important;
}
html[data-theme="light"] .notif-toast-x:hover,
html[data-theme="light"] .notif-toast-x:focus{
  background:#ffe4e6!important;
  border-color:#fb7185!important;
  color:#be123c!important;
  box-shadow:0 0 0 3px rgba(244,63,94,.14)!important;
  transform:none!important;
}
html[data-theme="light"] .notif-toast.is-leaving{opacity:0;transform:translateX(14px);transition:.2s}

/* Switch-user (impersonation) popup — v20260626-switch-user */
.sidebar-user.is-switch{width:100%;text-align:left;cursor:pointer;box-shadow:none;font:inherit;min-height:0}
.sidebar-user.is-switch:hover{background:var(--surface-2);border-color:var(--line)}
.sidebar-user.is-switch:focus-visible{border-color:var(--accent);box-shadow:0 0 0 3px rgba(113,112,255,.2);outline:none}
.sidebar-user .su-switch-icon{flex:0 0 auto;margin-left:auto;color:var(--muted);font-size:15px;line-height:1}
.sidebar-user.is-switch:hover .su-switch-icon{color:var(--text)}
.sidebar-user .su-imp.admin{color:var(--accent-hover)}
.impersonate-popup{width:min(460px,calc(100vw - 28px))}
.impersonate-popup .imp-search{margin-bottom:10px}
.imp-list{display:grid;gap:6px;max-height:min(54vh,420px);overflow-y:auto;padding-right:2px}
.imp-empty{padding:18px 13px;color:var(--muted);font-size:13px;text-align:center}
.imp-row{display:flex;align-items:center;gap:11px;width:100%;text-align:left;padding:9px 11px;border-radius:12px;border:1px solid var(--line);background:rgba(255,255,255,.035);color:var(--text);box-shadow:none;min-height:0;font:inherit;cursor:pointer}
.imp-row:hover{background:rgba(113,112,255,.14);border-color:var(--accent)}
.imp-row:focus-visible{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgba(113,112,255,.2)}
.imp-row.is-active{border-color:var(--accent);background:rgba(113,112,255,.12)}
.imp-row-av{flex:0 0 auto;display:grid;place-items:center;width:32px;height:32px;border-radius:50%;background:linear-gradient(135deg,var(--accent-bg),#9b8cff);color:#fff;font-size:12px;font-weight:600}
.imp-row-meta{min-width:0;display:grid;line-height:1.25;flex:1 1 auto}
.imp-row-name{font-size:13px;font-weight:560;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.imp-row-sub{font-size:11px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.imp-row-current{flex:0 0 auto;font-size:10px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--accent-hover);border:1px solid var(--accent);border-radius:999px;padding:3px 8px}

/* ---- Statistics ---------------------------------------------------------- */
.stat-empty{padding:26px 14px;text-align:center;color:var(--text-2)}
.stat-empty p{margin:0 0 6px}
.stat-card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px}
.stat-card{display:flex;flex-direction:column;border:1px solid var(--line);border-radius:14px;background:var(--surface);overflow:hidden}
.stat-card-main{display:block;padding:16px;text-decoration:none;color:inherit;flex:1 1 auto}
.stat-card-main:hover{background:var(--surface-2)}
.stat-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}
.stat-card-head h3{margin:0;font-size:16px;font-weight:560;letter-spacing:-.2px}
.stat-badge{flex:0 0 auto;padding:3px 10px;border-radius:999px;border:1px solid var(--line);background:var(--surface-2);color:var(--text);font-size:10px;font-weight:700;letter-spacing:.04em;text-transform:uppercase}
.stat-card-desc{margin:8px 0 0;color:var(--text-2);font-size:13px}
.stat-card-meta{margin:10px 0 0;font-size:13px;color:var(--text)}
.stat-card-sub{margin:6px 0 0;font-size:12px;color:var(--muted)}
.stat-card-actions{display:flex;align-items:center;gap:8px;padding:10px 16px;border-top:1px solid var(--line-soft);background:rgba(255,255,255,.02)}
.stat-card-actions form{margin:0}
.stat-card-actions .compact{min-height:0;padding:6px 11px;font-size:12px}

.stat-detail-actions{display:flex;gap:8px;flex-wrap:wrap}
/* `button{display:inline-flex}` (base rule) defeats the [hidden] attribute, so make
   the hidden Rebuild button truly hidden when there's nothing to rebuild. */
[data-stat-rebuild][hidden]{display:none}
.stat-range-bar{display:flex;align-items:flex-end;gap:12px;flex-wrap:wrap;padding-bottom:14px;margin-bottom:14px;border-bottom:1px solid var(--line-soft)}
.stat-range-bar label{display:grid;gap:5px;color:var(--muted);font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.06em}
.stat-range-bar input[type=date],.stat-range-bar select{min-width:150px}
.stat-range-bar .stat-range-today input{min-width:0;width:auto;flex:0 0 auto}
.stat-range-bar button{flex:0 0 auto}
/* Align the inline controls (toggle + status) with the bottom-aligned input fields. */
.stat-range-state{align-self:flex-end;min-height:38px;display:inline-flex;align-items:center;color:var(--muted);font-size:12px}

/* Chart-type switcher (segmented control). */
.stat-chart-toolbar{display:flex;justify-content:flex-end;margin-bottom:12px}
.stat-type-switch{display:inline-flex;gap:2px;padding:3px;border:1px solid var(--line);border-radius:10px;background:var(--surface)}
.stat-type-btn{min-height:0;padding:6px 13px;border:0;border-radius:7px;background:transparent;color:var(--muted);box-shadow:none;font-size:12.5px;font-weight:540}
.stat-type-btn:hover{background:var(--surface-2);color:var(--text)}
.stat-type-btn.is-active{background:var(--accent-bg);color:#fff}

/* Chart + scrollable legend side by side; stacks on narrow screens. */
.stat-chart-area{display:flex;gap:18px;align-items:stretch}
.stat-canvas-wrap{position:relative;flex:1 1 auto;min-width:0;min-height:320px;height:46vh;max-height:520px}
.stat-canvas-wrap canvas{max-width:100%}
.stat-legend{flex:0 0 clamp(280px,32%,380px);max-height:46vh;overflow-y:auto;overscroll-behavior:contain;display:grid;gap:2px;align-content:start;padding-right:4px;scrollbar-width:thin;scrollbar-color:var(--line) transparent}
.stat-legend[hidden]{display:none}
.stat-legend::-webkit-scrollbar{width:8px}
.stat-legend::-webkit-scrollbar-thumb{background:var(--line);border-radius:99px;border:2px solid transparent;background-clip:padding-box}
.stat-legend-item{display:flex;align-items:center;gap:8px;padding:5px 6px;border-radius:8px}
.stat-legend-item:hover{background:var(--surface)}
.stat-legend-item.is-clickable{cursor:pointer}
.stat-legend-item.is-off{opacity:.45}
.stat-legend-item.is-off .stat-legend-label{text-decoration:line-through}
.stat-legend-swatch{flex:0 0 auto;width:11px;height:11px;border-radius:3px}
.stat-legend-label{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-2);font-size:12.5px}
.stat-legend-val{flex:0 0 auto;color:var(--muted);font-size:11.5px;font-variant-numeric:tabular-nums}
@media(max-width:760px){.stat-chart-area{flex-direction:column}.stat-legend{flex:0 0 auto;max-height:200px}.stat-chart-toolbar{justify-content:flex-start}}

/* Statistics toasts (rebuild feedback, etc.). */
.stat-toasts{position:fixed;bottom:18px;right:18px;z-index:60;display:flex;flex-direction:column-reverse;gap:10px;width:min(340px,calc(100vw - 32px));pointer-events:none}
.stat-toast{pointer-events:auto;padding:12px 14px;border:1px solid var(--line);border-radius:12px;background:var(--surface-3);color:var(--text);box-shadow:var(--shadow);font-size:13px;animation:notif-toast-in .2s ease-out}
.stat-toast.is-leaving{opacity:0;transform:translateX(12px);transition:.25s}
.stat-pin-form{margin:0}

/* Dashboard pinned-statistics: one full-width row per statistic (bigger charts),
   each with chart + period/range selectors + details link. */
.stat-dash-empty{margin:4px 0 0}
.stat-dash-grid{display:grid;grid-template-columns:1fr;gap:16px}
.stat-dash-card{display:flex;flex-direction:column;gap:10px;padding:16px;border:1px solid var(--line);border-radius:14px;background:var(--surface)}
.stat-dash-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px}
.stat-dash-head h3{margin:0;font-size:16px;font-weight:560;letter-spacing:-.2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.stat-dash-link{flex:0 0 auto;font-size:12.5px;color:var(--accent-hover);text-decoration:none;white-space:nowrap}
.stat-dash-link:hover{text-decoration:underline}
.stat-dash-range{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.stat-dash-range select,.stat-dash-range input[type=date]{min-height:32px;padding:5px 8px;font-size:12px;min-width:0;flex:0 1 170px}
.stat-dash-range .stat-card-today{flex:0 0 auto;display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--muted)}
.stat-dash-range .stat-card-today input{flex:0 0 auto;width:auto;min-width:0;min-height:auto}
.stat-dash-range [hidden]{display:none}
.stat-dash-canvas-wrap{position:relative;height:clamp(280px,38vh,420px);min-height:280px}
.stat-dash-canvas-wrap canvas{max-width:100%}
.stat-dash-state{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;text-align:center;padding:12px;color:var(--muted);font-size:13px}
.stat-dash-state[hidden]{display:none}

/* Statistics list: one full-width row per statistic, details/actions beside a chart. */
.stat-row-list{display:grid;gap:14px}
.stat-row{display:grid;grid-template-columns:minmax(240px,0.85fr) minmax(320px,1.3fr);gap:20px;align-items:center;padding:16px;border:1px solid var(--line);border-radius:14px;background:var(--surface)}
.stat-row-info{min-width:0;display:flex;flex-direction:column;gap:5px}
.stat-row-head{display:flex;align-items:center;justify-content:space-between;gap:10px}
.stat-row-head h3{margin:0;font-size:16px;font-weight:560;letter-spacing:-.2px;overflow:hidden;text-overflow:ellipsis}
.stat-row-info .stat-card-actions{margin-top:9px}
.stat-row-chart{min-width:0}
.stat-row-chart .stat-dash-canvas-wrap{height:240px;min-height:240px}
@media(max-width:860px){.stat-row{grid-template-columns:1fr}.stat-row-chart .stat-dash-canvas-wrap{height:260px}}
.stat-loader{position:absolute;inset:0;z-index:2;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;background:var(--card);border:1px solid var(--line-soft);border-radius:12px}
.stat-loader[hidden]{display:none}
.stat-loader p{margin:0;color:var(--text-2);font-size:13px}
.stat-loader progress{width:min(280px,70%);height:8px}
.stat-spinner{width:34px;height:34px;border-radius:50%;border:3px solid var(--line);border-top-color:var(--accent);animation:stat-spin .8s linear infinite}
@keyframes stat-spin{to{transform:rotate(360deg)}}
.stat-error{position:absolute;inset:0;z-index:2;display:flex;align-items:center;justify-content:center;text-align:center;padding:18px;border-radius:12px;background:var(--card);border:1px solid var(--line-soft);color:var(--danger)}
.stat-error[hidden]{display:none}
/* "Build stopped — no data" panel. */
.stat-stopped{position:absolute;inset:0;z-index:2;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;text-align:center;padding:20px;border-radius:12px;background:var(--card);border:1px solid var(--line-soft)}
.stat-stopped[hidden]{display:none}
.stat-stopped p{margin:0;max-width:380px;color:var(--text-2)}
.stat-loader button,.stat-stopped button{min-height:0;padding:7px 14px;font-size:12.5px}
/* `.stat-range-bar label{display:grid}` would stack the checkbox above its text;
   keep this toggle inline and vertically centered with the input row. */
.stat-range-bar .stat-range-today{display:inline-flex;align-items:center;gap:8px;align-self:flex-end;min-height:38px;text-transform:none;font-weight:400;letter-spacing:0}
/* `.stat-range-bar label{display:grid}` and `.check{display:inline-flex}` both defeat the
   [hidden] attribute, so force any hidden control in the range bar to actually hide. */
.stat-range-bar [hidden]{display:none}
.stat-range-bar input:disabled{opacity:.6}
.stat-table-wrap{margin-top:16px;overflow:auto;max-height:60vh;position:relative}
.stat-table-wrap.stat-pannable{cursor:grab}
.stat-table-wrap.is-grabbing{cursor:grabbing;user-select:none}
.stat-table{width:100%;border-collapse:separate;border-spacing:0}
.stat-table th,.stat-table td{white-space:nowrap}
.stat-table th.num,.stat-table td.num{text-align:right}
.stat-table[hidden]{display:none}
/* Sticky header row + sticky first column (like the weekly plan). Sticky cells need
   an opaque background so scrolled content passes underneath them. */
.stat-table thead th{position:sticky;top:0;z-index:3;background:var(--surface-3)}
.stat-table tfoot th{position:sticky;bottom:0;z-index:3;background:var(--surface-3)}
.stat-table thead th:first-child,.stat-table tfoot th:first-child{left:0;z-index:4}
.stat-table tbody td:first-child{position:sticky;left:0;z-index:2;background:var(--card);max-width:260px;overflow:hidden;text-overflow:ellipsis}
.stat-table thead th:first-child,.stat-table tfoot th:first-child{position:sticky}
/* ‹ › horizontal-scroll arrows for wide (matrix) tables. */
.stat-hscroll{display:flex;justify-content:flex-end;gap:6px;margin:14px 0 0}
.stat-hscroll[hidden]{display:none}
.stat-hscroll button{min-height:0;width:34px;height:30px;padding:0;font-size:17px;line-height:1;border-radius:9px}
.stat-hscroll button:disabled{opacity:.4;cursor:default}
.stat-built-note{margin-top:10px;font-size:12px}
.stat-built-note[hidden]{display:none}

.stat-builder-dialog{width:min(640px,calc(100vw - 32px))}
.stat-builder-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.stat-builder-grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}
.stat-builder-hint{margin:0}
.stat-builder-fieldset{border:1px solid var(--line-soft);border-radius:12px;padding:14px;display:grid;gap:12px}
.stat-builder-fieldset legend{padding:0 6px;color:var(--text-2);font-size:13px;font-weight:560}
.stat-builder-form label{display:grid;gap:6px}
.stat-builder-form label[hidden]{display:none}
/* Checkbox options (e.g. "Up to today") stay inline — the grid rule above would
   otherwise stack the box above its label. */
.stat-builder-form label.check{display:inline-flex;align-items:center;gap:8px}
.stat-builder-form label.check[hidden]{display:none}
.stat-builder-form label.check input{width:auto;min-width:0;min-height:auto}
@media(max-width:640px){.stat-builder-grid{grid-template-columns:1fr}}

/* Build-progress chip near the notifications bell. */
.stat-progress-chip{display:none;align-items:center;gap:9px;max-width:100%;min-width:0;padding:9px 11px;border-radius:12px;border:1px solid rgba(113,112,255,.35);background:rgba(113,112,255,.12);color:var(--text-2);font-size:12px;text-decoration:none}
.stat-progress-chip.is-active{display:flex}
.stat-progress-chip:hover{background:rgba(113,112,255,.2);color:var(--text)}
.stat-progress-chip .stat-spinner{width:18px;height:18px;border-width:2px;flex:0 0 auto}
.stat-progress-chip .scp-text{flex:1 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* Weekly-plan per-day cell comments — a compact block under the wish lane / selector. */
/* Comment renders as the last block in the cell (normal flow — no flex on the <td>, which
   broke the table layout). */
.cell-comment-wrap{margin-top:8px;padding-top:7px;border-top:1px dashed var(--line-soft)}
.cell-comment{display:block;position:relative;width:100%;text-align:left;border:1px solid var(--line-soft);border-radius:8px;background:var(--surface);color:var(--text-2);padding:5px 24px 5px 8px;font:inherit;font-size:11.5px;line-height:1.35;cursor:pointer;transition:background .12s ease,border-color .12s ease}
.cell-comment:hover{border-color:var(--line);background:rgba(255,255,255,.05)}
/* weekly-plan-comment-delete-icon-only: keep the inline delete affordance as only the × glyph.
   Global button hover/focus styles otherwise draw a dark translucent square behind it. */
.cell-comment-del{position:absolute!important;top:50%!important;right:5px!important;transform:translateY(-50%)!important;width:16px!important;min-width:16px!important;max-width:16px!important;height:16px!important;min-height:16px!important;max-height:16px!important;display:inline-grid!important;place-items:center!important;padding:0!important;margin:0!important;border:0!important;border-radius:0!important;background:transparent!important;box-shadow:none!important;color:var(--muted)!important;font-size:15px!important;line-height:1!important;cursor:pointer;appearance:none!important;-webkit-appearance:none!important}
.cell-comment-del:hover,.cell-comment-del:focus,.cell-comment-del:active{background:transparent!important;box-shadow:none!important;border-color:transparent!important;color:var(--text)!important;outline:none!important;transform:translateY(-50%)!important}
.cell-comment-del:focus-visible{outline:1px solid rgba(255,255,255,.35)!important;outline-offset:2px!important}
.cell-comment-preview{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;white-space:normal;word-break:break-word}
.cell-comment-more{display:inline-block;margin-top:3px;color:var(--accent);font-size:11px;font-weight:600}
.cell-comment:hover .cell-comment-more{text-decoration:underline}
[data-theme="light"] .cell-comment:hover{background:rgba(15,23,42,.04)}
[data-theme="light"] .cell-comment-more{color:#4f46e5}
.cell-comment-add{display:inline-flex;align-items:center;gap:4px;border:1px dashed var(--line-soft);border-radius:999px;background:transparent;color:var(--muted);padding:2px 9px;font:inherit;font-size:11px;cursor:pointer;opacity:.75}
.cell-comment-add:hover{opacity:1;color:var(--text-2);border-color:var(--line)}
/* Comment dialog "who can see" audience picker + "reuse an existing comment" selector */
.comment-visible-field{display:flex;flex-direction:column;gap:6px}
.comment-visible-label{font-size:12px;font-weight:600;color:var(--text-2)}
.comment-suggest-select{width:100%;border-radius:10px;border:1px solid var(--line-soft);background:var(--input);color:inherit;padding:8px 10px;font:inherit;cursor:pointer}
/* weekly-plan-cell-selector-compact-rows: the wrapped selected values should read as
   compact stacked rows, not oversized bubbles. Keep text left and the × fixed at right. */
.day-cell .choices__list--multiple,
.adhoc-cell .choices__list--multiple{
  display:grid!important;
  grid-template-columns:1fr!important;
  gap:4px!important;
}
.day-cell .choices__list--multiple .choices__item[data-deletable],
.adhoc-cell .choices__list--multiple .choices__item[data-deletable]{
  display:grid!important;
  grid-template-columns:minmax(0,1fr) 14px!important;
  align-items:center!important;
  width:100%!important;
  max-width:100%!important;
  min-height:0!important;
  padding:4px 6px!important;
  border-radius:8px!important;
  line-height:1.2!important;
  text-align:left!important;
  white-space:normal!important;
  overflow:visible!important;
  text-overflow:clip!important;
  overflow-wrap:anywhere!important;
  word-break:normal!important;
}
.day-cell .choices__list--multiple .choices__item[data-deletable] .choices__button,
.adhoc-cell .choices__list--multiple .choices__item[data-deletable] .choices__button{
  grid-column:2!important;
  justify-self:end!important;
  align-self:center!important;
  order:0!important;
  width:12px!important;
  min-width:12px!important;
  height:12px!important;
  min-height:12px!important;
  margin:0!important;
  padding:0!important;
  border:0!important;
  background-position:center!important;
}
.project-picker-lite span{white-space:normal;overflow:visible;text-overflow:clip;overflow-wrap:anywhere;border-radius:8px!important;line-height:1.2!important}
/* weekly-plan-project-placeholder-wrap: Choices uses a one-line input placeholder,
   so draw a wrapping cell placeholder ourselves and keep the real input placeholder hidden. */
.day-cell .weekly-cell-project-choices .choices__inner,
.adhoc-cell .weekly-cell-project-choices .choices__inner{position:relative!important}
.day-cell .weekly-cell-project-choices .choices__input::placeholder,
.adhoc-cell .weekly-cell-project-choices .choices__input::placeholder{color:transparent!important;opacity:0!important}
.day-cell .weekly-cell-project-choices .choices__inner::after,
.adhoc-cell .weekly-cell-project-choices .choices__inner::after{
  content:"Project, Vacation, Sick leave";
  display:block!important;
  margin:4px 2px 0!important;
  color:var(--muted)!important;
  font-size:11px!important;
  line-height:1.22!important;
  text-align:left!important;
  white-space:normal!important;
  overflow-wrap:anywhere!important;
  word-break:normal!important;
  pointer-events:none!important;
}
.day-cell .weekly-cell-project-choices.is-open .choices__inner::after,
.adhoc-cell .weekly-cell-project-choices.is-open .choices__inner::after{display:none!important}

/* weekly-plan-selector-sticky-layer-fix: expanded Choices lists must float above
   the sticky weekly header instead of being painted underneath it when a cell
   selector opens upward near the top of the grid. */
.day-cell.picker-dropdown-open,
.adhoc-cell.picker-dropdown-open{
  position:relative!important;
  overflow:visible!important;
  z-index:2147483647!important;
}
.excel-grid tbody tr.picker-dropdown-row-open{
  position:relative!important;
  z-index:2147483647!important;
}
.day-cell .choices,
.adhoc-cell .choices{
  overflow:visible!important;
}
.day-cell .choices.is-open,
.adhoc-cell .choices.is-open,
.day-cell .choices.is-focused,
.adhoc-cell .choices.is-focused{
  z-index:2147483647!important;
}
.day-cell .choices__list--dropdown,
.day-cell .choices__list[aria-expanded],
.adhoc-cell .choices__list--dropdown,
.adhoc-cell .choices__list[aria-expanded]{
  z-index:2147483647!important;
}
/* Weekly-plan "See history" popup */
.history-dialog{width:min(720px,calc(100vw - 32px))}
.history-dialog-card{display:flex;flex-direction:column;gap:14px}
.history-dialog-body{flex:1 1 auto;min-height:0;overflow:auto;overscroll-behavior:contain;display:flex;flex-direction:column;gap:18px;padding-right:2px}
.wp-hist-empty{color:var(--muted);text-align:center;padding:26px 12px;margin:0}
.wp-hist-day{display:flex;flex-direction:column;gap:8px}
.wp-hist-day-head{position:sticky;top:0;z-index:1;margin:0;padding:6px 2px;font-size:11px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--accent-hover);background:var(--panel)}
.wp-hist-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:1px;border:1px solid var(--line);border-radius:12px;overflow:hidden;background:var(--line-soft)}
.wp-hist-row{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:10px 12px;background:var(--surface)}
.wp-hist-main{flex:1 1 auto;min-width:0;display:flex;align-items:center;gap:8px;flex-wrap:wrap;line-height:1.4}
.wp-hist-text{overflow-wrap:anywhere}
.wp-hist-text strong{font-weight:600;color:var(--text)}
.wp-hist-actor{display:inline-flex;align-items:center;gap:7px;font-weight:560;color:var(--text)}
.wp-hist-actor .avatar-plan{width:22px;height:22px;font-size:10px;flex:0 0 auto}
.wp-hist-actor-name{white-space:nowrap}
.wp-hist-system{color:var(--accent-hover);font-weight:600}
.wp-hist-when{flex:0 0 auto;color:var(--muted);font-size:12px;white-space:nowrap;text-align:right;display:inline-flex;align-items:center;gap:6px}
.wp-hist-tag{display:inline-flex;align-items:center;padding:1px 7px;border-radius:999px;border:1px solid var(--line);background:var(--surface-2);color:var(--muted);font-size:10px;font-weight:600;letter-spacing:.04em;text-transform:uppercase}
.wp-hist-reported .wp-hist-text strong{color:var(--accent-hover)}
@media(max-width:600px){.wp-hist-row{flex-direction:column;gap:4px}.wp-hist-when{text-align:left}}

/* ---- Quizzes (v20260729-quizzes) -------------------------------------------
   Three surfaces: the management list, the builder/edit page and the results page
   (all inside the app shell), plus the standalone respond page used by the public
   /q/<token> link, which has no sidebar and must stand on its own in both themes. */
.quiz-notice{padding:11px 14px;margin-bottom:16px;border:1px solid rgba(16,185,129,.32);border-radius:12px;background:rgba(16,185,129,.1);color:var(--text-2)}
.quiz-inline-form{display:inline}
.quiz-empty{padding:22px 6px;text-align:center;color:var(--muted)}

/* Filter bar */
.quiz-filter-form{display:grid;grid-template-columns:minmax(240px,1fr) auto;gap:14px;align-items:end}
.quiz-filter-search{display:grid;gap:7px}
.quiz-filter-search label{color:var(--muted);font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.08em}
.quiz-filter-controls{display:flex;align-items:center;gap:10px;flex-wrap:wrap}

/* List rows */
.quiz-list{display:grid;gap:14px}
.quiz-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(240px,320px);gap:20px;align-items:center;margin-bottom:0}
.quiz-row.is-archived{opacity:.72;border-style:dashed}
.quiz-row-main{min-width:0}
.quiz-row-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.quiz-row-head h3{margin:0;font-size:19px;font-weight:560;letter-spacing:-.2px}
.quiz-row-head h3 a{text-decoration:none}
.quiz-row-head h3 a:hover{color:var(--accent-hover)}
.quiz-row-desc{margin:8px 0 0;color:var(--text-2)}
.quiz-row-meta{margin:8px 0 0;font-size:13px}
.quiz-row-stats{display:grid;gap:10px;justify-items:stretch}
.quiz-row-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}

/* State pills */
.quiz-state{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:999px;border:1px solid var(--line);background:var(--surface);color:var(--text-2);font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase}
.quiz-state:before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor}
.quiz-state-open{color:var(--ok);border-color:rgba(16,185,129,.4);background:rgba(16,185,129,.1)}
.quiz-state-draft{color:var(--muted);border-color:var(--line)}
.quiz-state-ended,.quiz-state-closed{color:var(--warn);border-color:rgba(245,158,11,.4);background:rgba(245,158,11,.1)}
.quiz-state-archived{color:var(--muted-2);border-style:dashed}
.quiz-anon{border-color:rgba(113,112,255,.4);background:rgba(113,112,255,.12);color:var(--accent-hover)}

/* Counters + progress */
.quiz-stat{display:grid;gap:2px}
.quiz-stat-value{font-size:22px;font-weight:600;line-height:1.1;letter-spacing:-.5px;color:var(--text)}
.quiz-stat.big .quiz-stat-value{font-size:34px}
.quiz-stat-of{margin-left:5px;color:var(--muted);font-size:15px;font-weight:400}
.quiz-stat-label{color:var(--muted);font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase}
.quiz-progress{height:8px;border-radius:999px;background:var(--surface-2);overflow:hidden}
.quiz-progress.wide{width:100%}
.quiz-progress-bar{height:100%;border-radius:999px;background:linear-gradient(90deg,var(--accent-bg),var(--accent-hover));transition:width .25s}

/* Detail: summary + link */
.quiz-detail-actions{display:flex;gap:10px;flex-wrap:wrap}
.quiz-summary{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:24px;align-items:start}
.quiz-summary-stats{display:grid;grid-template-columns:repeat(3,auto);gap:20px 26px;align-items:end}
.quiz-summary-stats .quiz-progress{grid-column:1/-1}
.quiz-summary-link{display:grid;gap:7px}
.quiz-summary-link label{color:var(--muted);font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.08em}
.quiz-link-row{display:flex;gap:8px}
.quiz-link-row input{font-family:'JetBrains Mono',ui-monospace,monospace;font-size:12px}
.quiz-warning{margin:0;padding:9px 12px;border:1px solid rgba(245,158,11,.35);border-radius:10px;background:rgba(245,158,11,.1);color:var(--text-2);font-size:13px}
.quiz-round-table{font-size:13px}
.quiz-round-filter{display:flex;align-items:center;gap:8px}
.quiz-round-filter label{display:flex;align-items:center;gap:8px;color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.08em}
.quiz-round-filter select{min-width:150px}

/* Builder */
.quiz-builder{display:grid;gap:14px;margin-bottom:14px}
.quiz-builder-add{display:flex;align-items:end;gap:10px;flex-wrap:wrap}
.quiz-add-type{display:grid;gap:6px;min-width:260px;color:var(--muted);font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.08em}
.quiz-q{display:grid;gap:12px;padding:16px;border:1px solid var(--line);border-radius:14px;background:var(--surface)}
.quiz-q.is-collapsed{gap:0;padding:10px 12px;background:rgba(255,255,255,.035)}
.quiz-q.is-collapsed> :not(.quiz-q-head){display:none!important}
.quiz-q.is-collapsed .quiz-q-tools{display:none!important}
.quiz-builder.is-question-dragging{gap:8px}
.quiz-builder.is-question-dragging .quiz-q{gap:0;padding:10px 12px;min-height:48px;background:rgba(255,255,255,.035)}
.quiz-builder.is-question-dragging .quiz-q> :not(.quiz-q-head){display:none!important}
.quiz-builder.is-question-dragging .quiz-q-tools{display:none!important}
.quiz-builder.is-question-dragging .quiz-q.is-dragging{opacity:.72;outline:1px dashed var(--accent);background:rgba(113,112,255,.12)}
.quiz-q-head{display:flex;align-items:center;gap:10px;min-width:0}
.quiz-q-drag-zone{display:flex;align-items:center;gap:10px;min-width:0;flex:1 1 auto;border-radius:10px;cursor:grab;user-select:none}
.quiz-q:not(.is-collapsed) .quiz-q-drag-zone{flex:0 0 auto}
.quiz-builder.is-question-dragging .quiz-q-drag-zone{flex:1 1 auto}
.quiz-q-drag-zone:hover{background:rgba(113,112,255,.08)}
.quiz-q-drag-zone:active{cursor:grabbing}
.quiz-q-summary{display:none;min-width:0;flex:1 1 auto;align-items:center;justify-content:space-between;gap:12px}
.quiz-q-summary strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text);font-size:14px;font-weight:700}
.quiz-q-summary span{flex:0 0 auto;color:var(--muted);font-size:12px}
.quiz-q.is-collapsed .quiz-q-summary,.quiz-builder.is-question-dragging .quiz-q-summary{display:flex} /* marker: quiz-drag-compact-questions-20260730 */
.quiz-q-collapse-btn{flex:0 0 auto;width:34px!important;min-width:34px!important;padding:0!important}
.quiz-q-collapse-btn[aria-expanded="false"]{color:var(--accent-hover);border-color:rgba(113,112,255,.36);background:rgba(113,112,255,.10)} /* marker: quiz-edit-default-collapsed-questions-20260730 */
.quiz-q-no{display:grid;place-items:center;width:26px;height:26px;flex:0 0 auto;border-radius:8px;background:var(--accent-bg);color:#fff;font-size:12px;font-weight:600}
.quiz-q-type{max-width:280px}
.quiz-q-tools{margin-left:auto;display:flex;gap:6px}
.quiz-q-tools button{width:34px!important;min-width:34px!important;padding:0!important}
.quiz-q-title-field,.quiz-mini-field{display:grid;gap:6px}
.quiz-q-title-field>span,.quiz-mini-field>span{color:var(--muted);font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.08em}
.quiz-q-title-field input{font-size:16px}
.quiz-q-meta{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:14px;align-items:end}
.quiz-opt-list{display:grid;gap:7px}
.quiz-opt-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto auto;gap:6px}
.quiz-opt-row button{width:34px!important;min-width:34px!important;padding:0!important}
.quiz-opt-actions{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.quiz-q-settings{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:10px}
.quiz-q-hint{margin:0;font-size:12px}
.quiz-settings-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:14px;margin-bottom:14px}
.quiz-settings-grid label{display:grid;gap:6px;align-content:start}
.quiz-result-subscribers{display:grid;gap:6px;min-width:0;margin-top:2px}
.quiz-result-subscribers .choices{width:100%;margin:0}
.quiz-hint{color:var(--muted);font-size:12px}
.quiz-edit-form>.card>h2{margin-bottom:6px}

/* Rules */
.quiz-block[data-quiz-block="rules"],.quiz-block[data-quiz-block="rules"] .quiz-rules,.quiz-block[data-quiz-block="rules"] .quiz-rule,.quiz-block[data-quiz-block="rules"] .quiz-mini-field{overflow:visible} /* marker: quiz-rule-notify-dropdown-visible-20260730 */
.quiz-rules{display:grid;gap:10px;margin-bottom:12px}
.quiz-rule{display:grid;grid-template-columns:minmax(160px,1.3fr) minmax(130px,1fr) 110px minmax(200px,1.4fr) auto;gap:10px;align-items:end;padding:12px;border:1px solid var(--line);border-radius:12px;background:var(--surface)}
.quiz-rule>button{width:38px!important;min-width:38px!important;padding:0!important}
.quiz-rule .choices{width:100%;overflow:visible}
.quiz-rule .choices__list--dropdown,.quiz-rule .choices__list[aria-expanded]{z-index:70!important;max-height:min(340px,calc(100vh - 180px))!important}

/* Sticky save bar */
.quiz-save-bar{position:sticky;bottom:0;z-index:5;display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;margin-top:4px;padding:12px 16px;border:1px solid var(--line);border-radius:14px;background:rgba(15,16,17,.92);backdrop-filter:blur(10px)}
.quiz-edit-form+.quiz-rounds{margin-top:22px} /* marker: quiz-save-history-gap-20260730 */
.quiz-save-actions,.quiz-save-right{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.quiz-save-state{color:var(--muted);font-size:13px}
.quiz-save-state.is-error{color:var(--danger)}

/* Results */
.quiz-result-list{display:grid;gap:16px}
.quiz-result{margin-bottom:0}
.quiz-filter-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;flex-wrap:wrap;margin-bottom:4px}
.quiz-filter-head h2{margin:0 0 6px}
.quiz-filter-head .muted{max-width:980px}
.quiz-subgroup-filter{display:grid;gap:18px;margin:18px 0 20px;overflow:visible}
.quiz-subgroup-filter form{display:grid;gap:14px;overflow:visible}
.quiz-filter-rows{display:grid;gap:12px;overflow:visible}
.quiz-filter-row{display:grid;grid-template-columns:minmax(260px,1.15fr) minmax(180px,.55fr) minmax(300px,1fr) auto;gap:14px 16px;align-items:end;padding:14px;border:1px solid var(--line-soft);border-radius:14px;background:rgba(255,255,255,.035);overflow:visible}
.quiz-filter-row label{display:grid;gap:7px;min-width:0;color:var(--muted);font-size:12px;font-weight:700;letter-spacing:.05em;text-transform:uppercase}
.quiz-filter-row label>span{display:block}
.quiz-filter-row select,.quiz-filter-row input{width:100%;min-width:0;text-transform:none;letter-spacing:0;font-size:14px;font-weight:500;color:var(--text)}
.quiz-filter-row .choices{width:100%;min-width:0;margin:0;overflow:visible}
.quiz-filter-row .choices__inner{min-height:42px!important;padding:5px 8px!important;background:var(--input)!important;border-color:var(--line-soft)!important;border-radius:10px!important} /* marker: quiz-subgroup-choices-polish-20260730 */
.quiz-filter-row .choices__list--multiple{display:flex!important;gap:5px!important;align-items:center;flex-wrap:wrap!important}
.quiz-filter-row .choices__list--multiple .choices__item{max-width:100%;border-radius:999px!important;background:rgba(113,112,255,.22)!important;border:1px solid rgba(113,112,255,.45)!important;color:var(--text)!important;line-height:1.25!important}
.quiz-filter-row .choices__list--dropdown,.quiz-filter-row .choices__list[aria-expanded]{z-index:50!important;min-width:min(520px,calc(100vw - 80px))!important;max-width:min(620px,calc(100vw - 80px))!important}
.quiz-filter-value select[multiple]:not([hidden]){min-height:42px;padding:7px}
.quiz-filter-value.is-empty-op select,.quiz-filter-value.is-empty-op input,.quiz-filter-value.is-empty-op .choices{display:none!important}
.quiz-filter-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:2px}
.quiz-filter-remove{align-self:end;white-space:nowrap;min-width:112px}
.quiz-active-filters{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.quiz-active-filters strong{font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}
.quiz-active-filters span{padding:5px 9px;border:1px solid var(--line-soft);border-radius:999px;background:var(--surface-2);color:var(--text-2);font-size:12px}
.quiz-result-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;flex-wrap:wrap}
.quiz-result-head h2{margin:0 0 4px}
.quiz-type-switch{display:inline-flex;border:1px solid var(--line);border-radius:10px;overflow:hidden}
.quiz-type-btn{min-height:32px;padding:5px 11px;border:0;border-right:1px solid var(--line);border-radius:0;background:transparent;color:var(--muted);box-shadow:none;font-size:12px}
.quiz-type-btn:last-child{border-right:0}
.quiz-type-btn:hover{background:var(--surface-2);color:var(--text)}
.quiz-type-btn.is-active{background:var(--accent-bg);color:#fff}
.quiz-stat-row{display:flex;gap:26px;flex-wrap:wrap;margin:14px 0 4px;padding:12px 14px;border:1px solid var(--line-soft);border-radius:12px;background:var(--surface)}
.quiz-result-body{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:20px;margin-top:14px;align-items:start}
.quiz-result-body.is-text-only{grid-template-columns:1fr}
.quiz-chart-wrap{position:relative;min-height:260px;height:300px}
.quiz-chart-empty{position:absolute;inset:0;display:grid;place-items:center;margin:0;color:var(--muted)}
.quiz-chart-empty[hidden]{display:none!important} /* marker: quiz-chart-empty-hidden-20260730 */
.quiz-result-table{font-size:14px}
.quiz-result-table td.num,.quiz-result-table th:not(:first-child){text-align:right}
.quiz-result-table tfoot td{font-weight:600;color:var(--text)}
.quiz-text-answers{list-style:none;margin:0;padding:0;display:grid;gap:8px;max-height:340px;overflow:auto}
.quiz-text-answers li{padding:10px 12px;border:1px solid var(--line-soft);border-radius:10px;background:var(--surface)}
.quiz-text-answers p{margin:0 0 4px;white-space:pre-wrap;overflow-wrap:anywhere}
.quiz-text-answers span{font-size:12px}
.quiz-other-answers{margin-top:10px;font-size:13px}
.quiz-other-answers summary{cursor:pointer;color:var(--accent-hover)}
.quiz-responses-wrap{overflow:auto;max-height:60vh;border:1px solid var(--line);border-radius:12px}
.quiz-responses-table{min-width:720px;font-size:13px}
.quiz-responses-table thead th{position:sticky;top:0;z-index:2;background:var(--surface-3);white-space:nowrap}
.quiz-responses-table td{vertical-align:top;max-width:320px;overflow-wrap:anywhere}

/* ---- Standalone respond page ---- */
body.quiz-page{display:block}
.quiz-standalone{max-width:780px;margin:0 auto;padding:34px 20px 70px;overflow:visible}
.quiz-standalone-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;margin-bottom:16px}
.quiz-standalone-head h1{margin:0;font-size:clamp(26px,4vw,40px);line-height:1.08;letter-spacing:-.8px;font-weight:560}
.quiz-standalone-desc{margin:10px 0 0;color:var(--muted)}
.quiz-meta-bar{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:18px}
.quiz-card{margin-bottom:14px}
.quiz-message p{margin:0 0 10px}
.quiz-message p:last-child{margin-bottom:0}
.quiz-intro{border-left:3px solid var(--accent)}
.quiz-done{text-align:center;padding:34px 24px}
.quiz-done-mark{display:grid;place-items:center;width:56px;height:56px;margin:0 auto 14px;border-radius:50%;background:rgba(16,185,129,.15);border:1px solid rgba(16,185,129,.4);color:var(--ok);font-size:26px}
.quiz-done h2{margin-bottom:8px}
.quiz-progress-bar-wrap{position:sticky;top:0;z-index:6;display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:10px;padding:12px 14px;border:1px solid var(--line);border-radius:12px;background:rgba(15,16,17,.94);backdrop-filter:blur(10px)}
.quiz-progress-bar-wrap .quiz-progress{flex:1 1 200px}
.quiz-progress-text,.quiz-step-counter{color:var(--muted);font-size:12px;white-space:nowrap}
.quiz-step-counter{font-weight:650;color:var(--text-2)}
.quiz-step-pages{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin:0 0 14px;padding:10px 12px;border:1px solid var(--line-soft);border-radius:12px;background:rgba(255,255,255,.035)}
.quiz-step-page{position:relative;display:grid;place-items:center;width:32px!important;min-width:32px!important;height:32px;min-height:32px;padding:0!important;border-radius:999px;border:1px solid var(--line);background:var(--surface);color:var(--text-2);font-size:12px;font-weight:650;box-shadow:none}
.quiz-step-page-submit{width:auto!important;min-width:82px!important;padding:0 12px!important}
.quiz-step-page.is-current{border-color:var(--accent);background:var(--accent-bg);color:#fff}
.quiz-step-page.is-answered:not(.is-current){border-color:rgba(16,185,129,.45);color:#bbf7d0;background:rgba(16,185,129,.1)}
.quiz-step-page.is-required-missing:not(.is-current),.quiz-step-page.has-error:not(.is-current){border-color:rgba(239,68,68,.55);color:#fecaca;background:rgba(239,68,68,.13)}
.quiz-step-page.is-required-missing:after,.quiz-step-page.has-error:after{content:"!";position:absolute;transform:translate(12px,-12px);display:grid;place-items:center;width:14px;height:14px;border-radius:999px;background:var(--danger);color:#fff;font-size:9px;line-height:1}
.quiz-step-nav{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:16px;padding-top:14px;border-top:1px solid var(--line-soft)}
.quiz-step-nav[hidden],.quiz-form.is-submit-step .quiz-step-nav{display:none!important} /* marker: quiz-submit-crossed-controls-removed-20260729 */
.quiz-step-status{color:var(--muted);font-size:13px;font-weight:650}
.quiz-step-prev,.quiz-step-next{min-width:130px}
.quiz-question.has-error,.quiz-question.is-required-unanswered{border-color:rgba(239,68,68,.62);box-shadow:0 0 0 1px rgba(239,68,68,.18),0 12px 36px rgba(239,68,68,.08)}
.quiz-question,.quiz-submit-step{scroll-margin-top:150px}
.quiz-submit-step{padding:24px;text-align:left}
.quiz-submit-step h2{margin:0 0 8px}
.quiz-fieldset{margin:0;padding:0;border:0}
.quiz-question-title{display:flex;align-items:flex-start;gap:10px;padding:0;margin-bottom:6px;font-size:17px;font-weight:560;color:var(--text);line-height:1.35}
.quiz-question-no{display:grid;place-items:center;width:24px;height:24px;flex:0 0 auto;border-radius:7px;background:var(--surface-2);color:var(--muted);font-size:12px;font-weight:600}
.quiz-required{color:var(--danger)}
.quiz-help{margin:0 0 12px 34px;color:var(--muted);font-size:13px}
.quiz-options{display:grid;gap:8px;margin-left:34px}
.quiz-option{display:flex;align-items:flex-start;gap:10px;padding:11px 13px;border:1px solid var(--line);border-radius:11px;background:var(--surface);cursor:pointer}
.quiz-option:hover{background:var(--surface-2);border-color:var(--line)}
.quiz-option input{width:auto;min-height:0;margin-top:3px;accent-color:var(--accent)}
.quiz-option:has(input:checked){border-color:var(--accent);background:rgba(113,112,255,.14)}
.quiz-other-input{margin-left:34px;width:calc(100% - 34px)}
.quiz-other-input:disabled{opacity:.5}
.quiz-select,.quiz-number,.quiz-question textarea,.quiz-question input[type=text],.quiz-question input[type=email],.quiz-question input[type=url]{margin-left:34px;width:calc(100% - 34px)}
.quiz-number{max-width:240px}
/* Scale: keep the answer labels tied to the actual tick row. The scale box shrinks to
   the tick width on desktop, so the max label lands under the last button instead of the
   far edge of the question card. (marker: quiz-scale-endpoint-fit-20260729) */
.quiz-scale{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);width:fit-content;max-width:calc(100% - 34px);gap:7px 12px;margin-left:34px}
.quiz-scale-ticks{grid-row:1;grid-column:1/-1;display:flex;gap:6px;flex-wrap:wrap}
.quiz-scale-label{grid-row:2;grid-column:1;justify-self:start;color:var(--muted);font-size:12px;line-height:1.3}
.quiz-scale-ticks+.quiz-scale-label{grid-column:2;justify-self:end;text-align:right}
.quiz-tick{position:relative;display:grid;place-items:center;min-width:44px;height:44px;padding:0 8px;border:1px solid var(--line);border-radius:10px;background:var(--surface);cursor:pointer;font-weight:560}
.quiz-tick input{position:absolute;opacity:0;width:1px;height:1px}
.quiz-tick:hover{background:var(--surface-2)}
.quiz-tick:has(input:checked){border-color:var(--accent);background:var(--accent-bg);color:#fff}
.quiz-tick:has(input:focus-visible){box-shadow:0 0 0 3px rgba(113,112,255,.35)}
.quiz-rating{display:flex;align-items:center;gap:6px;margin-left:34px}
.quiz-star{position:relative;cursor:pointer;font-size:30px;line-height:1;color:var(--surface-2)}
.quiz-star input{position:absolute;opacity:0;width:1px;height:1px}
.quiz-rating .quiz-star.is-on,.quiz-rating .quiz-star.is-on:hover{color:#f5a623!important;text-shadow:0 0 10px rgba(245,166,35,.22)} /* marker: quiz-rating-gold-all-themes-20260730 */
.quiz-star:hover{color:#f5a623}
.quiz-star-clear{margin-left:10px}
.quiz-error{margin:10px 0 0 34px;color:var(--danger);font-size:13px}
.quiz-submit-bar{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-top:18px}
.quiz-submit{min-height:46px;padding:11px 26px;font-size:16px}
.quiz-foot{margin-top:26px;text-align:center;font-size:12px}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}

@media(max-width:1000px){
  .quiz-row{grid-template-columns:1fr}
  .quiz-row-actions{justify-content:flex-start}
  .quiz-summary{grid-template-columns:1fr}
  .quiz-result-body{grid-template-columns:1fr}
  .quiz-filter-row{grid-template-columns:1fr}
  .quiz-filter-remove{justify-self:start}
  .quiz-rule{grid-template-columns:1fr}
  .quiz-filter-form{grid-template-columns:1fr}
  .quiz-q-meta{grid-template-columns:1fr}
}
@media(max-width:600px){
  .quiz-standalone{padding:22px 14px 60px}
  .quiz-options,.quiz-help,.quiz-scale,.quiz-rating,.quiz-error{margin-left:0}
  .quiz-scale{max-width:100%;gap:6px 8px}
  .quiz-step-nav{display:grid;grid-template-columns:1fr;gap:8px}.quiz-step-status{text-align:center;order:-1}.quiz-step-prev,.quiz-step-next{width:100%;min-width:0}
  .quiz-other-input,.quiz-select,.quiz-number,.quiz-question textarea,.quiz-question input[type=text],.quiz-question input[type=email],.quiz-question input[type=url]{margin-left:0;width:100%}
}

/* Light theme: the translucent white surfaces above need real fills to stay readable. */
html[data-theme="light"] .quiz-q,
html[data-theme="light"] .quiz-rule,
html[data-theme="light"] .quiz-option,
html[data-theme="light"] .quiz-tick,
html[data-theme="light"] .quiz-text-answers li,
html[data-theme="light"] .quiz-stat-row{background:#fff;border-color:#d7dee8}
html[data-theme="light"] .quiz-option:hover,html[data-theme="light"] .quiz-tick:hover{background:#eef2f7}
html[data-theme="light"] .quiz-step-pages{background:#fff;border-color:#d7dee8}
html[data-theme="light"] .quiz-step-page{background:#fff;border-color:#d7dee8;color:#475569}
html[data-theme="light"] .quiz-step-page.is-answered:not(.is-current){background:#dcfce7;color:#166534;border-color:#22c55e}
html[data-theme="light"] .quiz-step-page.is-required-missing:not(.is-current),html[data-theme="light"] .quiz-step-page.has-error:not(.is-current){background:#fee2e2;color:#991b1b;border-color:#ef4444}
html[data-theme="light"] .quiz-option:has(input:checked){background:#e8eaff;border-color:#5e6ad2}
html[data-theme="light"] .quiz-tick:has(input:checked){background:#5e6ad2;color:#fff;border-color:#5e6ad2}
html[data-theme="light"] .quiz-save-bar,
html[data-theme="light"] .quiz-progress-bar-wrap{background:rgba(255,255,255,.95);border-color:#d7dee8;box-shadow:0 -6px 20px rgba(15,23,42,.06)}
html[data-theme="light"] .quiz-progress{background:#dfe6ef}
html[data-theme="light"] .quiz-state{background:#fff;border-color:#d7dee8}
html[data-theme="light"] .quiz-state-open{background:#dcfce7;border-color:#22c55e;color:#166534}
html[data-theme="light"] .quiz-state-ended,html[data-theme="light"] .quiz-state-closed{background:#fef3c7;border-color:#f59e0b;color:#92400e}
html[data-theme="light"] .quiz-anon{background:#e8eaff;border-color:#5e6ad2;color:#3730a3}
html[data-theme="light"] .quiz-notice{background:#dcfce7;border-color:#22c55e;color:#166534}
html[data-theme="light"] .quiz-warning{background:#fef3c7;border-color:#f59e0b;color:#92400e}
html[data-theme="light"] .quiz-responses-table thead th{background:#eef2f7}
html[data-theme="light"] .quiz-star{color:#d7dee8}
html[data-theme="light"] .quiz-rating .quiz-star.is-on,html[data-theme="light"] .quiz-rating .quiz-star.is-on:hover{color:#f5a623!important;text-shadow:0 0 9px rgba(245,166,35,.24)} /* marker: quiz-light-rating-selected-20260729 */
html[data-theme="light"] .quiz-star:hover{color:#f5a623}
html[data-theme="light"] .quiz-type-btn.is-active{background:#5e6ad2;color:#fff}

/* ---- Quizzes: collapsible blocks, drag handles, test run (v20260729-quizzes-2) ---- */
/* Every edit-page block is a <details>; the summary is its header bar. */
.quiz-block{padding:0;overflow:hidden}
.quiz-block>.quiz-block-head{display:flex;align-items:center;gap:12px;padding:16px 20px;cursor:pointer;list-style:none;-webkit-user-select:none;user-select:none}
.quiz-block>.quiz-block-head::-webkit-details-marker{display:none}
.quiz-block>.quiz-block-head:hover{background:var(--surface-2)}
.quiz-block>.quiz-block-head h2{margin:0}
.quiz-block-hint{color:var(--muted);font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.quiz-block>.quiz-block-head:after{content:"";flex:0 0 auto;margin-left:auto;width:8px;height:8px;border-right:1.8px solid var(--muted);border-bottom:1.8px solid var(--muted);transform:rotate(-45deg);transition:transform .15s}
.quiz-block[open]>.quiz-block-head:after{transform:rotate(45deg)}
.quiz-block[open]>.quiz-block-head{border-bottom:1px solid var(--line-soft)}
.quiz-block>*:not(.quiz-block-head){margin-left:20px;margin-right:20px}
.quiz-block>*:not(.quiz-block-head):first-of-type{margin-top:16px}
.quiz-block>*:not(.quiz-block-head):last-child{margin-bottom:18px}
.quiz-block .quiz-summary{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:24px;align-items:start}
.quiz-block .quiz-round-table{width:calc(100% - 40px)}

/* Drag handles for questions and answer options. */
.quiz-grip{flex:0 0 auto;display:grid;place-items:center;width:22px;height:28px;border-radius:6px;color:var(--muted-2);font-size:14px;line-height:1;cursor:grab}
.quiz-grip:hover{color:var(--text-2);background:var(--surface-2)}
.quiz-grip:active{cursor:grabbing}
.quiz-opt-row{grid-template-columns:auto minmax(0,1fr) auto auto auto}
.quiz-opt-row .quiz-grip{height:38px}
.quiz-q.is-dragging,.quiz-opt-row.is-dragging{opacity:.45}
.quiz-q.is-drop-target{outline:2px dashed var(--accent);outline-offset:3px}
.quiz-opt-row.is-drop-target{outline:2px dashed var(--accent);outline-offset:2px;border-radius:8px}

/* Test-run banner on the respond page. */
.quiz-test-note{display:flex;align-items:center;gap:14px;flex-wrap:wrap;border-color:rgba(245,158,11,.45);background:rgba(245,158,11,.12)}
.quiz-test-note>div{flex:1 1 320px}
.quiz-test-note strong{color:var(--warn)}

html[data-theme="light"] .quiz-block>.quiz-block-head:hover{background:#eef2f7}
html[data-theme="light"] .quiz-test-note{background:#fef3c7;border-color:#f59e0b;color:#92400e}
html[data-theme="light"] .quiz-test-note strong{color:#92400e}
html[data-theme="light"] .quiz-grip:hover{background:#eef2f7}
