:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;--ink:#2b202b;--muted:#806f7c;--line:#ead6df;--paper:#fffafc;--rose:#bd5f80;--rose-dark:#74445f;--rose-soft:#f8e2e8;--nav:#29202e;--page:#f7eeee;--surface:#fffdfc;--surface-soft:#fff5f5;--gold:#d59a6d;--mist:#8e91ad}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}}*{box-sizing:border-box}html,body{background:var(--page);min-height:100%;color:var(--ink);margin:0}body{font-family:Arial,Noto Sans TC,Microsoft JhengHei,sans-serif}button,input,select{font:inherit}button{cursor:pointer}.app-shell{background:radial-gradient(circle at 82% 0,#fff5f1 0,#0000 30%),linear-gradient(145deg,#f9f0f0,#f2edf4);grid-template-columns:238px minmax(0,1fr);min-height:100vh;display:grid}.sidebar{color:#fceef5;background:linear-gradient(#312332 0%,#241b29 58%,#18151e 100%);border-right:1px solid #574154;flex-direction:column;height:100vh;padding:30px 18px 22px;display:flex;position:sticky;top:0}.brand{align-items:center;gap:12px;padding:0 9px 31px;display:flex}.brand-mark{color:#fff;background:linear-gradient(145deg,#d8918d,#855573 58%,#4a4565);border:1px solid #efb6b3;border-radius:14px;place-items:center;width:42px;height:42px;font-family:serif;font-size:22px;display:grid;box-shadow:0 8px 24px #0006}.brand strong{letter-spacing:.16em;font-family:serif;font-size:19px;display:block}.brand span{color:#cba7b8;letter-spacing:.1em;margin-top:4px;font-size:11px;display:block}.main-nav{flex-direction:column;gap:7px;display:flex}.main-nav button{color:#cdb8c3;text-align:left;background:0 0;border:1px solid #0000;border-radius:11px;align-items:center;gap:13px;width:100%;padding:12px 13px;transition:all .18s;display:flex}.main-nav button span{color:#dca0ba;background:#3a2031;border-radius:8px;place-items:center;width:27px;height:27px;font-size:12px;font-weight:800;display:grid}.main-nav button:hover{color:#fff;background:#ffffff08}.main-nav button.active{color:#fff;background:linear-gradient(90deg,#5a2942,#3a1f31);border-color:#6c304d;box-shadow:0 8px 25px #0002}.main-nav button.active span{color:#501027;background:#f2a8c6}.sidebar-foot{background:#ffffff07;border:1px solid #4b3040;border-radius:12px;margin-top:auto;padding:17px 14px}.bot-dot{align-items:center;gap:8px;font-size:12px;font-weight:700;display:flex}.bot-dot i,.sync-stamp i,.status-active i{background:#77616c;border-radius:50%;width:8px;height:8px;display:inline-block}.bot-dot i.online,.sync-stamp i,.status-active i{background:#41d39a;box-shadow:0 0 0 4px #41d39a18}.sidebar-foot small{color:#9e8491;margin:7px 0 0 16px;font-size:10px;display:block}.workspace{min-width:0}.topbar{border-bottom:1px solid var(--line);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:#fffaf9dc;justify-content:space-between;align-items:center;gap:24px;min-height:92px;padding:21px 30px;display:flex}.topbar p{color:var(--muted);margin:0 0 5px;font-size:11px}.topbar h1{letter-spacing:.04em;margin:0;font-family:serif;font-size:25px}.top-actions{align-items:center;gap:10px;display:flex}.primary-button,.ghost-button{border-radius:9px;min-height:38px;padding:0 15px;font-size:12px;font-weight:800}.primary-button{color:#fff;background:linear-gradient(#c8788d,#9a5372 58%,#654965);border:1px solid #8e506c;box-shadow:0 7px 18px #83506c32}.primary-button:hover{filter:brightness(1.06)}.ghost-button{border:1px solid var(--line);color:#5c3d4c;background:#fff}.preview-badge{color:#8c5b00;background:#fff1c7;border-radius:99px;padding:7px 10px;font-size:11px;font-weight:800}.profile{border-left:1px solid var(--line);align-items:center;gap:9px;margin-left:5px;padding-left:14px;display:flex}.profile>span{color:#7d234d;background:#f2c6d8;border-radius:50%;place-items:center;width:36px;height:36px;font-weight:900;display:grid}.profile b,.profile small{text-overflow:ellipsis;white-space:nowrap;max-width:110px;display:block;overflow:hidden}.profile b{font-size:11px}.profile small{color:#9b8994;margin-top:3px;font-size:9px}.logout-button{color:#8d6b7d;background:0 0;border:0;height:34px;padding:0 10px;font-size:9px;font-weight:800}.logout-button:hover{color:var(--rose)}.content{max-width:1460px;margin:0 auto;padding:26px 30px 46px}.toast{z-index:50;color:#176440;background:#effbf5;border:1px solid #9fd8bd;border-radius:10px;padding:12px 16px;font-size:12px;font-weight:700;position:fixed;top:105px;right:30px;box-shadow:0 16px 35px #3d17272a}.loading{color:#866b78;align-content:center;place-items:center;gap:12px;min-height:60vh;display:grid}.loading span{border:3px solid #f2cfde;border-top-color:#c73570;border-radius:50%;width:32px;height:32px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.welcome-row{justify-content:space-between;align-items:flex-end;gap:20px;margin:3px 0 22px;display:flex}.eyebrow{letter-spacing:.22em;font-weight:900;color:#ba3d70!important;margin:0 0 7px!important;font-size:9px!important}.welcome-row h2{margin:0;font-family:serif;font-size:25px}.welcome-row p{color:var(--muted);margin:7px 0 0;font-size:12px}.sync-stamp{color:#9a8792;padding-left:19px;font-size:10px;line-height:1.5;position:relative}.sync-stamp i{position:absolute;top:4px;left:0}.sync-stamp b{color:#55414b;font-size:11px}.stats-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:17px;display:grid}.stat-card{border:1px solid var(--line);background:#fff;border-radius:14px;align-items:center;gap:15px;padding:18px;display:flex;box-shadow:0 7px 22px #4b22320b}.stat-icon{border-radius:12px;flex:none;place-items:center;width:42px;height:42px;font-size:12px;font-weight:900;display:grid}.stat-card span,.stat-card small,.stat-card strong{display:block}.stat-card span{color:var(--muted);font-size:10px}.stat-card strong{margin:3px 0;font-family:serif;font-size:24px}.stat-card small{color:#a28e99;font-size:9px}.stat-card.rose .stat-icon{color:#9e2d59;background:#fde5ef}.stat-card.blue .stat-icon{color:#276ca7;background:#e5f2ff}.stat-card.violet .stat-icon{color:#7248a3;background:#f0e7fc}.stat-card.amber .stat-icon{color:#a16312;background:#fff0d9}.overview-grid{grid-template-columns:minmax(0,1.6fr) minmax(300px,.72fr);gap:17px;display:grid}.panel{border:1px solid var(--line);background:#fff;border-radius:15px;overflow:hidden;box-shadow:0 7px 22px #4b22320b}.panel-header{border-bottom:1px solid #f0e5eb;justify-content:space-between;align-items:center;gap:15px;padding:18px 20px;display:flex}.panel-header h3{margin:0;font-family:serif;font-size:16px}.panel-header p{color:#9a8792;margin:4px 0 0;font-size:9px}.panel-header button{color:#b52c62;background:0 0;border:0;font-size:10px;font-weight:800}.event-row{text-align:left;background:#fff;border:0;border-bottom:1px solid #f3e9ee;grid-template-columns:48px minmax(0,1fr) 48px 48px 15px;align-items:center;gap:13px;width:100%;padding:13px 19px;display:grid}.event-row:last-child{border-bottom:0}.event-row:hover{background:#fff9fb}.event-date{color:#8e2852;background:#fce4ed;border-radius:10px;place-items:center;height:48px;display:grid}.event-date span{font-size:8px}.event-date b{font-family:serif;font-size:18px}.event-date.practice{color:#52652c;background:#eff4dc}.event-date.dragon{color:#744b9f;background:#efe4fa}.event-main>div{align-items:center;gap:8px;display:flex}.event-main b{font-size:12px}.event-main p{color:#8f7d87;margin:5px 0 0;font-size:9px}.type-pill{color:#a02b58;background:#fde1ec;border-radius:5px;padding:3px 6px;font-size:8px;font-weight:900;display:inline-block}.type-pill.practice{color:#596e2a;background:#edf5d6}.type-pill.dragon{color:#694395;background:#eee1fa}.attendance-mini{text-align:center}.attendance-mini strong,.attendance-mini span{display:block}.attendance-mini strong{font-size:16px}.attendance-mini span{color:#9b8993;font-size:8px}.attendance-mini.wait strong{color:#cc7844}.chevron{color:#bdabb4;font-size:18px}.todo-list{padding:4px 14px 10px}.todo-list button{text-align:left;background:0 0;border:0;border-bottom:1px solid #f3e9ee;align-items:center;gap:10px;width:100%;padding:13px 4px;display:flex}.todo-list button:last-child{border:0}.todo-icon{border-radius:9px;flex:none;place-items:center;width:31px;height:31px;font-size:9px;font-weight:900;display:grid}.todo-icon.danger{color:#b53060;background:#fde4ee}.todo-icon.warm{color:#a26221;background:#fff0dc}.todo-icon.cool{color:#356d9c;background:#e6f2fb}.todo-list b,.todo-list small{display:block}.todo-list b{font-size:10px}.todo-list small{color:#9a8792;margin-top:4px;font-size:8px}.todo-list button>i{color:#bca9b2;margin-left:auto;font-style:normal}.bot-card{color:#e9dce3;background:linear-gradient(135deg,#382030,#231621);border-radius:11px;margin:0 14px 14px;padding:14px}.bot-card>div{align-items:center;gap:8px;display:flex}.bot-card b{font-size:10px}.pulse{background:#42d49a;border-radius:50%;width:7px;height:7px;box-shadow:0 0 0 4px #42d49a20}.bot-card p{color:#bda6b3;margin:8px 0;font-size:8px;line-height:1.6}.bot-card button{color:#f0a5c3;background:0 0;border:0;padding:0;font-size:8px;font-weight:800}.table-panel{overflow:hidden}.table-toolbar{justify-content:space-between;align-items:center;gap:20px;padding:22px;display:flex}.table-toolbar h2{margin:0;font-family:serif;font-size:20px}.table-toolbar h2 span{color:#ab2e5f;background:#f9e4ed;border-radius:99px;place-items:center;min-width:22px;height:22px;margin-left:5px;font-family:Arial;font-size:9px;display:inline-grid}.table-toolbar p{color:#94818c;margin:5px 0 0;font-size:10px}.search{border:1px solid var(--line);color:#a48f99;background:#fff;border-radius:9px;align-items:center;gap:8px;width:250px;padding:0 12px;display:flex}.search input{background:0 0;border:0;outline:0;width:100%;height:38px;font-size:10px}.table-toolbar-actions{align-items:center;gap:9px;display:flex}.remove-row{color:#a65d6d;background:0 0;border:0;font-size:8px;font-weight:800}.remove-row:hover{color:#cf3e57}.primary-button:disabled,.ghost-button:disabled{cursor:not-allowed;filter:none;opacity:.48}.member-table{min-width:850px}.table-head,.table-row{grid-template-columns:1.2fr 1.45fr .7fr .85fr .6fr 35px;align-items:center;gap:16px;padding:0 22px;display:grid}.table-head{color:#927f89;background:#fbf5f8;height:38px;font-size:9px;font-weight:800}.table-row{border-top:1px solid #f1e6eb;min-height:61px;font-size:10px}.member-name,.dc-linked,.dc-missing{align-items:center;gap:9px;display:flex}.member-name>i{border-radius:9px;place-items:center;width:31px;height:31px;font-style:normal;font-weight:900;display:grid}.member-name b,.member-name small,.dc-linked b,.dc-linked small,.dc-missing b,.dc-missing small{display:block}.member-name small,.dc-linked small,.dc-missing small{color:#a18e98;margin-top:3px;font-size:8px}.dc-linked>i,.dc-missing>i{border-radius:6px;place-items:center;width:20px;height:20px;font-size:8px;font-style:normal;display:grid}.dc-linked>i{color:#15734d;background:#e1f5ec}.dc-missing>i{color:#ae5a21;background:#fff0df}.dc-missing b{color:#aa6c44}.job-badge{border-radius:6px;justify-self:start;padding:5px 8px;font-size:9px;font-weight:900}.table-row select{border:1px solid var(--line);color:#4e3944;background:#fff;border-radius:7px;max-width:120px;height:31px;padding:0 7px;font-size:9px}.status-active{color:#33785d;align-items:center;gap:6px;font-size:9px;font-weight:800;display:flex}.more{color:#a48d98;letter-spacing:2px;background:0 0;border:0}.job-red{color:#7b1b15!important;background:#f1a69d!important}.job-gold{color:#684b00!important;background:#ffd675!important}.job-blue{color:#174c75!important;background:#aed9f2!important}.job-purple{color:#573179!important;background:#d8b3ef!important}.job-pink{color:#7e2555!important;background:#f5add2!important}.job-green{color:#285f3e!important;background:#aad59e!important}.job-cyan{color:#155970!important;background:#9ee0ef!important}.job-amber{color:#71480d!important;background:#f7d79a!important}.job-gray{color:#4f4650!important;background:#ddd4da!important}.section-actions{justify-content:space-between;align-items:center;gap:18px;margin-bottom:15px;display:flex}.section-actions h2{margin:0;font-family:serif;font-size:20px}.section-actions p{color:#8f7b86;margin:5px 0 0;font-size:10px}.filter-tabs{border:1px solid var(--line);background:#fff;border-radius:10px;gap:4px;padding:4px;display:flex}.filter-tabs button{color:#8c7883;background:0 0;border:0;border-radius:7px;min-width:55px;padding:7px 11px;font-size:9px;font-weight:800}.filter-tabs button.active{color:#fff;background:#442438}.event-picker{border:1px solid var(--line);color:#573d4b;background:#fff;border-radius:9px;height:38px;padding:0 34px 0 12px;font-size:10px}.event-hero{background:linear-gradient(110deg,#fff 0%,#fff4f8 70%,#f8dce8 100%);border:1px solid #e4ccd8;border-radius:15px;grid-template-columns:56px minmax(0,1fr) 70px 70px;align-items:center;gap:15px;margin-bottom:15px;padding:18px 21px;display:grid}.event-emblem{color:#fff;background:linear-gradient(145deg,#e65a8e,#9d2855);border-radius:14px;place-items:center;width:52px;height:52px;font-family:serif;font-size:20px;font-weight:900;display:grid}.event-emblem.practice{background:linear-gradient(145deg,#8db25c,#536f2d)}.event-emblem.dragon{background:linear-gradient(145deg,#9970c2,#5d377c)}.event-hero h2{margin:5px 0 3px;font-family:serif;font-size:19px}.event-hero p{color:#8f7c86;margin:0;font-size:9px}.hero-count{text-align:center;border-left:1px solid #ead4de}.hero-count b,.hero-count span{display:block}.hero-count b{font-family:serif;font-size:25px}.hero-count span{color:#8f7d86;font-size:8px}.hero-count.wait b{color:#c56d38}.attendance-columns{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;display:grid}.attendance-column>header{border-bottom:1px solid #f0e5eb;justify-content:space-between;align-items:center;padding:14px 16px;display:flex}.attendance-column>header>div{align-items:center;gap:7px;display:flex}.attendance-column h3{margin:0;font-family:serif;font-size:14px}.attendance-column>header i{background:#44bd8a;border-radius:50%;width:8px;height:8px}.attendance-column>header i.waitlist{background:#eca266}.attendance-column>header i.leave{background:#a7a0a4}.attendance-column>header>span{color:#927e89;font-size:9px}.attendance-cards{padding:7px 13px 12px}.attendance-cards>div{border-bottom:1px solid #f3e9ee;grid-template-columns:29px minmax(0,1fr) auto 25px;align-items:center;gap:8px;min-height:47px;display:grid}.attendance-cards>div:last-child{border:0}.attendance-cards>div>i{border-radius:8px;place-items:center;width:27px;height:27px;font-size:9px;font-style:normal;font-weight:900;display:grid}.attendance-cards b{font-size:10px}.attendance-cards button{color:#a8919c;background:0 0;border:0}.empty-small{color:#a5919b;text-align:center;padding:24px 8px;font-size:10px}.attendance-editor{border:1px solid var(--line);background:#fff9fa;border-radius:12px;grid-template-columns:minmax(180px,1fr) minmax(160px,.8fr) 110px auto;align-items:center;gap:9px;margin-bottom:14px;padding:12px 14px;display:grid}.attendance-editor>div b,.attendance-editor>div span{display:block}.attendance-editor>div b{font-family:serif;font-size:12px}.attendance-editor>div span{color:var(--muted);margin-top:3px;font-size:8px}.attendance-editor select{border:1px solid var(--line);height:37px;color:var(--ink);background:#fff;border-radius:8px;padding:0 10px;font-size:9px}.attendance-cards select{border:1px solid var(--line);height:28px;color:var(--ink);background:#fff;border-radius:7px;padding:0 5px;font-size:8px}.external-support-panel{margin-top:14px}.external-support-panel>header{border-bottom:1px solid #f0e5eb;justify-content:space-between;align-items:center;padding:16px 18px;display:flex}.external-support-panel>header>div{align-items:center;gap:11px;display:flex}.external-support-panel h3{margin:0;font-family:serif;font-size:15px}.external-support-panel header p{color:var(--muted);margin:4px 0 0;font-size:9px}.external-support-panel header>b{color:#a5667e;font-size:10px}.external-icon{color:#69475e;background:linear-gradient(145deg,#f5d6d9,#d9cadc);border-radius:11px;place-items:center;width:35px;height:35px;font-size:11px;font-weight:900;display:grid}.external-form{background:#fff8f8;grid-template-columns:minmax(150px,1fr) 120px minmax(180px,1.25fr) auto;gap:9px;padding:14px 18px;display:grid}.external-form input,.external-form select{border:1px solid var(--line);height:38px;color:var(--ink);background:#fff;border-radius:9px;outline:0;padding:0 11px;font-size:10px}.external-form input:focus,.external-form select:focus{border-color:#b96f87;box-shadow:0 0 0 3px #b96f8715}.external-list{padding:4px 18px 12px}.external-list>div{border-bottom:1px solid #f2e7eb;grid-template-columns:30px minmax(100px,.8fr) 70px minmax(120px,1.2fr) auto;align-items:center;gap:10px;min-height:48px;display:grid}.external-list>div:last-child{border-bottom:0}.external-list>div>i{border-radius:8px;place-items:center;width:28px;height:28px;font-size:9px;font-style:normal;font-weight:900;display:grid}.external-list b{font-size:10px}.external-list small{color:var(--muted);font-size:9px}.external-list button{color:#aa6675;background:0 0;border:0;font-size:9px;font-weight:800}.roster-actions{gap:8px;display:flex}.roster-sheet{background:#fff9fb;border:1px solid #db9ab7;border-radius:14px;overflow:hidden;box-shadow:0 9px 28px #69263f12}.roster-sheet>header{color:#5d213d;background:linear-gradient(90deg,#fbdbe7,#eda2c0,#f6c8da);border-bottom:1px solid #d987aa;grid-template-columns:1fr auto 1fr;align-items:center;padding:15px 20px;display:grid}.roster-sheet>header h2{color:#23141e;letter-spacing:.1em;margin:0;font-family:serif;font-size:24px}.roster-sheet>header>div:last-child{text-align:right}.roster-sheet>header span,.roster-sheet>header b{font-size:9px;display:block}.roster-sheet>header>div:first-child span{font-family:serif;font-size:15px;font-weight:900}.roster-group>h3{text-align:center;background:#f2b8d0;border-bottom:1px solid #e8b1c9;margin:0;padding:5px;font-family:serif;font-size:17px}.teams{grid-template-columns:repeat(4,minmax(0,1fr));display:grid}.team{border-right:1px solid #e5b1c7}.team:last-child{border-right:0}.team h4{text-align:center;background:#f9e2eb;border-bottom:1px solid #e9c3d3;margin:0;padding:5px;font-family:serif;font-size:11px}.slot{border-bottom:1px solid #efd2de;grid-template-columns:115px 54px minmax(0,1fr);align-items:center;min-height:30px;font-size:9px;display:grid}.slot-name,.position{border-right:1px solid #efd2de;align-self:stretch;align-items:center;padding:0 7px;font-weight:900;display:flex}.position{background:#f9e8ef;justify-content:center}.slot>div{flex-wrap:wrap;gap:3px;padding:4px 7px;display:flex}.slot em{color:#fff;background:#67425b;border-radius:5px;padding:3px 5px;font-size:7px;font-style:normal;font-weight:900}.slot em:nth-child(2n){background:#c4366f}.roster-bottom{border-top:6px solid #f0b3cc;grid-template-columns:minmax(0,1fr) 260px;gap:0;display:grid}.roster-bottom>div,.roster-bottom>aside{padding:11px}.roster-bottom>aside{border-left:1px solid #e8b9cd}.roster-bottom h3{margin:0 0 8px;font-family:serif;font-size:12px}.sub-list{flex-wrap:wrap;gap:5px;display:flex}.sub-list>span{border-radius:6px;justify-content:space-between;gap:10px;min-width:105px;padding:6px 8px;font-size:8px;font-weight:900;display:flex}.roster-bottom aside p{color:#694359;margin:4px 0;font-size:8px}.slot-edit{grid-template-columns:minmax(100px,1fr) 76px minmax(130px,1.2fr);padding:3px}.slot-edit select,.slot-edit input{min-width:0;height:27px;color:var(--ink);background:#fff;border:1px solid #e7c9d6;border-radius:5px;padding:0 6px;font-size:8px}.slot-edit input{margin-left:3px}.settings-grid{grid-template-columns:minmax(0,1.2fr) minmax(300px,.75fr);gap:16px;display:grid}.service-list{padding:5px 18px 14px}.service-list>div{border-bottom:1px solid #f1e6eb;grid-template-columns:34px minmax(0,1fr) auto;align-items:center;gap:10px;padding:13px 0;display:grid}.service-list>div:last-child{border:0}.service-list i{border-radius:9px;place-items:center;width:30px;height:30px;font-style:normal;display:grid}.service-list i.ok{color:#17764e;background:#e3f7ee}.service-list b,.service-list small{display:block}.service-list b{font-size:10px}.service-list small{color:#998690;margin-top:4px;font-size:8px}.service-list span{color:#247453;background:#e9f8f1;border-radius:99px;padding:4px 7px;font-size:8px;font-weight:800}.sync-panel{text-align:center;padding:28px}.big-sync{color:#a6295b;background:#f9dfea;border-radius:20px;place-items:center;width:62px;height:62px;margin:0 auto 15px;font-size:28px;display:grid}.sync-panel h2{margin:0;font-family:serif;font-size:20px}.sync-panel>p{color:#897680;max-width:380px;margin:10px auto 20px;font-size:10px;line-height:1.7}.sync-panel dl{text-align:left;margin:0 0 18px}.sync-panel dl>div{border-top:1px solid #f0e4ea;justify-content:space-between;padding:10px 0;font-size:9px;display:flex}.sync-panel dt{color:#9a8791}.sync-panel dd{margin:0;font-weight:800}.wide{width:100%}.modal-backdrop{z-index:100;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background:#180f16aa;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.modal{background:#fff;border:1px solid #dba6bd;border-radius:17px;width:min(470px,100%);padding:24px;box-shadow:0 30px 90px #0007}.modal header{justify-content:space-between;align-items:flex-start;margin-bottom:21px;display:flex}.modal h2{margin:0;font-family:serif;font-size:23px}.modal header button{color:#957e89;background:0 0;border:0;font-size:25px}.modal label{color:#765b69;gap:7px;margin-bottom:14px;font-size:10px;font-weight:800;display:grid}.modal input,.modal select{border:1px solid var(--line);background:#fff;border-radius:9px;outline:0;width:100%;height:41px;padding:0 11px;font-size:11px}.modal input:focus,.modal select:focus{border-color:#ce6590;box-shadow:0 0 0 3px #ce659015}.form-row{grid-template-columns:1fr 1fr;gap:12px;display:grid}.modal footer{justify-content:flex-end;gap:9px;margin-top:22px;display:flex}.empty{text-align:center;padding:60px}.empty b{font-family:serif;font-size:20px}.empty p{color:#927e89;font-size:11px}.auth-page{background:var(--page);grid-template-columns:minmax(430px,1.08fr) minmax(420px,.92fr);min-height:100vh;display:grid}.auth-art{background:#302536 url(/guild-sunset.gif) 50%/cover no-repeat;min-height:100vh;position:relative;overflow:hidden}.auth-art:after{content:"";background:linear-gradient(115deg,#241b2b55 0%,#4f3b5888 62%,#17131ddd 100%);position:absolute;inset:0}.auth-art-shade{z-index:1;background:radial-gradient(circle at 28% 22%,#ffd2b766 0,#0000 31%),linear-gradient(#0000 50%,#17131edb 100%);position:absolute;inset:0}.auth-brand{z-index:2;color:#fff;text-shadow:0 2px 18px #1c1421;align-items:center;gap:20px;display:flex;position:absolute;bottom:8%;left:7%}.auth-brand>span,.auth-mobile-brand>span{background:linear-gradient(145deg,#d79891cc,#76516dcc);border:1px solid #ffd2c8aa;border-radius:21px;place-items:center;width:62px;height:62px;font-family:serif;font-size:31px;display:grid;box-shadow:0 15px 45px #17101a80}.auth-brand p{color:#f1c6bd;letter-spacing:.24em;margin:0 0 8px;font-size:10px;font-weight:800}.auth-brand h1{letter-spacing:.2em;margin:0;font-family:serif;font-size:39px}.auth-brand small{color:#d8cad8;letter-spacing:.18em;margin-top:9px;font-size:11px;display:block}.auth-panel{background:radial-gradient(circle at 80% 10%,#f0c6c844 0,#0000 31%),linear-gradient(145deg,#fffaf9,#f3edf3);place-items:center;padding:42px;display:grid}.auth-card{-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:#fffdfce8;border:1px solid #ead4dd;border-radius:24px;width:min(410px,100%);padding:38px;box-shadow:0 26px 80px #4c354324}.auth-card h2{letter-spacing:.04em;margin:0;font-family:serif;font-size:30px}.auth-intro{color:var(--muted);margin:9px 0 24px;font-size:12px;line-height:1.65}.auth-mobile-brand{display:none}.auth-tabs{border:1px solid var(--line);background:#f7eff2;border-radius:12px;grid-template-columns:1fr 1fr;gap:5px;margin-bottom:20px;padding:4px;display:grid}.auth-tabs button{color:#8b7481;background:0 0;border:0;border-radius:9px;height:36px;font-size:11px;font-weight:900}.auth-tabs button.active{color:#fff;background:linear-gradient(135deg,#bd7489,#72506b);box-shadow:0 7px 20px #75486133}.auth-card form>label:not(.remember-row){color:#614d5b;gap:9px;margin-bottom:17px;font-size:11px;font-weight:900;display:grid}.auth-card input[type=text],.auth-card input[type=password]{width:100%;height:56px;color:var(--ink);background:#fffaf9;border:1px solid #dfccd5;border-radius:12px;outline:0;padding:0 16px;font-size:15px}.auth-card input:focus{border-color:#b96f87;box-shadow:0 0 0 4px #b96f8718}.remember-row{color:#766370;align-items:center;gap:9px;margin:3px 0 18px;font-size:10px;display:flex}.remember-row input{accent-color:#8a5873;width:16px;height:16px}.auth-error{color:#9f3844;background:#fff0f1;border:1px solid #e7b3ba;border-radius:9px;margin:-5px 0 14px;padding:9px 11px;font-size:10px}.auth-submit{color:#fff;background:linear-gradient(135deg,#cf8a91,#9d617b 48%,#5d4c6a);border:1px solid #8e5972;border-radius:12px;width:100%;height:46px;font-size:12px;font-weight:900;box-shadow:0 12px 26px #70465a33}.auth-submit:disabled{cursor:wait;opacity:.65}.auth-security{color:#a08e98;text-align:center;margin:16px 0 0;font-size:9px;line-height:1.6}.auth-loading{min-height:100vh;color:var(--muted);background:var(--page);align-content:center;place-items:center;gap:13px;display:grid}.auth-loading span{border:3px solid #d7c4cf;border-top-color:#9c607d;border-radius:50%;width:34px;height:34px;animation:.8s linear infinite spin}.auth-loading p{font-size:11px}.brand span,.topbar p,.preview-badge,.profile b{font-size:13px}.sidebar-foot small,.profile small,.logout-button,.welcome-row p,.sync-stamp,.stat-card small,.panel-header p,.panel-header button,.event-main p,.todo-list small,.bot-card p,.bot-card button,.table-toolbar p,.search input,.section-actions p,.event-picker,.event-hero p,.empty-small,.external-support-panel header p,.external-support-panel header>b,.external-form input,.external-form select,.sync-panel>p,.modal label,.auth-intro,.remember-row,.auth-error,.auth-security,.auth-loading p{font-size:12px}.eyebrow{font-size:11px!important}.sync-stamp b,.stat-card span,.event-main b,.todo-list b,.bot-card b,.attendance-editor>div b,.attendance-cards b,.external-list b,.service-list b,.modal input,.modal select,.empty p{font-size:13px}.event-date span,.type-pill,.attendance-mini span,.todo-icon,.table-toolbar h2 span,.remove-row,.table-head,.member-name small,.dc-linked small,.dc-missing small,.job-badge,.table-row select,.status-active,.filter-tabs button,.hero-count span,.attendance-column>header>span,.attendance-editor>div span,.attendance-cards select,.external-list small,.external-list button,.service-list span,.sync-panel dl>div{font-size:11px}.table-row,.attendance-editor select{font-size:12px}.dc-linked>i,.dc-missing>i{font-size:10px}.roster-sheet>header span,.roster-sheet>header b{font-size:11px}.team h4{font-size:13px}.slot{min-height:34px;font-size:11px}.slot em{font-size:9px}.roster-bottom h3{font-size:14px}.sub-list>span{font-size:10px}.sub-list small{font-size:9px}.roster-bottom aside p{font-size:11px}.slot-edit select,.slot-edit input{height:31px;font-size:10px}.service-list small,.auth-tabs button{font-size:12px}.manager-heading{justify-content:space-between;align-items:flex-end;gap:18px;margin:2px 0 17px;display:flex}.manager-heading h2{margin:0;font-family:serif;font-size:25px}.manager-heading>div>p:last-child{color:var(--muted);margin:7px 0 0;font-size:13px}.management-stats{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-bottom:15px;display:grid}.management-stats article{border:1px solid var(--line);background:var(--surface);border-radius:13px;padding:16px 18px;box-shadow:0 7px 22px #4b223209}.management-stats span,.management-stats b,.management-stats small{display:block}.management-stats span{color:var(--muted);font-size:12px;font-weight:800}.management-stats b{margin:5px 0 2px;font-family:serif;font-size:25px}.management-stats small{color:#9a8792;font-size:11px}.member-stats article:first-child{border-top:3px solid #d87298}.member-stats article:nth-child(2){border-top:3px solid #5aa8d9}.member-stats article:nth-child(3){border-top:3px solid #9d76c1}.member-toolbar{padding:15px 18px}.member-filter-tabs{border:1px solid var(--line);background:var(--surface-soft);border-radius:10px;gap:5px;padding:4px;display:flex}.member-filter-tabs button{min-height:32px;color:var(--muted);background:0 0;border:0;border-radius:7px;padding:0 12px;font-size:12px;font-weight:900}.member-filter-tabs button.active{color:#fff;background:#573047;box-shadow:0 5px 14px #4b263433}.member-toolbar .search{width:min(330px,40vw)}.member-field{align-items:center;min-width:0;display:flex}.member-field>small{display:none}.member-field .job-badge{display:inline-flex}.member-field select{width:100%}.list-empty{text-align:center;gap:6px;padding:52px 20px;display:grid}.list-empty b{font-family:serif;font-size:18px}.list-empty span{color:var(--muted);font-size:12px}.attendance-heading{margin-bottom:13px}.attendance-controls{grid-template-columns:1fr 1fr;margin-bottom:14px;display:grid}.attendance-controls>div{grid-template-columns:34px minmax(120px,1fr) auto;align-items:center;gap:11px;padding:14px 16px;display:grid}.attendance-controls>div+div{border-left:1px solid var(--line)}.attendance-controls>div>span{color:#fff;background:linear-gradient(145deg,#cb7592,#72485f);border-radius:9px;place-items:center;width:30px;height:30px;font-size:12px;font-weight:900;display:grid}.attendance-controls b,.attendance-controls small{display:block}.attendance-controls b{font-size:13px}.attendance-controls small{color:var(--muted);margin-top:3px;font-size:11px}.attendance-controls .event-picker{min-width:235px}.event-hero{grid-template-columns:56px minmax(0,1fr) repeat(4,65px)}.hero-count.leave b{color:#897680}.hero-count.pending b{color:#7b5ba2}.attendance-editor{grid-template-columns:minmax(210px,1.15fr) minmax(180px,.9fr) 130px auto;padding:15px 17px}.attendance-editor>label{gap:5px;display:grid}.attendance-editor>label>span{color:var(--muted);font-size:11px;font-weight:800}.attendance-editor .primary-button{align-self:end;height:37px}.attendance-cards>div{grid-template-columns:29px minmax(0,1fr) auto auto 25px;min-height:52px}.attendance-job{border-radius:5px;padding:4px 6px;font-size:10px;font-weight:900}.attendance-cards select{min-width:66px}.roster-heading{align-items:center}.roster-heading .roster-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center}.roster-heading .event-picker{min-width:250px}.roster-summary{justify-content:space-between;align-items:center;gap:20px;margin-bottom:14px;padding:16px 18px;display:flex}.roster-summary>div:first-child{align-items:center;gap:13px;display:flex}.roster-summary .event-emblem{border-radius:12px;width:44px;height:44px;font-size:17px}.roster-summary h3{margin:4px 0 0;font-family:serif;font-size:17px}.roster-summary>div:first-child b{color:var(--muted);font-size:11px}.roster-progress{align-items:center;display:flex}.roster-progress>span{border-left:1px solid var(--line);text-align:center;min-width:88px;padding:0 16px}.roster-progress b,.roster-progress small{display:block}.roster-progress b{font-family:serif;font-size:21px}.roster-progress small{color:var(--muted);margin-top:3px;font-size:10px}.roster-progress .has-warning b{color:#be3e58}.roster-empty{text-align:center;padding:58px 20px}.roster-empty>div{color:#a33260;background:#f8deea;border-radius:18px;place-items:center;width:58px;height:58px;margin:0 auto 13px;font-family:serif;font-size:23px;font-weight:900;display:grid}.roster-empty h3{margin:0;font-family:serif;font-size:21px}.roster-empty p{color:var(--muted);margin:9px auto 20px;font-size:12px}.roster-workspace{grid-template-columns:230px minmax(0,1fr);gap:14px;display:grid}.roster-group-nav{align-self:start}.roster-group-nav>header,.team-editor>header{border-bottom:1px solid var(--line);padding:16px 17px}.roster-group-nav header b,.roster-group-nav header small,.team-editor header b,.team-editor header small{display:block}.roster-group-nav header b,.team-editor header b{font-size:13px}.roster-group-nav header small,.team-editor header small{color:var(--muted);margin-top:4px;font-size:11px}.roster-group-nav>button{width:100%;color:var(--ink);text-align:left;background:0 0;border:0;border-bottom:1px solid #f0e5eb;grid-template-columns:36px minmax(0,1fr) auto;align-items:center;gap:10px;padding:13px 15px;display:grid}.roster-group-nav>button>span{color:#8e2c55;background:#f9e1eb;border-radius:10px;place-items:center;width:34px;height:34px;font-weight:900;display:grid}.roster-group-nav>button b,.roster-group-nav>button small{display:block}.roster-group-nav>button b{font-size:13px}.roster-group-nav>button small{color:var(--muted);margin-top:3px;font-size:10px}.roster-group-nav>button i{color:#b49ca8;font-size:19px;font-style:normal}.roster-group-nav>button.active{background:linear-gradient(90deg,#fff0f5,#fff)}.roster-group-nav>button.active>span{color:#fff;background:linear-gradient(145deg,#c7688c,#75445e)}.roster-nav-hint{color:var(--muted);background:var(--surface-soft);padding:13px 15px;font-size:10px;line-height:1.6}.team-editor{min-width:0}.team-editor>header{justify-content:space-between;align-items:center;gap:15px;display:flex}.team-tabs{gap:5px;display:flex}.team-tabs button{border:1px solid var(--line);min-height:32px;color:var(--muted);background:var(--surface);border-radius:8px;padding:0 12px;font-size:11px;font-weight:900}.team-tabs button.active{color:#fff;background:#573047;border-color:#77455e}.team-editor-head,.team-slot-row{grid-template-columns:48px minmax(170px,.85fr) 115px minmax(210px,1.15fr);align-items:center;gap:10px;padding:0 17px;display:grid}.team-editor-head{min-height:35px;color:var(--muted);background:var(--surface-soft);font-size:10px;font-weight:900}.team-slot-row{border-top:1px solid #f0e5eb;min-height:61px}.slot-number{color:#8e3159;background:#f9e2ec;border-radius:9px;place-items:center;width:30px;height:30px;font-size:12px;font-weight:900;display:grid}.team-slot-row label{min-width:0;display:block}.team-slot-row label>span{display:none}.team-slot-row select,.team-slot-row input{border:1px solid var(--line);width:100%;height:38px;color:var(--ink);background:var(--surface);border-radius:8px;outline:0;padding:0 10px;font-size:12px}.team-slot-row select:focus,.team-slot-row input:focus{border-color:#bd6e8c;box-shadow:0 0 0 3px #bd6e8c18}.roster-overview{margin-top:14px}.roster-overview>header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding:16px 18px;display:flex}.roster-overview h3{margin:0;font-family:serif;font-size:17px}.roster-overview header p{color:var(--muted);margin:4px 0 0;font-size:11px}.roster-overview>header>b{color:#9d3f68;font-size:12px}.roster-overview>div{grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.roster-overview section{border-right:1px solid var(--line);padding:14px}.roster-overview section:last-child{border-right:0}.roster-overview h4{margin:0 0 8px;font-family:serif;font-size:15px}.roster-overview section>div{gap:6px;display:grid}.roster-overview section button{border:1px solid var(--line);width:100%;color:var(--ink);text-align:left;background:var(--surface-soft);border-radius:8px;padding:9px 10px;display:block}.roster-overview section button:hover{border-color:#cb86a0}.roster-overview section button b,.roster-overview section button small{display:block}.roster-overview section button b{font-size:11px}.roster-overview section button b span{float:right;color:#a5476f}.roster-overview section button small{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;margin-top:4px;font-size:10px;overflow:hidden}.roster-detail-grid{grid-template-columns:minmax(0,1.4fr) minmax(300px,.6fr);gap:14px;margin-top:14px;display:grid}.roster-waitlist>header,.roster-note-editor>header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding:15px 17px;display:flex}.roster-waitlist h3,.roster-note-editor h3{margin:0;font-family:serif;font-size:16px}.roster-waitlist header b{color:#a5476f;font-size:11px}.roster-waitlist .sub-list{padding:14px}.roster-note-editor{padding-bottom:14px}.roster-note-editor>header{display:block}.roster-note-editor header small{color:var(--muted);margin-top:4px;font-size:10px;display:block}.roster-note-editor textarea{border:1px solid var(--line);resize:vertical;width:calc(100% - 28px);min-height:93px;color:var(--ink);background:var(--surface);border-radius:9px;margin:14px;padding:10px 11px;font:12px/1.6 inherit;display:block}.roster-note-editor button{width:calc(100% - 28px);margin:0 14px}@media (prefers-color-scheme:dark){:root{--ink:#f5edf3;--muted:#b9aab7;--line:#4b3f4e;--paper:#211b25;--rose:#e09ab0;--rose-dark:#bc7897;--rose-soft:#402d39;--nav:#17131d;--page:#15121a;--surface:#211b25;--surface-soft:#2a222d;--gold:#e1ae82;--mist:#a8abc4}html,body{color:var(--ink);background:#15121a}.app-shell{background:radial-gradient(circle at 82% 0,#413341 0,#0000 31%),linear-gradient(145deg,#19151d,#121017)}.sidebar{background:linear-gradient(#251c2b,#17131c 68%,#100e14);border-right-color:#423444}.topbar{background:#1b171fdd}.topbar h1,.welcome-row h2,.panel h2,.panel h3{color:var(--ink)}.panel,.stat-card,.event-row,.ghost-button,.search,.filter-tabs,.event-picker,.modal{color:var(--ink);border-color:var(--line);background:#211b25}.event-row:hover{background:#2a222d}.panel-header,.event-row,.todo-list button,.table-row,.service-list>div{border-color:#3b303e}.table-head{color:#c2b3be;background:#29222d}.table-row select,.modal input,.modal select{color:var(--ink);background:#2c242f;border-color:#514254}.event-hero{background:linear-gradient(110deg,#211b25,#2e242e 70%,#49313e);border-color:#5c4655}.attendance-editor{background:#19151d}.attendance-editor select,.attendance-cards select,.slot-edit select,.slot-edit input{color:var(--ink);background:#2c242f;border-color:#514254}.external-support-panel>header,.external-list>div{border-color:#3b303e}.external-form{background:#19151d}.external-form input,.external-form select{color:var(--ink);background:#2c242f;border-color:#514254}.external-icon{color:#f0ccd5;background:linear-gradient(145deg,#664552,#46445f)}.roster-sheet{background:#211a21}.roster-sheet>header{background:linear-gradient(90deg,#4d3340,#7d5068,#4d3b50)}.roster-sheet>header h2{color:#fff}.roster-group>h3{background:#5c3a4b}.team h4,.position{background:#352831}.slot,.team,.roster-bottom,.roster-bottom>aside{border-color:#63465a}.auth-panel{background:radial-gradient(circle at 80% 10%,#6b4b5733 0,#0000 31%),linear-gradient(145deg,#1b171f,#131117)}.auth-card{background:#211b25e8;border-color:#4a3d4b;box-shadow:0 26px 80px #0007}.auth-tabs{background:#19151d}.auth-card form>label:not(.remember-row){color:#d8c8d2}.auth-card input[type=text],.auth-card input[type=password]{color:var(--ink);background:#17141b;border-color:#504152}.auth-error{color:#ffc3c7;background:#49262c;border-color:#78424b}.sync-stamp b,.event-main b,.attendance-mini strong{color:var(--ink)}.management-stats article,.member-filter-tabs,.attendance-controls,.roster-summary,.roster-group-nav,.team-editor,.roster-overview,.roster-waitlist,.roster-note-editor{background:var(--surface)}.member-filter-tabs button.active,.team-tabs button.active{background:#8a526f}.roster-group-nav>button,.team-slot-row{border-color:#3b303e}.roster-group-nav>button.active{background:linear-gradient(90deg,#3e2835,#29212b)}.roster-nav-hint,.team-editor-head,.roster-overview section button{background:#19151d}.team-tabs button,.team-slot-row select,.team-slot-row input,.roster-note-editor textarea{color:var(--ink);background:#2c242f;border-color:#514254}.roster-empty>div{color:#f2b9d0;background:#4e2d3d}}@media (width<=1100px){.stats-grid{grid-template-columns:repeat(2,1fr)}.overview-grid,.settings-grid,.attendance-columns,.attendance-controls{grid-template-columns:1fr}.attendance-controls>div+div{border-top:1px solid var(--line);border-left:0}.attendance-editor{grid-template-columns:1fr 1fr}.external-form{grid-template-columns:1fr 120px}.external-form .primary-button{min-height:38px}.profile div{display:none}.member-table,.roster-sheet{overflow:auto}.roster-sheet>*{min-width:1180px}.roster-workspace{grid-template-columns:190px minmax(0,1fr)}.team-editor-head,.team-slot-row{grid-template-columns:42px minmax(150px,.8fr) 105px minmax(170px,1fr)}.roster-overview>div{grid-template-columns:1fr}.roster-overview section{border-right:0;border-bottom:1px solid var(--line)}.roster-overview section:last-child{border-bottom:0}.roster-detail-grid{grid-template-columns:1fr}}@media (width<=760px){.auth-page{display:block}.auth-art{min-height:34vh}.auth-brand{display:none}.auth-panel{min-height:66vh;padding:18px}.auth-card{border-radius:21px;margin-top:-42px;padding:27px 22px}.auth-mobile-brand{align-items:center;gap:11px;margin-bottom:22px;display:flex}.auth-mobile-brand>span{border-radius:13px;width:40px;height:40px;font-size:20px}.auth-mobile-brand b{letter-spacing:.13em;font-family:serif;font-size:17px}.app-shell{display:block}.sidebar{z-index:40;border:0;border-top:1px solid #5f334c;width:100%;height:70px;padding:7px 8px;position:fixed;top:auto;bottom:0}.brand,.sidebar-foot{display:none}.main-nav{grid-template-columns:repeat(5,1fr);gap:3px;display:grid}.main-nav button{flex-direction:column;justify-content:center;gap:2px;padding:3px;font-size:10px}.main-nav button span{height:25px}.topbar{min-height:72px;padding:14px 17px}.topbar p{display:none}.topbar h1{font-size:21px}.top-actions .ghost-button,.profile,.logout-button{display:none}.content{padding:18px 14px 94px}.welcome-row{align-items:flex-start}.welcome-row h2{font-size:21px}.sync-stamp{display:none}.stats-grid{gap:9px}.stat-card{gap:10px;padding:13px}.stat-icon{width:35px;height:35px}.stat-card strong{font-size:19px}.overview-grid{grid-template-columns:1fr}.event-row{grid-template-columns:43px minmax(0,1fr) 42px 12px}.event-row .attendance-mini.wait{display:none}.section-actions{flex-direction:column;align-items:stretch}.filter-tabs{overflow:auto}.event-picker{width:100%}.manager-heading{flex-direction:column;align-items:stretch;margin-bottom:13px}.manager-heading h2{font-size:22px}.management-stats{grid-template-columns:1fr 1fr;gap:8px}.management-stats article{padding:13px}.management-stats article:first-child{grid-column:1/-1}.member-toolbar{flex-direction:column;align-items:stretch}.member-filter-tabs{overflow:auto}.member-filter-tabs button{flex:none}.member-toolbar .search{width:100%}.table-panel{overflow:hidden}.member-table{min-width:0;overflow:visible}.table-head{display:none}.table-row{grid-template-columns:1fr 1fr;gap:13px;padding:16px}.member-name,.dc-linked,.dc-missing{grid-column:1/-1}.dc-linked,.dc-missing{background:var(--surface-soft);border-radius:9px;padding:10px}.member-field{gap:6px;display:grid}.member-field>small{color:var(--muted);font-size:10px;font-weight:800;display:block}.member-field select{max-width:none;height:38px}.status-active{align-self:center}.remove-row{place-self:center end;padding:9px}.attendance-controls>div{grid-template-columns:32px minmax(0,1fr);padding:13px}.attendance-controls .filter-tabs,.attendance-controls .event-picker{grid-column:1/-1;min-width:0}.event-hero{grid-template-columns:48px minmax(0,1fr) repeat(4,1fr);gap:10px;padding:15px}.event-hero>div:nth-child(2){grid-column:2/-1}.hero-count{border-top:1px solid var(--line);border-left:0;padding-top:10px}.hero-count b{font-size:20px}.attendance-editor{grid-template-columns:1fr}.attendance-editor .primary-button{width:100%}.attendance-cards>div{grid-template-columns:32px minmax(0,1fr) auto 26px;gap:7px}.attendance-job{grid-column:2}.attendance-cards select{grid-area:1/3/3}.attendance-cards button{grid-area:1/4/3}.external-form{grid-template-columns:1fr}.external-list>div{grid-template-columns:28px minmax(0,1fr) auto}.external-list small{grid-column:2/4}.external-list>div>button{grid-area:1/3}.roster-heading .roster-actions{grid-template-columns:1fr 1fr;width:100%;display:grid}.roster-heading .event-picker{grid-column:1/-1;min-width:0}.roster-summary{flex-direction:column;align-items:stretch}.roster-progress{justify-content:space-between}.roster-progress>span{flex:1;min-width:0;padding:0 8px}.roster-progress>span:first-child{border-left:0}.roster-workspace{grid-template-columns:1fr}.roster-group-nav>header{display:none}.roster-group-nav{grid-template-columns:repeat(3,1fr);display:grid}.roster-group-nav>button{text-align:center;border-right:1px solid var(--line);border-bottom:0;padding:10px 5px;display:block}.roster-group-nav>button>span,.roster-group-nav>button i{display:none}.roster-group-nav>button small{font-size:9px}.roster-nav-hint{display:none}.team-editor>header{flex-direction:column;align-items:stretch}.team-tabs{grid-template-columns:repeat(4,1fr);display:grid}.team-tabs button{padding:0 5px}.team-editor-head{display:none}.team-slot-row{grid-template-columns:38px 1fr;gap:8px;padding:12px 13px}.slot-number{grid-row:1/4;align-self:start}.team-slot-row label{grid-template-columns:48px minmax(0,1fr);align-items:center;gap:7px;display:grid}.team-slot-row label>span{color:var(--muted);font-size:10px;font-weight:800;display:block}.team-slot-row select,.team-slot-row input{height:37px}.roster-overview>header{flex-direction:column;align-items:flex-start}.roster-detail-grid,.settings-grid{grid-template-columns:1fr}.toast{top:80px;left:14px;right:14px}.form-row{grid-template-columns:1fr}}.member-name{gap:0}.member-name>div{min-width:0}.roster-history{grid-template-columns:minmax(160px,.6fr) auto minmax(280px,1fr);align-items:center;gap:14px;margin-bottom:14px;padding:13px 16px;display:grid}.roster-history>div:first-child b,.roster-history>div:first-child small{display:block}.roster-history>div:first-child b{font-family:serif;font-size:15px}.roster-history>div:first-child small{color:var(--muted);margin-top:3px;font-size:10px}.roster-history .event-picker{width:100%}.roster-catalog{margin-bottom:14px;overflow:hidden}.roster-catalog>summary{cursor:pointer;justify-content:space-between;align-items:center;gap:20px;padding:15px 17px;list-style:none;display:flex}.roster-catalog>summary::-webkit-details-marker{display:none}.roster-catalog>summary span b,.roster-catalog>summary span small{display:block}.roster-catalog>summary span b{font-family:serif;font-size:15px}.roster-catalog>summary span small{color:var(--muted);margin-top:3px;font-size:10px}.roster-catalog>summary i{color:#a5476f;font-size:11px;font-style:normal;font-weight:800}.roster-catalog[open]>summary{border-bottom:1px solid var(--line)}.catalog-columns{grid-template-columns:.75fr 1.25fr;display:grid}.catalog-columns>section{padding:15px 17px}.catalog-columns>section+section{border-left:1px solid var(--line)}.catalog-columns header b,.catalog-columns header small{display:block}.catalog-columns header b{font-size:13px}.catalog-columns header small{color:var(--muted);margin-top:3px;font-size:10px}.catalog-chips{flex-wrap:wrap;gap:6px;min-height:36px;margin:12px 0;display:flex}.catalog-chips>span{color:#563d4b;background:#f6e7ed;border-radius:7px;align-items:center;gap:6px;padding:6px 8px;font-size:10px;font-weight:900;display:flex}.catalog-chips>span>button{color:inherit;opacity:.7;background:0 0;border:0;padding:0;font-size:13px;line-height:1}.skill-catalog>span{cursor:grab;box-shadow:inset 0 0 0 1px #fff4}.catalog-add{grid-template-columns:minmax(0,1fr) 62px;gap:7px;display:grid}.catalog-add.skill-add{grid-template-columns:minmax(0,1fr) 40px 62px}.catalog-add input{border:1px solid var(--line);min-width:0;height:34px;color:var(--ink);background:var(--surface);border-radius:7px;padding:0 10px;font:11px inherit}.catalog-add input[type=color]{padding:3px}.catalog-add button{color:#fff;background:#75445e;border:0;border-radius:7px;font-size:10px;font-weight:900}.roster-template-bar{border:1px solid var(--line);background:var(--surface);border-radius:12px;align-items:center;gap:8px;margin:0 0 14px;padding:12px 15px;display:flex}.roster-template-bar>div{min-width:0;margin-right:auto}.roster-template-bar b,.roster-template-bar small{display:block}.roster-template-bar b{font-family:serif;font-size:14px}.roster-template-bar small{color:var(--muted);margin-top:3px;font-size:10px}.roster-full-editor{gap:16px;display:grid}.roster-group-editor{background:#fff9fb;border:1px solid #d895b3;border-radius:14px;overflow:hidden;box-shadow:0 8px 26px #6b284112}.roster-group-editor>header{color:#512238;background:linear-gradient(90deg,#f7cedd,#eaa1c0);justify-content:space-between;align-items:center;padding:10px 15px;display:flex}.roster-group-editor>header h3{margin:0;font-family:serif;font-size:19px}.roster-group-editor>header small{margin-top:2px;font-size:9px;display:block}.roster-group-editor>header>b{font-size:11px}.roster-team-grid{grid-template-columns:repeat(4,minmax(270px,1fr));display:grid}.roster-team-card{border-right:1px solid #e7b6c9;min-width:0}.roster-team-card:last-child{border-right:0}.roster-team-card>h4{text-align:center;color:#54223a;background:#f8dfe9;border-bottom:1px solid #e7b6c9;margin:0;padding:7px;font-family:serif;font-size:13px}.roster-slot-editor{background:#fffafd;border-bottom:1px solid #efd4df;min-height:117px;padding:8px}.roster-slot-editor:last-child{border-bottom:0}.roster-slot-editor.leave-warning{background:#fff1ee}.slot-editor-head{align-items:center;gap:6px;margin-bottom:6px;display:flex}.slot-editor-head>span{color:#843252;background:#f5dce6;border-radius:6px;place-items:center;width:20px;height:20px;font-size:9px;font-weight:900;display:grid}.slot-editor-head>b{color:#c13f43;font-size:9px}.slot-editor-head>div{gap:4px;margin-left:auto;display:flex}.slot-editor-head button{color:#714459;background:#fff;border:1px solid #dfbdcb;border-radius:5px;padding:3px 5px;font-size:8px;font-weight:800}.slot-editor-head button:disabled{opacity:.35}.slot-fields{grid-template-columns:minmax(0,1.25fr) minmax(72px,.75fr);gap:5px;display:grid}.slot-fields select,.slot-skills>select{color:#4c3240;background:#fff;border:1px solid #e0b7c8;border-radius:6px;min-width:0;height:32px;padding:0 7px;font:10px inherit}.slot-skills{grid-template-columns:minmax(0,1fr) 70px;align-items:start;gap:5px;margin-top:6px;display:grid}.slot-skills>div{border:1px dashed #e6c4d2;border-radius:6px;flex-wrap:wrap;gap:4px;min-height:30px;padding:3px;display:flex}.slot-skills>div:empty:before{content:"拖曳技能到這裡";color:#b79ca8;align-self:center;font-size:8px}.slot-skills span{border-radius:5px;align-items:center;gap:4px;max-width:100%;padding:4px 6px;font-size:8px;font-weight:900;display:flex}.slot-skills span button{color:inherit;background:0 0;border:0;padding:0;font-size:11px;line-height:1}.slot-skills>select{height:30px;padding:0 4px;font-size:9px}.roster-detail-grid{margin-bottom:4px}.roster-waitlist .sub-list>span{font-size:10px}.roster-note-editor header small,.roster-note-editor textarea{font-size:12px}@media (prefers-color-scheme:dark){.roster-catalog,.roster-template-bar,.roster-history{background:var(--surface)}.catalog-columns>section+section,.roster-catalog[open]>summary{border-color:#3b303e}.catalog-chips>span{color:#eadbe3;background:#3b2c36}.catalog-add input,.slot-fields select,.slot-skills>select{color:var(--ink);background:#2c242f;border-color:#61485a}.roster-group-editor{background:#211a21;border-color:#684257}.roster-group-editor>header{color:#fff;background:linear-gradient(90deg,#563044,#9a5c79)}.roster-team-card,.roster-team-card>h4{border-color:#654458}.roster-team-card>h4{color:#fff;background:#3d2934}.roster-slot-editor{background:#261e27;border-color:#503645}.roster-slot-editor.leave-warning{background:#41282b}.slot-editor-head>span{color:#f5c6d8;background:#573245}.slot-editor-head button{color:#e9d6df;background:#302630;border-color:#61475a}.slot-skills>div{border-color:#60455a}.slot-skills>div:empty:before{color:#9f8995}}@media (width<=1250px){.roster-group-editor{overflow-x:auto}.roster-team-grid{min-width:1120px}}@media (width<=760px){.roster-history{grid-template-columns:1fr;gap:9px}.roster-history .filter-tabs{width:100%}.roster-catalog>summary{align-items:flex-start}.roster-catalog>summary i{text-align:right;max-width:105px}.catalog-columns{grid-template-columns:1fr}.catalog-columns>section+section{border-top:1px solid var(--line);border-left:0}.roster-template-bar{flex-direction:column;align-items:stretch}.roster-template-bar>div{margin:0 0 3px}.roster-group-editor{overflow:hidden}.roster-team-grid{scroll-snap-type:x mandatory;min-width:0;display:flex;overflow-x:auto}.roster-team-card{scroll-snap-align:start;flex:0 0 calc(100% - 18px)}.roster-group-editor>header small{max-width:230px}.slot-fields select{height:36px;font-size:11px}.slot-skills>select{height:34px}.slot-skills span{font-size:9px}}
