:root{--bg:#f3f2e9;--main:#351c75;--ink:#333333;--accent:#f5921f;--line:#e5e3d9;--muted:#75746e}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.5 Inter,Arial,sans-serif}button,input,textarea,select{font:inherit}button,a,select{ -webkit-tap-highlight-color:transparent}button{cursor:pointer}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:3px solid var(--accent);outline-offset:3px}aside{position:fixed;inset:0 auto 0 0;width:242px;background:var(--main);color:white;padding:36px 23px;display:flex;flex-direction:column}.brand{font-size:34px;letter-spacing:-1.5px;font-weight:700;color:white;text-decoration:none;padding:0 14px}.brand span{color:var(--accent)}.brand i{display:block;font-size:10px;font-style:normal;letter-spacing:2.4px;font-weight:500;margin-top:7px;color:#d7cbe8}.navlabel{font-size:11px;letter-spacing:1.7px;margin:58px 15px 14px;color:#b8a6d6}nav button{display:flex;gap:14px;align-items:center;width:100%;border:0;background:none;color:#d9d0ea;padding:14px;border-radius:7px;font-size:14px;text-align:left;margin:4px 0}nav button.active{background:#ffffff18;color:white;box-shadow:inset 3px 0 var(--accent)}.sidebar-bottom{margin-top:auto;display:flex;align-items:center;gap:12px;font-size:14px;border-top:1px solid #ffffff20;padding-top:24px}.avatar{background:#ffffff16;width:37px;height:37px;border-radius:50%;display:grid;place-items:center;color:#ffd49f;font-size:12px}.sidebar-bottom small{display:block;color:#b8a6d6;font-size:12px}main{margin-left:242px;padding:0 42px;max-width:1800px}header{height:80px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line);font-size:13px;color:var(--muted)}header span{margin:0 12px}.prototype{font-size:10px;letter-spacing:1px;border:1px solid #d9d5e2;color:var(--main);padding:5px 9px;border-radius:4px}.heading{display:flex;align-items:center;justify-content:space-between;padding:36px 0 28px}.eyebrow{font-size:11px;letter-spacing:1.6px;font-weight:700;color:var(--main)}h1{font-size:40px;letter-spacing:-1.7px;line-height:1.2;margin:8px 0 10px;color:var(--main);font-weight:650}h1 span{color:var(--accent)}p{margin:0;color:var(--muted);font-size:14px}.primary{background:var(--main);color:white;border:0;border-radius:6px;padding:12px 19px;font-size:14px}.meeting{background:white;border:1px solid var(--line);border-radius:9px;display:flex;align-items:center;justify-content:space-between;padding:19px 23px}.meeting>div{display:flex;gap:16px;align-items:center}.meeting-icon{background:#f0edf7;color:var(--main);font-size:25px;width:47px;height:47px;border-radius:10px;display:grid;place-items:center}.meeting strong{font-size:16px}.meeting p{font-size:13px;margin-top:3px}.week-label{font-size:12px;color:var(--muted)}select{border:1px solid var(--line);background:white;color:var(--ink);padding:9px;border-radius:5px;font-size:14px}.week-label select{display:block;margin-top:4px}.stats{display:grid;grid-template-columns:repeat(4,1fr);padding:25px 0 30px}.stat{padding:0 25px;border-right:1px solid #dcdacf}.stat:first-child{padding-left:0}.stat:last-child{border:0}.stat small{color:var(--muted);font-size:13px}.stat b{display:block;font-size:29px;font-weight:550;color:var(--main);margin-top:2px}.stat b span{font-size:16px;color:#96908f;font-weight:400}.workspace{display:grid;grid-template-columns:minmax(0,1fr) 270px;gap:26px}.content{min-width:0}.tabs{display:flex;gap:25px;border-bottom:1px solid #dcdacf;margin-bottom:21px}.tabs button{background:none;border:0;border-bottom:3px solid transparent;padding:0 0 13px;font-size:14px;color:var(--muted)}.tabs button.active{color:var(--main);border-color:var(--main);font-weight:600}.tools{display:flex;gap:10px;justify-content:space-between;margin-bottom:17px}.tools input{min-width:0;flex:1;background:transparent;border:1px solid #dcdacf;padding:9px 12px;border-radius:5px;font-size:14px}.cards{display:grid;gap:12px}.card{background:white;border:1px solid var(--line);border-radius:8px;padding:19px 22px;cursor:pointer;transition:box-shadow .2s,transform .2s}.card:hover{box-shadow:0 4px 20px #351c750b;transform:translateY(-1px)}.card-top{display:flex;align-items:center;gap:12px}.dept-icon{width:35px;height:35px;background:#f1eef8;display:grid;place-items:center;border-radius:8px;color:var(--main);font-size:13px;font-weight:700}.card-top strong{font-size:15px}.badge{margin-left:auto;font-size:12px;border-radius:4px;padding:4px 8px;white-space:nowrap;background:#f1eef8;color:var(--main)}.badge.reviewed{background:#eaf3e9;color:#37683b}.badge.awaiting{background:#f1f0eb;color:#78766e}.badge.follow{background:#fff0db;color:#9a5c08}.card h3{font-size:16px;font-weight:550;margin:14px 0 5px}.card p{font-size:14px}.card-bottom{display:flex;justify-content:space-between;align-items:center;border-top:1px solid #eeede7;margin-top:16px;padding-top:12px;color:var(--muted);font-size:12px}.decision{color:#925405;font-size:12px}.rail{background:#eae7f1;padding:24px;border-radius:9px;align-self:start;border-top:3px solid var(--accent)}.rail-heading{display:flex;justify-content:space-between;align-items:center}.rail-heading>span:last-child{font-size:11px;color:#8a809a}.rail h2{font-size:26px;line-height:1.25;letter-spacing:-.6px;color:var(--main);margin:24px 0 13px}.rail p{color:#72697e;line-height:1.65}.agenda{display:flex;gap:12px;margin-top:25px}.agenda small{color:#a38eb9;font-size:12px;padding-top:3px}.agenda strong{font-size:13px;font-weight:600;color:var(--main)}.agenda span{display:block;font-size:12px;color:#7a7087;margin-top:3px}.rail-footer{border-top:1px solid #d5cfdf;padding-top:22px;margin-top:30px;font-size:10px;letter-spacing:1px;color:#877793}.rail-footer p{font-size:14px;letter-spacing:0;line-height:1.8;margin-top:9px}footer{padding:28px 0;display:flex;justify-content:space-between;gap:20px;font-size:11px;color:#8c887e}dialog{border:0;border-radius:14px;padding:0;width:min(620px,94vw);max-height:90vh;color:var(--ink);box-shadow:0 30px 90px #1c103550}dialog::backdrop{background:#160d2d66;backdrop-filter:blur(3px)}.modal-head{padding:18px 25px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;font-size:13px;color:var(--main)}.modal-head button{border:0;background:none;font-size:20px}.modal-body,#modalBody{padding:25px}#modalBody h2{color:var(--main);font-size:26px;line-height:1.2;margin:0 0 18px}label.field{display:block;font-size:14px;margin:15px 0}label.field input,label.field textarea,label.field select{display:block;width:100%;margin-top:7px;border:1px solid #d8d4de;border-radius:6px;padding:10px;background:white}textarea{min-height:90px;resize:vertical}.form-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:23px}.secondary{background:white;border:1px solid #d8d4de;color:var(--main);padding:10px 14px;border-radius:6px;font-size:14px}.detail-section{margin:22px 0}.detail-section h4{font-size:12px;letter-spacing:1px;color:var(--muted);margin:0 0 8px}.detail-section p{font-size:16px;color:var(--ink)}.detail-section a{color:var(--main)}.note{background:white;padding:24px;border-radius:8px;border:1px solid var(--line);margin-bottom:14px}.note h3{color:var(--main);margin:0 0 12px;font-size:19px}.note li{margin:12px 0;font-size:15px}.note p{margin-bottom:15px}.action{display:flex;gap:13px;align-items:flex-start;background:white;padding:18px;border:1px solid var(--line);border-radius:8px;margin-bottom:10px}.action input{width:19px;height:19px;accent-color:var(--main);margin-top:4px}.action strong{font-size:15px;font-weight:550}.action small{display:block;color:var(--muted);font-size:13px;margin-top:5px}.action.done strong{text-decoration:line-through;color:#888}.action.done{opacity:.7}.empty{padding:35px;text-align:center;color:var(--muted)}#toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);background:var(--main);color:white;padding:13px 22px;border-radius:7px;font-size:14px;display:none;z-index:10}.inline-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px}.inline-head h3{margin:0;font-size:18px;color:var(--main)}@media(min-width:1450px){main{padding:0 60px}.workspace{grid-template-columns:minmax(0,1fr) 310px}}@media(max-width:1100px){aside{width:200px;padding:30px 14px}main{margin-left:200px;padding:0 25px}.workspace{grid-template-columns:1fr}.rail{display:none}.prototype{display:none}}@media(max-width:700px){aside{position:static;width:auto;padding:16px 20px}.brand{font-size:28px;padding:0}.brand i,.navlabel,.sidebar-bottom{display:none}nav{display:flex;overflow:auto;margin-top:15px}nav button{min-width:max-content;width:auto;padding:9px;font-size:12px}main{margin:0;padding:0 18px}header{height:55px;font-size:12px}.heading{padding:25px 0;display:block}h1{font-size:33px}.heading .primary{margin-top:20px}.meeting{display:block;padding:15px}.week-label{display:block;margin-top:14px}.week-label select{width:100%}.stats{grid-template-columns:repeat(2,1fr);gap:18px;padding:22px 0}.stat:nth-child(3){padding-left:0}.stat:nth-child(2){border:0}.tabs{gap:15px}.tabs button{font-size:12px}.card{padding:16px}.badge{font-size:10px}.card-bottom{gap:8px;flex-wrap:wrap}footer{display:block}footer span{display:block;margin-top:8px}.tools{flex-wrap:wrap}.tools input{width:100%;flex:auto}}

.library-view .meeting,.library-view .stats,.library-view .rail,.library-view .tabs{display:none}.library-view .workspace{grid-template-columns:1fr}.library-intro{display:flex;justify-content:space-between;gap:15px;padding:18px 0;border-top:1px solid var(--line);margin-bottom:12px}.library-tools{flex-wrap:wrap}.library-tools input{flex:1 1 240px}.library-tools select{flex:0 1 auto}#filecount{font-size:13px;color:var(--muted);margin:16px 0}.file-row{display:flex;align-items:center;gap:20px;padding:23px;background:white;border:1px solid var(--line);border-radius:8px;margin-bottom:12px}.file-symbol{background:#fff0db;color:#915207;border-radius:9px;width:53px;height:61px;display:grid;place-items:center;font-size:11px;font-weight:700;flex-shrink:0}.file-main{flex:1;min-width:0}.file-main h3{font-size:16px;margin:0 0 5px;color:var(--main);overflow-wrap:anywhere}.file-main p{font-size:14px}.file-links{display:flex;gap:20px;align-items:center;flex-wrap:wrap;margin-top:12px}.file-links a,.text-button{color:var(--main);font-size:14px;text-decoration:none}.text-button{border:0;background:none;padding:0;cursor:pointer;text-align:left}.text-button:hover,.file-links a:hover{text-decoration:underline}.sample-file{font-size:12px;color:var(--muted)}.file-review{display:flex;flex-direction:column;align-items:flex-end;gap:17px}.file-review .badge{margin:0}@media(max-width:700px){.library-intro{display:block}.library-intro p{margin-top:10px}.file-row{flex-wrap:wrap;gap:12px;padding:17px}.file-review{flex-direction:row;align-items:center;width:100%;justify-content:space-between}.file-main{min-width:180px}.library-tools select{width:100%}.library-view h1{font-size:30px}}

.settings-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}.demo-bar{display:flex;align-items:center;gap:20px;justify-content:space-between;background:#eae7f1}.demo-bar p{margin:5px 0 0}.demo-bar label{white-space:nowrap;font-size:14px}.connection{display:flex;justify-content:space-between;gap:12px;padding:18px 0;border-bottom:1px solid var(--line);font-size:14px}.connection span{color:var(--muted)}.connection:last-of-type{margin-bottom:20px}.member{display:flex;gap:18px;align-items:center;border-top:1px solid var(--line);padding:18px 0}.member>div{flex:1}.member p{margin:5px 0 0}.signin{text-align:center;padding:25px 10px}.signin h2{margin-top:20px!important;font-size:34px!important}.signin h2 span{color:var(--accent)}.google-button{display:flex;align-items:center;justify-content:center;gap:25px;width:100%;border:1px solid #d8d4de;background:white;border-radius:7px;padding:15px;margin:30px 0 20px}.google-button strong{color:var(--main);font-size:22px}.login-demo{margin-top:30px;background:var(--bg);padding:13px;border-radius:5px;font-size:13px;color:var(--muted)}@media(max-width:850px){.settings-grid{grid-template-columns:1fr}.demo-bar{flex-wrap:wrap}.member{flex-wrap:wrap}}

/* ------------------------------------------------------------------
   Live application additions. The prototype stylesheet above is kept
   byte-for-byte; everything below covers states the prototype did not
   have: loading, errors, sign-in, history, carried-over actions and the
   classes that replace the prototype's inline style attributes (needed
   for a strict Content-Security-Policy with no inline styles).
   ------------------------------------------------------------------ */

.card-button{width:100%;text-align:left;margin-bottom:12px}
.pre-wrap{white-space:pre-wrap}
.hidden{display:none!important}

/* Loading */
.skeleton{background:linear-gradient(90deg,#eceade 25%,#f6f5ef 37%,#eceade 63%);background-size:400% 100%;animation:shimmer 1.4s ease infinite;border-radius:8px}
@keyframes shimmer{0%{background-position:100% 50%}100%{background-position:0 50%}}
@media (prefers-reduced-motion:reduce){.skeleton{animation:none}}
.skeleton-card{height:132px;margin-bottom:12px}
.skeleton-line{height:14px;margin:10px 0}
.loading-note{font-size:13px;color:var(--muted);padding:8px 0}
.busy{opacity:.6;pointer-events:none}
button[aria-busy="true"]{opacity:.7;pointer-events:none}

/* Errors and empty states */
.banner{border-radius:8px;padding:14px 18px;font-size:14px;margin-bottom:16px;border:1px solid}
.banner-error{background:#fdecec;border-color:#f0c4c4;color:#8d2020}
.banner-warn{background:#fff4e2;border-color:#f3d6a6;color:#8a5208}
.banner-info{background:#eef0f8;border-color:#d4d7ea;color:#37406e}
.banner a,.banner button{color:inherit;font-weight:600}
.retry-button{border:0;background:none;text-decoration:underline;padding:0;margin-left:8px;cursor:pointer;font:inherit}
.field-error{display:block;color:#8d2020;font-size:13px;margin-top:6px}
input[aria-invalid="true"],textarea[aria-invalid="true"],select[aria-invalid="true"]{border-color:#c05a5a}
#toast.toast-error{background:#8d2020}
#toast.toast-success{background:#2f6236}

/* Sign-in page */
body.signin-page{display:grid;place-items:center;min-height:100vh;padding:24px}
body.signin-page main{margin:0;padding:0;width:min(440px,100%)}
.signin-card{background:white;border:1px solid var(--line);border-radius:14px;padding:40px 34px;text-align:center}
.signin-card h1{font-size:34px;margin:14px 0 8px}
.signin-card .eyebrow{display:block}
.signin-card p{margin-bottom:6px}
.signin-card .google-button{margin:28px 0 18px}
.signin-note{margin-top:26px;background:var(--bg);padding:14px;border-radius:6px;font-size:13px;color:var(--muted);text-align:left}

/* Meeting header extras */
.meeting-extra{display:flex;gap:18px;flex-wrap:wrap;font-size:12px;color:var(--muted);margin-top:8px}
.meeting-extra strong{color:var(--main);font-weight:600}
.status-pill{font-size:10px;letter-spacing:1px;border-radius:4px;padding:4px 8px;text-transform:uppercase;background:#f1eef8;color:var(--main)}
.status-pill.completed{background:#eaf3e9;color:#37683b}
.status-pill.draft{background:#f1f0eb;color:#78766e}
.agenda-block{white-space:pre-wrap;font-size:14px;color:var(--muted);margin-top:12px}
.missing-list{margin:0 0 16px;font-size:14px}

/* Files in a submission */
.file-list{list-style:none;padding:0;margin:0}
.file-list li{display:flex;gap:10px;align-items:baseline;padding:8px 0;border-bottom:1px solid #eeede7}
.file-list li:last-child{border-bottom:0}
.file-list .file-tag{font-size:10px;letter-spacing:.5px;background:#fff0db;color:#915207;border-radius:4px;padding:3px 6px;flex-shrink:0}
/* Each file entry is a bordered, numbered block so its fields read as one
   group and the boundary between files is obvious. */
.file-input-row{border:1px solid #e3e0ea;border-radius:8px;padding:14px 16px;margin-top:10px;background:#fcfbf9}
.file-row-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:2px}
.file-row-label{font-size:11px;letter-spacing:1.4px;font-weight:700;color:var(--main)}
.file-input-row .remove-file{background:none;border:0;color:#8d2020;font-size:13px;padding:2px 0}
.file-input-row .remove-file:hover{text-decoration:underline}
.file-row-grid{display:grid;grid-template-columns:1fr 150px;gap:12px}
.file-input-row label.field{margin:10px 0 0}
@media(max-width:700px){.file-row-grid{grid-template-columns:1fr;gap:0}}
.add-file{background:none;border:1px dashed #c9c5d2;color:var(--main);border-radius:6px;padding:9px;width:100%;margin-top:10px;font-size:13px}
.drive-note{font-size:12px;color:var(--muted);margin-top:10px;background:var(--bg);padding:10px 12px;border-radius:5px}

/* Actions */
.action-group-label{font-size:11px;letter-spacing:1.5px;color:var(--muted);margin:24px 0 12px;font-weight:700}
.action .meta-link{color:var(--main);font-size:12px;text-decoration:none}
.action .meta-link:hover{text-decoration:underline}
.action-admin{margin-left:auto;display:flex;gap:10px;align-items:center}
.overdue{color:#8d2020}

/* History & revisions */
.revision{border-left:2px solid var(--line);padding:0 0 14px 14px;margin-left:4px;font-size:13px;color:var(--muted)}
.revision strong{color:var(--ink);font-weight:600}
.history-row{display:flex;justify-content:space-between;align-items:center;gap:14px}

/* Settings */
.settings-note{font-size:13px;color:var(--muted)}
.readonly-value{display:block;margin-top:7px;padding:10px;border:1px solid var(--line);border-radius:6px;background:var(--bg);font-size:14px}
.role-tag{font-size:11px;letter-spacing:1px;background:#f1eef8;color:var(--main);border-radius:4px;padding:3px 7px;margin-left:8px}
.role-tag.admin{background:#ede7f8}
.member .badge.inactive{background:#f1f0eb;color:#78766e}
.danger{color:#8d2020}
.connection .not-available{color:var(--muted);font-style:normal}

/* Header account */
.header-account{display:flex;align-items:center;gap:14px}
.header-account small{font-size:12px;color:var(--muted)}
.signout{border:0;background:none;color:var(--main);font-size:13px;text-decoration:underline;padding:0}
.sidebar-bottom .avatar img{width:100%;height:100%;border-radius:50%;object-fit:cover}

/* Meeting card controls: the week selector and the Edit button sit together
   on the right, so everything that acts on the current meeting is in one
   place rather than buried in the metadata line. */
.meeting-controls{display:flex;align-items:flex-end;gap:12px}
.icon-button{display:inline-flex;align-items:center;gap:7px;white-space:nowrap;line-height:1.2;text-decoration:none}
a.icon-button:hover{text-decoration:none;background:#faf9f6}
.icon-button span{font-size:15px}
@media(max-width:700px){
  .meeting-controls{align-items:stretch;flex-direction:column;gap:10px;margin-top:14px}
  .meeting-controls .week-label{margin-top:0}
  .icon-button{justify-content:center}
}

/* Destructive confirmation */
.danger-button{background:#8d2020;color:white;border:0;border-radius:6px;padding:10px 14px;font-size:14px}
.danger-button:hover{background:#761a1a}
.destroy-list{list-style:none;padding:0;margin:14px 0}
.destroy-list li{padding:7px 0;border-bottom:1px solid #eeede7;font-size:14px}
.destroy-list li:last-child{border-bottom:0}
.destroy-list b{color:#8d2020}

/* Meeting history rows: title on the left, Edit and status on the right. The
   card is clickable, and the two buttons inside stop propagation so they act
   on their own rather than also opening the meeting. */
.history-card{cursor:pointer}
.history-card .history-row{margin-bottom:6px}
.history-actions{display:flex;align-items:center;gap:12px}
.history-actions .status-pill{margin:0}
.history-card .icon-button{padding:6px 11px;font-size:13px}
.history-card p{margin-bottom:10px}
@media(max-width:700px){
  .history-row{flex-wrap:wrap;gap:10px}
  .history-actions{width:100%;justify-content:space-between}
}

/* Overview: the meeting's three tabs consolidated on one page. It only ever
   reads state the meeting payload already carries, so it is styled as a set of
   stacked white cards rather than introducing another layout. */
.overview-card{background:white;border:1px solid var(--line);border-radius:8px;padding:24px;margin-bottom:14px}
.overview-card .inline-head{margin-bottom:14px}
.overview-card .inline-head h3{font-size:18px}
.overview-sub{font-size:13px;color:var(--muted);margin:14px 0 0}
.overview-card .inline-head+.overview-sub{margin:-4px 0 16px}
.overview-none{font-size:14px;color:var(--muted)}

/* The Gemini notes link is the thing people reach for most, so it is a target
   rather than a line of text. */
.overview-link{display:flex;align-items:center;gap:14px;text-decoration:none;color:var(--main);font-size:15px;border:1px solid #e3e0ea;border-radius:8px;padding:14px 16px;background:#fcfbf9}
.overview-link:hover{border-color:#cdc6dd;background:#f7f5fb}
.overview-link-tag{font-size:10px;letter-spacing:.5px;font-weight:700;background:#fff0db;color:#915207;border-radius:4px;padding:4px 7px;flex-shrink:0}
.overview-decisions{margin-top:20px;border-top:1px solid #eeede7;padding-top:18px}
.overview-decisions h4{font-size:11px;letter-spacing:1.3px;color:var(--muted);margin:0 0 8px;font-weight:700}
.overview-decisions p{font-size:15px;color:var(--ink)}

/* One department: its update on top, its files beneath it. */
.overview-dept{border-top:1px solid #eeede7;padding:16px 0}
.overview-dept:last-child{padding-bottom:0}
.overview-dept-head{display:flex;align-items:center;gap:13px}
.overview-dept-title{flex:1;min-width:0}
.overview-dept-title strong{display:block;font-size:15px;font-weight:600}
.overview-dept-title span{display:block;font-size:13px;color:var(--muted);margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.overview-dept .badge{margin:0}
.overview-dept .text-button{white-space:nowrap;font-size:13px}
.overview-files{list-style:none;padding:0;margin:12px 0 0 48px}
.overview-files li{display:flex;gap:10px;align-items:baseline;padding:7px 0}
.overview-files .file-tag{font-size:10px;letter-spacing:.5px;background:#fff0db;color:#915207;border-radius:4px;padding:3px 6px;flex-shrink:0}
.overview-files a{color:var(--main);font-size:14px;text-decoration:none;overflow-wrap:anywhere}
.overview-files a:hover{text-decoration:underline}
.overview-dept .overview-none{margin:10px 0 0 48px}
.overview-card .action{margin-bottom:10px;border-color:#eeede7}
.overview-card .action:last-of-type{margin-bottom:0}
.overview-card .empty{padding:22px}
@media(max-width:700px){
  .overview-card{padding:18px}
  .overview-card .inline-head{flex-wrap:wrap;gap:4px 14px}
  .overview-card .inline-head .text-button{white-space:nowrap}
  .overview-dept-head{flex-wrap:wrap;gap:10px}
  .overview-dept-title{flex-basis:100%;order:2}
  .overview-dept-title span{white-space:normal}
  .overview-dept .text-button{order:3;margin-left:auto}
  .overview-files,.overview-dept .overview-none{margin-left:0}
}
/* Four tabs no longer fit across a phone, so they scroll sideways rather than
   wrapping each label onto two lines — the same pattern the sidebar uses. */
@media(max-width:700px){
  .tabs{overflow-x:auto;gap:18px}
  .tabs button{white-space:nowrap;flex:0 0 auto}
}

/* ---- Dashboard and workspace-wide lists ---------------------------------
   The sidebar is workspace-level throughout, so these views never inherit
   the selected meeting. The hero is the only place a single meeting appears,
   and it is always the next one. */
.crumb-home{background:none;border:0;padding:0;color:inherit;font:inherit}
.crumb-home:hover{text-decoration:underline}

.dash-hero{background:white;border:1px solid var(--line);border-left:4px solid var(--main);border-radius:8px;padding:26px;margin-bottom:14px}
.dash-hero-empty{border-left-color:var(--line);text-align:center;padding:40px 26px}
.dash-hero-empty h3{margin:0 0 6px;color:var(--main)}
.dash-hero-empty p{margin:0 0 18px;color:var(--muted)}
.dash-hero-head{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;flex-wrap:wrap}
.dash-when{display:inline-block;font-size:11px;letter-spacing:1.4px;font-weight:700;color:var(--accent);margin-bottom:4px}
.dash-hero-head h3{margin:0;font-size:25px;letter-spacing:-.5px;color:var(--main)}
.dash-hero-head p{margin:4px 0 0;font-size:14px;color:var(--muted)}
.dash-hero-actions{display:flex;gap:10px;flex-wrap:wrap}

.dash-progress{margin:22px 0 14px}
.dash-progress-bar{height:6px;border-radius:3px;background:#ecebe3;overflow:hidden}
.dash-progress-bar span{display:block;height:100%;background:var(--main);border-radius:3px;transition:width .3s}
.dash-progress small{display:block;margin-top:7px;font-size:13px;color:var(--muted)}

.dash-depts{display:flex;flex-wrap:wrap;gap:8px}
.dash-dept{display:inline-flex;align-items:center;gap:7px;font-size:13px;padding:6px 12px 6px 6px;border-radius:20px;border:1px solid var(--line)}
.dash-dept b{width:24px;height:24px;border-radius:50%;display:grid;place-items:center;font-size:10px;font-weight:700}
.dash-dept.in{background:#f2f7f2;border-color:#d8e7d8;color:#2f5d33}
.dash-dept.in b{background:#2f5d33;color:white}
.dash-dept.waiting{background:#fff8ee;border-color:#f3e0c2;color:#8a5a12}
.dash-dept.waiting b{background:#f5921f;color:white}
.dash-missing{margin:16px 0 0;font-size:14px;color:#8a5a12}
.dash-all-in{margin:16px 0 0;font-size:14px;color:#2f5d33}

.dash-card{background:white;border:1px solid var(--line);border-radius:8px;padding:24px;margin-bottom:14px}
.dash-card .inline-head h3{margin:0;font-size:17px;color:var(--main)}
.dash-overdue{font-size:12px;font-weight:700;color:#8d2020;background:#fdf0f0;border-radius:12px;padding:4px 11px}
.dash-dept-counts{display:flex;flex-wrap:wrap;gap:10px}
.dash-count{display:inline-flex;align-items:center;gap:8px;font-size:13px;color:var(--muted);background:var(--bg);border-radius:6px;padding:9px 14px}
.dash-count b{font-size:17px;color:var(--main)}

.dash-recent{display:flex;align-items:center;gap:16px;width:100%;text-align:left;background:none;border:0;border-top:1px solid var(--line);padding:14px 0}
.dash-recent:first-of-type{border-top:0}
.dash-recent:hover .dash-recent-date{text-decoration:underline}
.dash-recent-date{font-weight:700;color:var(--main);font-size:14px;min-width:96px}
.dash-recent-meta{flex:1;font-size:13px;color:var(--muted)}

.list-row{display:flex;gap:20px;background:white;border:1px solid var(--line);border-radius:8px;padding:20px 23px;margin-bottom:12px}
.list-date{min-width:120px;display:flex;flex-direction:column;gap:8px;align-items:flex-start}
.list-date b{color:var(--main);font-size:15px}
.list-main{flex:1;min-width:0}
.list-main h3{font-size:15px;margin:0 0 6px;color:var(--main)}
.list-main .list-none{color:var(--muted);font-weight:400}
.list-main p{font-size:14px;margin:0}
.clamp{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}



@media(max-width:700px){
  .dash-hero,.dash-card{padding:18px}
  .dash-hero-head h3{font-size:21px}
  .dash-hero-actions{width:100%}
  .dash-hero-actions button{flex:1}
  .dash-recent{flex-wrap:wrap;gap:6px}
  .dash-recent-date{min-width:0}
  .list-row{flex-direction:column;gap:12px}
  .list-date{flex-direction:row;align-items:center;min-width:0}
}

/* Breadcrumb: a meeting sits under the section it was opened from. The
   global .hidden rule already removes the section segment when unused. */
.crumbs{display:flex;align-items:center;flex-wrap:wrap}

/* ---- Revision history --------------------------------------------------
   Read-only record of how an update changed. Every version stores a full
   snapshot, so each entry shows the wording before and after. */
details.revision{border-left:2px solid var(--line);padding:12px 0 12px 16px;margin:0 0 2px 4px;font-size:13px;color:var(--muted)}
details.revision[open]{border-left-color:var(--main);background:#fcfbf9}
details.revision summary{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;cursor:pointer;list-style:none}
details.revision summary::-webkit-details-marker{display:none}
details.revision summary::before{content:"▸";color:var(--main);font-size:11px;transition:transform .15s}
details.revision[open] summary::before{content:"▾"}
.rev-version{font-weight:700;color:var(--main)}
.rev-who{color:var(--ink)}
.rev-when{margin-left:auto;font-size:12px;white-space:nowrap}
.rev-chips{flex-basis:100%;display:flex;flex-wrap:wrap;gap:6px}
.rev-chips em{font-style:normal;font-size:11px;background:#f1eef8;color:var(--main);border-radius:4px;padding:2px 8px}
.rev-body{padding:14px 0 2px}
.rev-field{margin-bottom:16px}
.rev-field:last-child{margin-bottom:0}
.rev-field h5{margin:0 0 7px;font-size:11px;letter-spacing:1px;color:var(--muted);text-transform:uppercase}
.rev-field p{font-size:14px;color:var(--ink);margin:0 0 6px;padding:9px 12px;border-radius:6px;background:white;border:1px solid var(--line)}
.rev-field p span{display:block;font-size:10px;letter-spacing:1px;text-transform:uppercase;margin-bottom:4px;font-weight:700}
.rev-removed{background:#fdf3f3!important;border-color:#f0dada!important}
.rev-removed span{color:#8d2020}
.rev-added{background:#f3f8f3!important;border-color:#d9e7d9!important}
.rev-added span{color:#2f5d33}
.rev-empty{color:var(--muted)!important;font-style:italic}
.rev-empty span{color:var(--muted)}
.rev-none{font-size:13px;color:var(--muted)}
@media(max-width:700px){
  .rev-when{margin-left:0;flex-basis:100%}
}

/* Why a file matched, when the match was in text the row does not show. */
.match-hint{font-size:13px;color:var(--muted);background:#fff8ee;border-left:2px solid var(--accent);border-radius:0 5px 5px 0;padding:7px 11px;margin:9px 0 0}
.match-hint span{display:block;font-size:10px;letter-spacing:1px;text-transform:uppercase;color:#8a5a12;font-weight:700;margin-bottom:2px}

/* Quiet hint under an optional field, saying what it defaults to. */
.field-hint{display:block;margin-top:5px;font-size:12px;color:var(--muted);font-weight:400}

/* Editor sits between User and Admin, and reads that way. */
.role-tag.editor{background:#fff0db;color:#8a5a12}

/* Settings tab strip. Styled like the meeting tabs but under its own class:
   .tabs is hidden on workspace-level views, and Settings is one of those. */
.settings-tabs{display:flex;gap:25px;border-bottom:1px solid #dcdacf;margin-bottom:22px;flex-wrap:wrap}
.settings-tabs button{background:none;border:0;border-bottom:3px solid transparent;padding:0 0 13px;font-size:14px;color:var(--muted)}
.settings-tabs button.active{color:var(--main);border-color:var(--main);font-weight:600}
#settingsPanel:focus{outline:none}
@media(max-width:700px){.settings-tabs{gap:16px}}

/* Advisory note in a form: worth reading, never blocking. */
.hint-note{font-size:13px;color:var(--ink);background:#fff8ee;border-left:3px solid var(--accent);border-radius:0 6px 6px 0;padding:11px 14px;margin:12px 0 0;line-height:1.55}
.hint-note span{display:block;font-size:10px;letter-spacing:1px;text-transform:uppercase;color:#8a5a12;font-weight:700;margin-bottom:3px}

/* Standing documents: links that belong to the workspace, not to one week. */
.library-add{display:flex;flex-direction:column;align-items:flex-end;gap:7px;flex:0 0 auto;max-width:330px}
.library-add small{font-size:12px;color:var(--muted);text-align:right;line-height:1.5}
.reference-row{border-left:3px solid var(--accent)}
.badge.reference-badge{background:#fff0db;color:#9a5c08}
@media(max-width:700px){
  .library-add{align-items:flex-start;margin-top:14px;max-width:none}
  .library-add small{text-align:left}
}

/* Submitted, or awaiting. The review states that used to sit between them
   are gone: updates are gone through together on the call. */
.badge.submitted{background:#eaf3e9;color:#37683b}

/* Three tiles since the review count went: the grid was built for four. */
.stats{grid-template-columns:repeat(3,1fr)}
@media(max-width:700px){.stats{grid-template-columns:repeat(2,1fr)}}

/* A department's weekly has two numbers worth showing, not three. */
.stats.two-up{grid-template-columns:repeat(2,1fr)}
@media(max-width:700px){.stats.two-up{grid-template-columns:repeat(2,1fr)}}

/* A department's weekly runs its own way, so the company meeting's brief
   has no place beside it. */
.team-view .rail{display:none}
.team-view .workspace{grid-template-columns:1fr}

/* Which meeting a row belongs to, where the date alone is ambiguous. */
.list-which{display:block;font-size:12px;color:var(--muted);margin-top:4px}

/* A date field that reads day/month/year whatever the browser's locale is,
   with the browser's own calendar still one click away. */
.date-field{position:relative;display:flex;gap:8px;align-items:stretch;margin-top:7px}
.date-field .date-text{flex:1;min-width:0;border:1px solid #d8d4de;border-radius:6px;padding:10px;background:white}
.date-pick{flex:0 0 auto;border:1px solid #d8d4de;background:white;border-radius:6px;padding:0 13px;color:var(--main);font-size:16px;line-height:1}
.date-pick:hover{background:#f6f4fb}
/* Present for its calendar only: never in the tab order, never on screen. */
.date-native{position:absolute;left:12px;bottom:0;width:1px;height:1px;opacity:0;pointer-events:none;border:0;padding:0}
.date-said{min-height:17px}

/* The heading's action slot holds one button at a time — an update inside a
   meeting, a new meeting on the pages about meetings in general. */
.heading-actions{display:flex;gap:10px;align-items:center}
@media(max-width:700px){.heading-actions{margin-top:20px}}
.date-label{display:block;font-size:14px}
.date-label small{color:var(--muted)}

/* One row per department: the day it meets, the time, and an off switch. */
.schedule-table{display:grid;gap:10px;margin-top:14px}
.schedule-row{display:grid;grid-template-columns:150px repeat(3,minmax(0,1fr)) auto;gap:12px;align-items:end;background:#faf9f5;border:1px solid var(--line);border-radius:8px;padding:14px 16px}
.schedule-row>strong{font-size:15px;color:var(--main);padding-bottom:10px}
.schedule-cell{display:block;font-size:12px;color:var(--muted)}
.schedule-cell select{display:block;width:100%;margin-top:5px;border:1px solid #d8d4de;border-radius:6px;padding:8px;background:white;color:var(--ink);font-size:14px}
@media(max-width:900px){
  .schedule-row{grid-template-columns:1fr 1fr;align-items:start}
  .schedule-row>strong{grid-column:1 / -1;padding-bottom:0}
  .schedule-row>button{grid-column:1 / -1;justify-self:start}
}

/* Parked work: owed, visible, and saying what it is waiting on. */
.action.parked{border-left:3px solid #b9b4c7;background:#fbfaf7}
.parked-note{font-size:13px;color:var(--muted);background:#f3f1ee;border-radius:6px;padding:7px 11px;margin:9px 0 0}
.parked-note span{display:block;font-size:10px;letter-spacing:1px;text-transform:uppercase;color:#7a7488;font-weight:700;margin-bottom:2px}
.action-admin{display:flex;gap:14px;align-items:center;flex-wrap:wrap;justify-content:flex-end}
.elsewhere-note{margin:16px 0 0;font-size:14px}
.push-choices{display:flex;gap:10px;flex-wrap:wrap;margin:16px 0 4px}
.push-choices button{display:flex;flex-direction:column;align-items:flex-start;gap:3px;flex:1 1 140px}
.push-choices small{color:var(--muted);font-size:12px}
@media(max-width:700px){.action-admin{justify-content:flex-start;width:100%}}

/* A tick box that reads as a sentence, not a form control stranded in a
   column of text inputs. */
label.field.checkbox-field{display:flex;flex-direction:row;align-items:center;gap:10px;cursor:pointer}
label.field.checkbox-field input{width:auto;margin:0;accent-color:var(--main);height:18px}
.checkbox-field span{font-size:14px;color:var(--ink)}
/* Four choices sit as two tidy rows rather than three-and-a-stray. */
#dueChoices{margin-top:-4px}
#dueChoices button{flex:1 1 44%}

/* Who the tracker is narrowed to, where the two tabs would otherwise be. */
.owner-filter{display:flex;align-items:center;gap:12px;margin:0;padding:10px 0;font-size:14px;color:var(--muted)}
.owner-filter strong{color:var(--ink);font-weight:600}
#trackerPerson{min-width:150px}
.push-choices button.chosen{border-color:var(--main);box-shadow:inset 0 0 0 1px var(--main)}
.status-pill.past{background:#f1f0eb;color:#78766e}

/* Events: a conference, the people met at it, and what is owed. */
/* An event page is a full-width view, which hides .tabs and .stats so a
   library page is not left with a meeting's furniture. These two belong to
   the event itself, so they are put back. */
/* The panel takes focus on navigation so a screen reader lands in the new
   view; it is not tabbable, so the browser's ring on it is only noise. */
[tabindex="-1"]:focus{outline:none}
.library-view .event-tabs{display:flex}
.library-view .event-stats{display:grid}
.event-actions{display:flex;gap:10px;flex-wrap:wrap}
.event-tabs{margin:18px 0 16px}
.event-stats{grid-template-columns:repeat(4,1fr);padding:14px 0}
.event-tables{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-top:18px}
.event-table{background:white;border:1px solid var(--line);border-radius:8px;padding:16px 18px}
.event-table h4{margin:0 0 10px;font-size:12px;letter-spacing:1px;color:var(--muted);text-transform:uppercase}
.event-table table{width:100%;border-collapse:collapse;font-size:14px}
.event-table th{text-align:left;font-weight:600;color:var(--muted);font-size:12px;padding:4px 0}
.event-table td{padding:5px 0;border-top:1px solid #f0efe9}
.event-table td:not(:first-child),.event-table th:not(:first-child){text-align:right;width:70px}
.lead-row{display:flex;gap:16px;align-items:flex-start;justify-content:space-between;background:white;border:1px solid var(--line);border-radius:8px;padding:16px 18px;margin-bottom:10px;cursor:pointer}
.lead-row:hover{box-shadow:0 4px 20px #351c750b}
.lead-main{min-width:0}
.lead-main strong{font-size:15px;margin-right:8px}
.lead-main p{font-size:13px;margin-top:4px}
.lead-people{color:var(--muted)}
.lead-people em{font-style:normal;color:#8d2020}
.lead-side{display:flex;flex-direction:column;align-items:flex-end;gap:6px;font-size:13px;color:var(--muted);white-space:nowrap}
.score{font-size:10px;letter-spacing:1px;text-transform:uppercase;border-radius:4px;padding:3px 7px;font-weight:700}
.score.hot{background:#fdeae1;color:#9a3b08}
.score.warm{background:#fff0db;color:#9a5c08}
.score.cold{background:#eef1f6;color:#4a5a6a}
.detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 18px;margin:18px 0}
.detail-line{font-size:14px;overflow-wrap:anywhere}
.detail-line small{display:block;font-size:11px;letter-spacing:1px;text-transform:uppercase;color:var(--muted)}
.field-pair{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 14px}
.import-preview{background:#f3f1ee;border-radius:7px;padding:14px 16px;margin:14px 0;font-size:14px}
.import-preview p{margin:0 0 7px;color:var(--ink)}
.import-preview p:last-child{margin-bottom:0}
.import-preview em{font-style:normal;color:#8d2020}
@media(max-width:860px){.event-tables,.detail-grid,.field-pair{grid-template-columns:1fr}
.event-stats{grid-template-columns:repeat(2,1fr)}
.lead-row{flex-direction:column;gap:10px}
.lead-side{align-items:flex-start;flex-direction:row;flex-wrap:wrap;gap:12px}}
.people-field{border:1px solid #d8d4de;border-radius:6px;padding:12px 14px;margin:15px 0}
.people-field legend{font-size:14px;padding:0 6px}
.people-field legend small{color:var(--muted)}
.person-check{display:flex;align-items:center;gap:9px;padding:5px 0;font-size:14px;cursor:pointer}
.person-check input{width:17px;height:17px;accent-color:var(--main);margin:0}

/* The calendar, drawn rather than requested: the browser's own picker is
   supported unevenly and fails silently, which reads as a dead button. */
.calendar{position:absolute;top:calc(100% + 6px);right:0;z-index:5;width:266px;background:white;border:1px solid var(--line);border-radius:9px;box-shadow:0 12px 40px #1c103526;padding:12px}
.calendar-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}
.calendar-head strong{font-size:14px;color:var(--main)}
.calendar-step{border:1px solid var(--line);background:white;border-radius:5px;width:28px;height:28px;color:var(--main);font-size:16px;line-height:1}
.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}
.calendar-dow{font-size:11px;color:var(--muted);text-align:center;padding:4px 0}
.calendar-day{border:0;background:none;border-radius:5px;padding:6px 0;font-size:13px;color:var(--ink)}
.calendar-day:hover{background:#f1eef8}
.calendar-day.today{box-shadow:inset 0 0 0 1px var(--accent)}
.calendar-day.chosen{background:var(--main);color:white}
.calendar-foot{display:flex;justify-content:space-between;margin-top:10px;padding-top:9px;border-top:1px solid #f0efe9}
@media(max-width:700px){.calendar{right:auto;left:0;width:min(290px,calc(100vw - 60px))}}
/* Above the field when the dialog has no room below it. */
.calendar.above{top:auto;bottom:calc(100% + 6px)}

/* Pick people by typing: chips above, matches below. */
.people-picker{position:relative}
.chips{display:flex;flex-wrap:wrap;gap:7px;margin:7px 0 0}
.chips:empty{margin:0}
.chip{display:inline-flex;align-items:center;gap:7px;background:#f1eef8;color:var(--main);border-radius:20px;padding:5px 7px 5px 13px;font-size:13px}
.chip-x{border:0;background:#dfd7ef;color:var(--main);width:19px;height:19px;border-radius:50%;line-height:1;font-size:14px;padding:0}
.chip-x:hover{background:#cfc2e6}
.picker-input{display:block;width:100%;margin-top:7px;border:1px solid #d8d4de;border-radius:6px;padding:10px;background:white;font-size:14px}
.picker-list{position:absolute;z-index:6;left:0;right:0;top:100%;margin:4px 0 0;padding:4px;list-style:none;background:white;border:1px solid var(--line);border-radius:8px;box-shadow:0 12px 40px #1c103526;max-height:210px;overflow:auto}
.picker-option{padding:9px 11px;border-radius:5px;font-size:14px;cursor:pointer}
.picker-option.active,.picker-option:hover{background:#f1eef8;color:var(--main)}
.picker-empty{padding:9px 11px;font-size:13px;color:var(--muted)}
.picker-list.above{top:auto;bottom:100%;margin:0 0 4px}

/* Park, Push and Edit as pills rather than coloured words: tinted text on
   white reads as a link someone has already visited, and the whole point
   was to tell the two apart at a glance. Amber for work moved to a date,
   slate for work waiting on somebody — the colours of the groups each one
   sends work to — and the workspace purple for Edit. */
/* The same visual language as the badges beside them: a tinted fill, dark
   text, 4px corners. A row that carries HOT and New as filled chips should
   not also carry three outlined ones — the page ends up with two systems
   for the same size of thing. Push takes the amber the warm badge uses and
   Edit the purple of the plain badge, so the colours are the ones already
   in the workspace rather than a new set. */
.row-button{border:0;border-radius:4px;padding:5px 10px;font-size:12px;font-weight:600;line-height:1.4;cursor:pointer;white-space:nowrap}
.park-button{background:#eceaf0;color:#443e52}
.push-button{background:#fff0db;color:#9a5c08}
.edit-button{background:#f1eef8;color:var(--main)}
.row-button:hover{filter:brightness(0.96)}

/* An event's own logo, where its initials would be. */
.event-mark{padding:0;overflow:hidden;background:white;border:1px solid var(--line)}
.event-mark img{width:100%;height:100%;object-fit:contain;display:block}
.event-headline{display:flex;align-items:center;gap:13px;min-width:0}
.event-headline p{margin:0}
.logo-field{margin:15px 0}
.logo-row{display:flex;align-items:center;gap:14px;margin-top:8px;flex-wrap:wrap}
.logo-preview{width:52px;height:52px;flex:0 0 auto;font-size:15px;overflow:hidden;background:#f1eef8}
.logo-preview img{width:100%;height:100%;object-fit:contain;display:block;background:white}
.logo-row input[type="file"]{font-size:13px;max-width:100%}
.logo-row p{margin-top:5px}
/* A logo needs more room than two letters do, and a card full of events
   should have one size of tile whether or not each has a picture. */
.event-icon{width:44px;height:44px;font-size:14px}
.over-budget{color:#8d2020}
.company-switch{display:block;margin:18px 14px 0;font-size:11px;letter-spacing:1px;color:#d7cbe8}.company-switch select{display:block;width:100%;margin-top:6px}.department-picks{border:1px solid var(--line);border-radius:6px;padding:10px 12px}.department-picks legend{padding:0 4px;font-size:14px}.department-picks label{display:block;font-size:14px;margin:4px 0}.platform-page{max-width:720px;margin:0 auto;padding:40px 18px}
@media(max-width:700px){.company-switch{margin:12px 0 0}}
