:root{font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#18223b;background:#f4f6fb;font-size:16px;line-height:1.5;--navy:#152346;--blue:#343ad0;--muted:#637089;--line:#dce2ee;--soft:#edf0ff}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button,a{touch-action:manipulation}button{cursor:pointer;border:1px solid var(--line);background:#fff;border-radius:9px;padding:10px 17px;font-weight:600;color:inherit;transition:background .15s,transform .15s}button:hover{background:#eef0ff}button:active{transform:translateY(1px)}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #f7b544;outline-offset:3px}button:disabled{cursor:not-allowed;opacity:.48}a{color:var(--blue)}.primary{background:var(--blue);border-color:var(--blue);color:#fff}.primary:hover{background:#252ab4}.quiet{background:transparent;border:0}.small{font-size:.875rem;padding:7px 11px}.loading{padding:60px}.shell{display:grid;grid-template-columns:230px 1fr;min-height:100vh}.sidebar{background:var(--navy);color:#e7ecff;padding:33px 24px;display:flex;flex-direction:column;gap:38px}.brand{display:flex;align-items:center;gap:10px;font-weight:750;font-size:1.55rem;letter-spacing:-.04em}.brand img{width:34px}.brand em{font-style:normal;font-size:.65rem;letter-spacing:.07em;background:#2d3a5c;border-radius:5px;padding:3px 5px;color:#ccd5ee}.sidebar p{font-size:.875rem;color:#aebbd6}.nav{display:grid;gap:8px}.nav button{color:#b9c6e5;background:transparent;border:0;text-align:left;padding:13px 14px}.nav button.active{color:white;background:#303e65}.nav span{display:inline-flex;width:25px;color:#a4b5f4}.sidebar-foot{margin-top:auto;border-top:1px solid #35405b;padding-top:18px}.sidebar-foot strong{font-size:.875rem}.sidebar-foot p{font-size:.8125rem}.main{padding:30px 40px;min-width:0;max-width:1600px}.topbar{display:flex;justify-content:space-between;align-items:center;gap:20px;border-bottom:1px solid var(--line);padding-bottom:23px}.crumb{font-size:.875rem;color:var(--muted)}.actions{display:flex;gap:9px;align-items:center;flex-wrap:wrap}.eyebrow{font-size:.75rem;letter-spacing:.12em;text-transform:uppercase;color:var(--blue);font-weight:700;margin-bottom:8px}.heading{margin:29px 0 24px;display:flex;align-items:flex-end;justify-content:space-between;gap:20px}h1{font-size:2rem;line-height:1.2;letter-spacing:-.04em;margin:0 0 8px}h2{font-size:1.25rem;letter-spacing:-.02em;margin:0 0 6px}h3{font-size:1rem;margin:0 0 8px}p{margin:7px 0;color:var(--muted)}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin:24px 0}.stat{background:#fff;border:1px solid var(--line);padding:20px 24px;border-radius:12px}.stat>span{font-size:.875rem;color:var(--muted)}.stat strong{display:block;font-size:2rem;line-height:1.3;margin-top:8px;letter-spacing:-.04em}.stat small{font-size:.8125rem;color:var(--muted)}.work-grid{display:grid;grid-template-columns:212px minmax(0,1fr);gap:22px}.panel{border:1px solid var(--line);border-radius:12px;background:#fff;overflow:hidden}.panel-head{padding:22px 24px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;gap:15px}.panel-head p{font-size:.875rem}.groups{padding:15px 10px;align-self:start}.groups h3{padding:0 12px;color:var(--muted);font-size:.75rem;text-transform:uppercase;letter-spacing:.1em}.group-btn{display:flex;align-items:center;gap:12px;width:100%;border:0;text-align:left;padding:13px 10px;margin-top:5px;font-weight:500}.group-btn.active{background:var(--soft);color:var(--blue)}.group-icon{width:37px;height:37px;background:#f1f3f8;display:grid;place-items:center;border-radius:9px;font-weight:700;font-size:.875rem}.active .group-icon{background:var(--blue);color:white}.group-btn small{display:block;color:var(--muted);font-size:.75rem}.tag{font-size:.75rem;border-radius:6px;padding:5px 9px;background:#edf0fa;color:#51607f;white-space:nowrap}.tag.blue{background:#e7ebff;color:#3338b7}.tag.green{background:#e4f4ee;color:#217759}.tag.orange{background:#fff1d9;color:#986018}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;text-align:left;white-space:nowrap}th{background:#f8f9fc;color:#5f6d85;font-size:.8125rem;font-weight:600;padding:15px 18px;border-bottom:1px solid var(--line)}td{padding:19px 18px;border-bottom:1px solid #edf0f6;font-size:.9375rem}tr:last-child td{border-bottom:0}td.total,th.total{background:#f4f5ff;color:#2a31a7;font-weight:750}.person{display:flex;align-items:center;gap:11px}.avatar{display:grid;place-items:center;flex:none;background:#e9edfa;color:#53618c;width:34px;height:34px;border-radius:50%;font-size:.75rem;font-weight:700}.person strong{font-size:.9375rem;display:block}.person small{font-size:.75rem;color:var(--muted)}th button{background:none;padding:0;border:0;color:var(--blue);text-align:left}.note{padding:17px 24px;background:#fafbfe;color:var(--muted);font-size:.8125rem;border-top:1px solid var(--line)}.empty{padding:50px 30px;text-align:center}.empty p{max-width:520px;margin:10px auto 20px}.empty .symbol{background:var(--soft);color:var(--blue);font-size:2rem;border-radius:16px;width:64px;height:64px;display:grid;place-items:center;margin:0 auto 20px}.form{display:grid;gap:18px}.form label{font-size:.875rem;font-weight:600;display:grid;gap:6px}input,select{width:100%;border:1px solid #cdd5e5;background:white;color:#18223b;padding:11px 12px;border-radius:8px}input[type=file]{font-size:.875rem}.help{font-size:.8125rem;color:var(--muted);font-weight:400}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.error{color:#b32846!important;font-size:.875rem;min-height:1.3em}.login{max-width:440px;margin:12vh auto;padding:35px;background:#fff;border:1px solid var(--line);border-radius:16px}.login .brand{margin-bottom:30px}.login h1{font-size:1.65rem}.login .form{margin-top:25px}dialog{border:0;border-radius:16px;padding:0;max-width:calc(100vw - 32px);width:650px;box-shadow:0 30px 90px #13224c44;color:#18223b}dialog::backdrop{background:#111c3b66;backdrop-filter:blur(3px)}.modal-head{padding:24px 28px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.modal-body{padding:25px 28px}.modal-foot{display:flex;justify-content:flex-end;gap:10px;padding:18px 28px;background:#f7f8fc;border-top:1px solid var(--line)}.wide{width:950px}.matrix td,.matrix th{text-align:center;padding:15px}.matrix td:first-child,.matrix th:first-child{text-align:left}.matrix .diagonal{background:#f1f2fc}.matrix .muted{color:#a0a9ba}.matrix tfoot{border-top:2px solid var(--line);font-weight:700}.matrix tfoot td{background:#f2f4fc}.legend{display:flex;gap:20px;font-size:.8125rem;color:var(--muted);padding-top:16px}.list{padding:0 24px}.outbox-item{padding:22px 0;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;gap:18px}.outbox-item:last-child{border:0}.outbox-item p{font-size:.875rem}.mail-body{white-space:pre-wrap;font-family:inherit;font-size:.9375rem;color:#35445e;overflow-wrap:anywhere;background:#f7f8fc;border-radius:10px;padding:20px}.schedule-box{padding:28px;max-width:780px;margin-inline:auto}.timeline-item{display:flex;gap:18px;padding:18px 0;border-bottom:1px solid var(--line)}.round-number{font-size:1.1rem;color:var(--blue);background:var(--soft);border-radius:8px;width:40px;height:40px;display:grid;place-items:center;flex:none}.member-shell{max-width:920px;margin:auto;padding:30px 30px 70px}.member-top{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line);padding-bottom:23px}.member-title{margin:40px 0 26px}.member-title h1{font-size:2.35rem}.member-layout{display:grid;grid-template-columns:1fr 250px;gap:24px}.rank-main{padding:25px}.rank-person{display:flex;align-items:center;gap:14px;padding:18px 0;border-bottom:1px solid var(--line)}.rank-person:last-child{border:0}.rank-person .person{flex:1}.rank-person select{width:82px;font-weight:700;text-align:center}.rank-person.over{background:#ecefff}.rank-person .avatar{width:42px;height:42px;font-size:.875rem}.rank-panel{padding:25px;align-self:start}.rank-cards{display:flex;gap:9px;flex-wrap:wrap;margin-top:22px}.rank-card{width:47px;height:54px;padding:0;display:grid;place-items:center;border:1px solid #c5cbef;background:#eff0ff;color:#343ad0;border-radius:10px;font-size:1.5rem;font-weight:700;cursor:grab}.rank-card.used{background:#f5f6f9;color:#aeb7c7;border-color:#e0e5ef}.rank-card.selected{outline:3px solid #efad3c}.rank-steps{font-size:.875rem;padding-left:20px;color:var(--muted)}.rank-steps li{margin:13px 0}.rank-actions{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:25px}.progress-track{height:6px;border-radius:6px;overflow:hidden;background:#e7ebf3;margin:20px 0 8px}.progress-fill{background:var(--blue);height:100%;width:0}.success-band{padding:18px 23px;background:#e7f5ee;color:#216f53;border:1px solid #cce8dc;border-radius:10px;margin-bottom:20px}.success-band p{color:#437564;font-size:.875rem}.deadline{font-size:.875rem;color:var(--muted)}#toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);padding:14px 22px;border-radius:10px;background:#172342;color:#fff;box-shadow:0 10px 30px #13224c33;display:none;max-width:90vw;z-index:10}.hidden{display:none!important}.footer-hint{margin-top:23px;font-size:.8125rem;color:var(--muted)}@media(min-width:1500px){.main{padding:35px 60px}}@media(max-width:1050px){.shell{grid-template-columns:185px 1fr}.sidebar{padding:28px 18px}.main{padding:25px}.work-grid{grid-template-columns:160px minmax(0,1fr)}.brand{font-size:1.35rem}.stats{gap:10px}.stat{padding:18px}.panel-head{padding:20px}}@media(max-width:760px){.shell{display:block}.sidebar{padding:17px 20px;gap:18px}.sidebar .brand{font-size:1.4rem}.sidebar-foot{display:none}.nav{display:flex;gap:5px;flex-wrap:wrap}.nav button{padding:8px 12px;font-size:.875rem}.main{padding:22px 16px}.topbar{align-items:flex-start}.crumb{display:none}.actions{width:100%;justify-content:flex-end}.heading{margin-top:24px}h1{font-size:1.7rem}.heading p{font-size:.875rem}.stats{grid-template-columns:repeat(3,minmax(0,1fr))}.stat{padding:14px 10px}.stat>span,.stat small{font-size:.75rem}.stat strong{font-size:1.65rem}.work-grid{display:block}.groups{display:flex;gap:6px;overflow:auto;padding:8px;margin-bottom:16px}.groups h3{display:none}.group-btn{width:auto;min-width:125px;margin:0;padding:8px;gap:8px}.group-icon{width:29px;height:29px}.group-btn small{font-size:.7rem}.panel-head{padding:18px 16px}.panel-head p{font-size:.8125rem}.note{padding:15px 16px}.member-shell{padding:23px 16px 45px}.member-layout{display:flex;flex-direction:column-reverse}.member-title{margin:30px 0 20px}.member-title h1{font-size:1.85rem}.rank-panel{width:100%;padding:18px}.rank-cards{margin-top:12px}.rank-main{padding:18px}.rank-actions{flex-wrap:wrap}.form-grid{grid-template-columns:1fr}.login{margin:8vh 16px;padding:25px}.modal-body,.modal-head{padding:20px}.outbox-item{align-items:flex-start}.list{padding:0 16px}.member-top .brand em{display:none}.deadline{font-size:.8125rem}}

/* Accepted S3 slate design and M3 group board. */
:root{color:#f1f5fc;background:#101722;--navy:#131c2b;--blue:#b8a1ff;--muted:#aab8cf;--line:#354258;--soft:#30334f}button,input,select,.panel,.stat,.login,dialog{background:#1b2637;color:#f1f5fc}button:hover{background:#303e55}.primary,.primary:hover{background:#b8a1ff;color:#18152a;border-color:#b8a1ff}.sidebar{background:#131c2b}.nav button.active{background:#34304b}.tag,.tag.blue{background:#37364f;color:#d7cbff}.tag.orange{background:#4d3827;color:#ffd495}.tag.green{background:#193e37;color:#a7f0d6}th,.note,.modal-foot,.mail-body,.matrix tfoot td{background:#172131;color:#b8c6db}td{border-color:var(--line)}td.total,th.total,.matrix .diagonal{background:#302d48;color:#ded1ff}.avatar,.group-icon{background:#323955;color:#d9def9}.success-band{background:#173c34;color:#b7f3d5;border-color:#315e4d}.success-band p{color:#b7dacb}.error{color:#ff9eb1!important}.group-board{display:flex;gap:16px;margin:22px 0;overflow-x:auto;padding:5px 5px 14px;scroll-padding:5px;scrollbar-width:thin;scrollbar-color:var(--muted) transparent}.group-tile{flex:0 0 240px;max-width:85%;text-align:left;display:flex;flex-direction:column;gap:12px;padding:22px;border-radius:16px}.group-tile.active{border-color:var(--blue)}.tile-top{display:flex;align-items:center;gap:12px}.group-tile small{color:var(--muted)}.tile-link{color:var(--blue);font-size:.85rem}.work-grid{display:block}.groups{display:none}progress{width:100%;height:8px;border:0;border-radius:8px;background:#38425c;accent-color:var(--blue)}progress::-webkit-progress-bar{background:#38425c;border-radius:8px}progress::-webkit-progress-value{background:var(--blue);border-radius:8px}.member-shell{max-width:1080px}.member-layout{grid-template-columns:245px minmax(0,1fr)}.rank-card{background:#b8a1ff;color:#19162a;border:0;width:54px;height:58px}.rank-card:hover{background:#cabcff}.rank-cards{min-height:75px;padding-bottom:15px}.rank-slot{border:2px dashed #8392aa;border-radius:13px;min-width:104px;min-height:80px;padding:6px;display:flex;align-items:center;justify-content:center;gap:5px}.rank-slot.filled{border-style:solid;border-color:#555070}.target-button{border:0;background:transparent;font-size:.7rem;padding:7px;color:#c5cfe0}.rank-slot.over{background:#4a426d;outline:3px solid #d2c0ff}.rank-person{gap:10px}.rank-person .rank-card{flex:none}.rank-person .person{min-width:0}.rank-person .person strong{overflow-wrap:anywhere}.rank-slot.filled .target-button{max-width:48px}.rank-card.selected{outline:3px solid #ffd288;outline-offset:3px}#returnCard{width:100%}.rank-actions{gap:8px}.rank-actions button{font-size:.85rem}@media(max-width:760px){.member-layout{display:flex;flex-direction:column}.rank-panel{width:100%}.rank-cards{min-height:50px;margin:12px 0}.rank-slot{min-width:99px}.rank-person .avatar{display:none}.rank-person .tag{font-size:.65rem}.member-title h1{font-size:1.8rem}}@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}

.rank-card{touch-action:none;user-select:none}.rank-card.dragging{opacity:.65;outline:3px solid #ffd288;cursor:grabbing}
.project-toolbar{display:flex;align-items:end;gap:16px;flex-wrap:wrap;margin:8px 0 28px;padding:18px;border:1px solid #394761;border-radius:14px;background:#1b273b}.project-toolbar label{display:grid;gap:7px;flex:1;min-width:180px}.project-toolbar select{width:100%;padding:11px 44px 11px 12px;border-radius:8px;background:#101827 url("/static/chevron-down.svg") no-repeat right 16px center;background-size:16px;color:#edf2fa;border:1px solid #596683;appearance:none}

/* Accepted student practice and score context. */
.practice-entry{margin-top:10px}.practice-banner{padding:18px;border:1px solid var(--blue);border-radius:12px;margin-bottom:24px;background:#302d48;display:flex;gap:16px;justify-content:space-between;align-items:center}.practice-banner p{margin:5px 0;font-size:.85rem}.practice-banner .actions{flex-wrap:wrap}.score-summary{padding:20px;display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px}.score-summary article{padding:14px;border:1px solid var(--line);border-radius:10px}.score-summary article p{font-size:.8rem}.score-summary article b{display:block;color:#ded1ff}.score-summary>.help{grid-column:1/-1;margin:0}.date-detail{font-size:.85rem;margin-top:8px}.date-detail summary{cursor:pointer;color:var(--blue)}.date-detail p{white-space:normal;overflow-wrap:anywhere}.timeline-item>div{min-width:0;flex:1}.timeline-item>.tag{align-self:flex-start}.member-top{flex-wrap:wrap;gap:12px}
@media(max-width:760px){.rank-panel{position:sticky;top:0;z-index:4;padding:10px 14px;box-shadow:0 5px 18px #0005}.rank-panel h2{font-size:.9rem;display:inline}.rank-panel #poolCount{display:inline;margin-left:10px}.rank-panel .rank-cards{min-height:0;margin:8px 0 5px;padding:0;gap:8px}.rank-panel .rank-card{width:44px;height:44px;font-size:1.2rem}.rank-panel #returnCard{padding:5px;font-size:.75rem}.rank-person{scroll-margin-top:190px}.practice-banner{align-items:flex-start;flex-direction:column}.practice-banner .actions{justify-content:flex-start;width:auto}.score-summary{grid-template-columns:1fr}.member-top>.tag{white-space:normal}.member-shell{padding-top:15px}}

/* Keep large ballots usable without changing the card interaction. */
.rank-person[hidden]{display:none}.rank-panel{position:sticky;top:16px;align-self:start;max-height:calc(100vh - 32px);overflow:auto}.rank-cards{max-height:45vh;overflow:auto}.table-wrap{overflow:auto;max-height:70vh}

@media(max-width:760px){.rank-panel{position:static;top:0;max-height:none;overflow:visible}.rank-cards{max-height:20vh}}

/* Workspace header and centered project navigation. */
.shell{display:block}
.main{width:100%;margin:0 auto}
.workspace-header{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:24px}
.workspace-header #logout{flex-shrink:0}
.topbar{border-bottom:0}
.crumb{min-width:0;flex:1;text-align:left}
.crumb span{display:inline-block}
.import-actions{display:flex;align-items:center;gap:9px;flex-shrink:0}
.project-toolbar{margin-bottom:14px}
.project-tabs{display:flex;justify-content:center;gap:24px;margin:0 0 26px;border-bottom:1px solid var(--line)}
.project-tabs button{position:relative;padding:13px 8px;border:0;border-radius:0;background:transparent;color:var(--muted);text-align:center;transform:none}
.project-tabs button:hover,.project-tabs button.active{color:var(--blue)}
.project-tabs button.active::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:3px;background:var(--blue)}
@media(max-width:760px){
 .workspace-header{margin-bottom:16px;gap:10px}
 .workspace-header .brand{font-size:1.2rem;gap:6px}
 .workspace-header .brand img{width:28px}
 .workspace-header .brand em{font-size:.55rem}
 .topbar{flex-direction:row;align-items:center;gap:10px}
 .crumb{display:block;overflow-wrap:anywhere}
 .crumb span{display:block}
 .import-actions{gap:6px}
 .import-actions .small{padding:6px 0}
 .import-actions button{padding:9px 10px}
 .import-actions a,.import-actions button{font-size:.75rem}
 .import-actions a{max-width:46px}
 .import-actions button{white-space:nowrap}
 .project-tabs{gap:16px}
 .project-tabs button{font-size:.875rem;padding:12px 6px}
}

@media(max-width:380px){.crumb{font-size:.75rem}.import-actions button{padding:9px 7px}}

.performance-heading{display:block}
.performance-title{display:flex;align-items:center;justify-content:space-between;gap:16px}
.performance-title h1{min-width:0}
.round-controls{display:flex;align-items:center;gap:8px;flex-shrink:0}
.round-toggle{display:grid;place-items:center;width:38px;height:38px;padding:8px}
.performance-heading>p{margin-top:10px}
@media(max-width:760px){.performance-title{gap:10px}.performance-title h1{font-size:1.4rem}.round-controls{gap:6px}.round-controls .primary{max-width:92px;padding:7px 10px;font-size:.75rem}}

.group-schedule-actions{display:flex;justify-content:flex-end;gap:10px;flex-wrap:wrap}

.project-picker{position:relative;display:grid;gap:7px;flex:1;min-width:180px}
#projectSelect{width:100%;padding:11px 44px 11px 12px;text-align:left;font-weight:400;border-radius:8px;background:#101827 url("/static/chevron-down.svg") no-repeat right 16px center;background-size:16px;color:#edf2fa;border:1px solid #596683}
#selectedProjectName{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#projectMenu{position:absolute;top:100%;left:0;right:0;z-index:8;max-height:320px;overflow:auto;margin-top:5px;padding:5px;background:#1b2637;border:1px solid #596683;border-radius:10px;box-shadow:0 12px 30px #0006}
#projectMenu[hidden]{display:none}
.project-option{display:flex;align-items:center;gap:4px;border-radius:6px}
.project-option.selected{background:#34304b}
.project-option button{border:0;background:transparent;border-radius:6px}
.project-option button:hover{background:#3b4660}
.project-option [data-select-project]{flex:1;min-width:0;text-align:left;font-weight:400;overflow-wrap:anywhere}
.project-option .project-delete{flex:0 0 38px;height:38px;padding:0;font-size:1.5rem;color:#ffb5bf}
.danger{background:#a62c45;border-color:#c3435b;color:#fff}.danger:hover{background:#bd3651}

.invitation-dialog .modal-head{position:relative;display:grid;grid-template-columns:38px minmax(0,1fr) 38px;gap:12px;padding:24px 28px}
.invitation-dialog .mail-title{display:flex;justify-content:center;align-items:center;gap:8px;min-width:0;margin:0;font-size:1.2rem}
.mail-project{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mail-round{flex-shrink:0;white-space:nowrap}
.mail-arrow{width:38px;height:38px;padding:0;font-size:1.3rem}
.outbox-item>div{min-width:0;overflow-wrap:anywhere}
.outbox-item>[data-member-mail]{flex-shrink:0}
@media(max-width:760px){.invitation-dialog .modal-head{padding:20px 16px;gap:8px}.invitation-dialog .mail-title{font-size:1rem;gap:6px}}

/* Keep the card-to-button gap identical across viewport sizes. */
.rank-panel .rank-cards{min-height:0;margin-bottom:15px;padding-bottom:0}

.clerk-login{max-width:480px}.clerk-login #clerkSignIn{margin:24px 0;display:flex;flex-direction:column;align-items:center}.clerk-login .brand{justify-content:center}
