@font-face{font-family:Sarabun;font-style:normal;font-display:swap;font-weight:400;src:url(./sarabun-thai-400-normal-C2DaJlKK.woff2) format("woff2"),url(./sarabun-thai-400-normal-CH-UbWgg.woff) format("woff");unicode-range:U+02D7,U+0303,U+0331,U+0E01-0E5B,U+200C-200D,U+25CC}@font-face{font-family:Sarabun;font-style:normal;font-display:swap;font-weight:400;src:url(./sarabun-vietnamese-400-normal-igdrzAGY.woff2) format("woff2"),url(./sarabun-vietnamese-400-normal-DPfkSCMy.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Sarabun;font-style:normal;font-display:swap;font-weight:400;src:url(./sarabun-latin-ext-400-normal-BbP7GpLL.woff2) format("woff2"),url(./sarabun-latin-ext-400-normal-BsmTn0SS.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Sarabun;font-style:normal;font-display:swap;font-weight:400;src:url(./sarabun-latin-400-normal-URPBxl-K.woff2) format("woff2"),url(./sarabun-latin-400-normal-DmguIS-7.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Sarabun;font-style:normal;font-display:swap;font-weight:700;src:url(./sarabun-thai-700-normal-CbuDipM3.woff2) format("woff2"),url(./sarabun-thai-700-normal-CP2-p8e-.woff) format("woff");unicode-range:U+02D7,U+0303,U+0331,U+0E01-0E5B,U+200C-200D,U+25CC}@font-face{font-family:Sarabun;font-style:normal;font-display:swap;font-weight:700;src:url(./sarabun-vietnamese-700-normal-DrMy3BMX.woff2) format("woff2"),url(./sarabun-vietnamese-700-normal-lN6N8XBT.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Sarabun;font-style:normal;font-display:swap;font-weight:700;src:url(./sarabun-latin-ext-700-normal-CnQtP196.woff2) format("woff2"),url(./sarabun-latin-ext-700-normal-ykw7DJpk.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Sarabun;font-style:normal;font-display:swap;font-weight:700;src:url(./sarabun-latin-700-normal-DQKyWxHq.woff2) format("woff2"),url(./sarabun-latin-700-normal-DUuqj4Ju.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--bg: #eaf7f9;--primary: #00796b;--primary-dark: #00695c;--text: #333333;--field-border: #cccccc;--card: #ffffff;--card-radius: 15px;--field-radius: 6px;--btn-radius: 6px;--card-shadow: 0 6px 24px rgba(0, 60, 70, .12);--bar-bg: #e8f0fe;--bar-text: #202124;--bar-link: #1967d2;--bar-font: "Google Sans", Roboto, Helvetica, Arial, sans-serif;--font: "Sarabun", "Google Sans", Roboto, Helvetica, Arial, sans-serif;--ok: #2e7d32;--bad: #c62828;--wait: #ef6c00}*{box-sizing:border-box}html,body{margin:0;padding:0;overflow-x:hidden}body{background:var(--bg);color:var(--text);font-family:var(--font);font-size:16px}button,input,select,textarea{font-family:inherit}.topbar{position:relative;display:flex;align-items:center;height:46px;padding:0 10px 0 20px;background:var(--bar-bg);border-bottom:1px solid #cccccc;font-family:var(--bar-font);font-size:14px}.topbar-icon{flex:0 0 24px;margin-right:20px}.topbar-text{flex:1 1 auto;min-width:0;color:var(--bar-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.topbar-links{display:flex;gap:2px}.topbar-links a{padding:2px 20px;color:var(--bar-link);font-weight:500;text-decoration:none;line-height:19px;white-space:nowrap}.topbar-links a:hover{text-decoration:underline}.topbar-close{display:flex;margin-left:11px;padding:0;border:0;background:none;cursor:pointer}.page{padding:95px 20px 60px}.quick-links{width:380px;max-width:100%;margin:0 auto}.btn-wide{display:block;width:100%;height:50px;border:0;border-radius:var(--btn-radius);background:var(--primary);color:#fff;font-size:16px;font-weight:700;cursor:pointer}.btn-wide+.btn-wide{margin-top:37px}.btn-wide:hover,.btn-primary:hover{background:var(--primary-dark)}.card{background:var(--card);border-radius:var(--card-radius);box-shadow:var(--card-shadow)}.login-card{width:400px;max-width:100%;margin:0 auto;padding:40px}.card-title{margin:21px 0 27px;color:var(--primary-dark);font-size:27.5px;font-weight:700;line-height:42px;text-align:center;white-space:nowrap}.field-label{display:block;margin:0 0 5px;color:var(--text);font-size:16px;font-weight:700;line-height:20px}.field{display:block;width:100%;height:40px;margin:0 0 16px;padding:0 10px;border:1px solid var(--field-border);border-radius:var(--field-radius);background:#fff;color:#000;font-size:16.8px}.field::placeholder{color:#757575}.field-select{height:41px;padding:0 10px}.field-area{height:auto;padding:8px 10px;resize:vertical}.field:focus{outline:2px solid rgba(0,121,107,.35);border-color:var(--primary)}.btn-primary{display:inline-block;height:46px;padding:0 20px;border:0;border-radius:var(--btn-radius);background:var(--primary);color:#fff;font-size:16px;font-weight:700;cursor:pointer}.btn-login{display:block;width:100%;margin:25px 0 15px}.login-card .field-last{margin-bottom:0}.form-error,.form-ok,.form-note{margin:12px 0 0;font-size:14px}.form-error{color:var(--bad)}.form-ok{color:var(--ok)}.form-note{color:var(--primary-dark)}.muted{color:#666}.small{font-size:14px}.center{text-align:center}.track{margin:0 auto;padding-top:61px;max-width:none;text-align:center}.track-title{margin:0 0 31px;color:var(--primary-dark);font-size:27.5px;font-weight:700;line-height:42px}.track-form{display:flex;flex-direction:column;align-items:center}.track-input{width:300px;max-width:100%;margin:0 auto;text-align:center}.track-more{display:block;width:300px;max-width:100%;margin:16px auto 0}.rt-scroll{width:832px;max-width:100%;margin:31px auto 0;overflow-x:auto}.rt{width:832px;border:1px solid #999999;border-radius:0 0 6px 6px;background:#e6e6e6;color:#333;font-size:15px;text-align:left;overflow:hidden}.rt-head{display:flex;background:#e6e6e6;border-bottom:1px solid #999999}.rt-col{position:relative;display:flex;align-items:center;height:29px;padding:0 25px 0 4px;border:0;border-right:1px solid #aaaaaa;background:none;color:#555;font:inherit;font-weight:700;text-align:left;cursor:pointer}.rt-col:last-child,.rt-cell:last-child{border-right:0}.rt-col:hover{background:#d6d6d6}.rt-col-title{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.rt-icon{font-size:13px}.rt-arrow{position:absolute;top:11px;right:8px;width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #bbbbbb}.rt-arrow.on{border-bottom-color:#666}.rt-arrow.on.desc{border-bottom:0;border-top:6px solid #666666}.rt-body{background:#fff}.rt-row{display:flex;min-height:28px;background:#fff}.rt-row:nth-child(2n){background:#efefef}.rt-row:hover{background:#bbb}.rt-cell{flex:0 0 auto;padding:4px;border-right:1px solid #aaaaaa;line-height:20px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.rt-center{text-align:center}.rt-pdf{display:inline-flex;padding:2px;border:0;background:none;cursor:pointer;vertical-align:middle}.rt-empty{padding:12px;text-align:center;color:#666}.rt-foot{display:flex;justify-content:flex-end;align-items:center;min-height:78px;padding:5px 42px 5px 10px;border-top:1px solid #999999;background:#e6e6e6}.rt-pages{display:flex;gap:14px}.rt-page{height:24px;padding:0 5px;border:1px solid #aaaaaa;border-radius:3px;background:#fff3;color:#fff;font:inherit;font-size:15px;font-weight:700;line-height:20px;text-shadow:0 0 1px rgba(0,0,0,.35);cursor:pointer}.rt-page:hover:not(:disabled){background:#0003}.rt-page:disabled{opacity:.5;cursor:default}.req-list{margin:0;padding:0;list-style:none;display:grid;gap:12px}.req-item{padding:14px 16px;background:#fff;border:1px solid #dfe9ea;border-radius:10px;font-size:15px;line-height:1.6}.req-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px}.req-id{font-weight:700;color:var(--primary-dark)}.badge{padding:2px 10px;border-radius:100px;font-size:13px;font-weight:700;white-space:nowrap}.badge-ok{background:#e8f5e9;color:var(--ok)}.badge-bad{background:#ffebee;color:var(--bad)}.badge-wait{background:#fff3e0;color:var(--wait)}.badge-muted{background:#eee;color:#616161}.req-actions{display:flex;gap:8px;margin-top:8px}.req-actions:empty{display:none}.btn-small{height:32px;padding:0 14px;border:0;border-radius:var(--btn-radius);background:var(--primary);color:#fff;font-size:14px;font-weight:700;cursor:pointer}.btn-small+.btn-small{margin-left:6px}.btn-danger{background:#fff;color:var(--bad);border:1px solid #e5b3b3}.btn-outline{height:40px;padding:0 16px;border:1px solid var(--primary);border-radius:var(--btn-radius);background:#fff;color:var(--primary);font-size:15px;font-weight:700;cursor:pointer}.panel{width:400px;max-width:100%;margin:0 auto;padding:30px 40px 40px}.panel-wide{width:760px;max-width:100%;margin:0 auto 24px;padding:28px 32px}.back{padding:0;border:0;background:none;color:var(--primary);font-size:15px;font-weight:700;cursor:pointer}.panel .card-title{margin:12px 0 4px}.duty-list{margin:8px 0 0;padding:0;list-style:none}.duty-list li{display:flex;justify-content:space-between;gap:12px;padding:12px 0;border-bottom:1px solid #e6eeef}.duty-dorm{color:#555}.duty-name{font-weight:700;color:var(--primary-dark);text-align:right}.table-wrap{width:100%;overflow-x:auto}.table{width:100%;border-collapse:collapse;font-size:15px}.table th,.table td{padding:10px 8px;border-bottom:1px solid #e6eeef;text-align:left;vertical-align:middle}.table th{color:var(--primary-dark);white-space:nowrap}.table td:not(:first-child){white-space:nowrap}.nowrap{white-space:nowrap}.bar{height:6px;margin-top:4px;border-radius:100px;background:#e0f2f1}.bar span{display:block;height:100%;border-radius:100px;background:var(--primary)}.field-inline{margin:0;min-width:160px}.dash{max-width:760px;margin:-55px auto 0}.dash-full{max-width:1600px}.dash-full .panel-wide{width:100%}.table select.field-select{min-width:210px}.dash-head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:20px}.dash-title{margin:0;color:var(--primary-dark);font-size:26px}.section-title{margin:0 0 16px;color:var(--primary-dark);font-size:20px}.sub-title{margin:28px 0 6px;color:var(--primary-dark);font-size:17px}.tabs,.seg{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px}.tabs button,.seg button{height:38px;padding:0 14px;border:1px solid #b2dfdb;border-radius:100px;background:#fff;color:var(--primary-dark);font-size:15px;font-weight:700;cursor:pointer}.tabs button.on,.seg button.on{background:var(--primary);border-color:var(--primary);color:#fff}.count{margin-left:6px;padding:0 7px;border-radius:100px;background:#ff7043;color:#fff;font-size:12px}.row-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px;margin-bottom:16px}.row-form .field{margin:0}.row-form .btn-primary{height:41px}.grid3{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px;margin-bottom:12px}.grid3 .field{margin:4px 0 0}.file-pick{display:flex;flex-direction:column;gap:4px;margin-bottom:12px}.file-pick input{max-width:100%}.preview{margin-top:16px;padding:16px;border-radius:10px;background:#e0f2f1}.preview .btn-outline{margin-left:8px}.btn-row{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px}.btn-link{display:inline-flex;align-items:center;height:40px;text-decoration:none}.sheet-box{margin:8px 0 20px;padding:4px 16px 8px;border-radius:10px;background:#f1f9f8;border:1px solid #d3ebe8}.sheet-box .sub-title{margin-top:12px}.sheet-url{word-break:break-all}.sheet-steps{padding-left:20px;line-height:1.7}.sheet-steps code{font-size:13px;background:#e0f2f1;padding:0 4px;border-radius:4px}.head-actions{margin:0}.account-form{max-width:400px}.month-bar{display:flex;justify-content:center;align-items:center;gap:8px;margin:24px auto 0}.month-select{width:240px;margin:0;text-align:center;font-weight:700;color:var(--primary-dark)}.month-step{width:41px;height:41px;border:1px solid var(--field-border);border-radius:var(--field-radius);background:#fff;color:var(--primary-dark);font-size:24px;line-height:1;cursor:pointer}.month-step:disabled{opacity:.35;cursor:default}.month-summary{margin:10px 0 0;color:#555;font-size:15px}.month-summary .wait{color:var(--wait)}.month-summary+.rt-scroll{margin-top:12px}.g1,.g2,.g3,.g4,.g5,.g6{--g: #37474f;--g-bg: #ffffff}.group-chip{display:inline-block;min-width:28px;padding:1px 8px;border-radius:100px;background:var(--g);color:#fff;font-weight:700;text-align:center}.group-chip.wide{padding:2px 16px}.btn-block{display:block;width:100%;margin-top:20px}.roster-link{margin-bottom:16px}.roster-sub{margin:0 0 4px}.cal{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;margin-top:16px}.cal-head{padding:4px 0;color:#666;font-size:14px;font-weight:700;text-align:center}.cal-cell{display:flex;flex-direction:column;align-items:center;gap:2px;min-height:58px;padding:6px 2px;border:1px solid #e3eaeb;border-radius:8px;background:var(--g-bg, #ffffff);color:#333;font:inherit;cursor:pointer}.cal-empty{border:0;background:none}.cal-off{background:#fafafa;color:#bbb;cursor:default}.cal-day{font-size:15px;font-weight:700}.cal-group{padding:0 6px;border-radius:100px;background:var(--g);color:#fff;font-size:12px;font-weight:700;white-space:nowrap}.cal-today{outline:2px solid var(--primary-dark);outline-offset:1px}.cal-picked{border-color:var(--g);box-shadow:inset 0 0 0 2px var(--g)}.day-panel{margin-top:20px;padding:16px;border-radius:10px;background:#f6fbfb;border:1px solid #dceeed}.day-panel .section-title{margin-bottom:8px;font-size:18px}.dorms{margin-top:4px;padding:14px 16px;border-radius:10px;background:#f1f9f8;border:1px solid #d3ebe8}.dorms-title{margin:0 0 6px;color:var(--primary-dark);font-size:18px}.dorm-list{margin:0;padding:0;list-style:none}.dorm-list li{display:grid;grid-template-columns:104px minmax(0,1fr) auto;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid #e0ecec}.dorm-list li:last-child{border-bottom:0}.dorm-badge{display:inline-flex;align-items:center;justify-content:center;gap:5px;height:30px;padding:0 10px;border-radius:100px;font-size:14px;font-weight:700;white-space:nowrap}.dorm-badge.m{background:#e3f0fc;color:#1565c0}.dorm-badge.f{background:#fde8f1;color:#ad1457}.dorm-name{min-width:0;font-size:16px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.phone-btn{display:inline-flex;align-items:center;gap:5px;height:30px;padding:0 10px;border:1px solid #cfe5e2;border-radius:100px;background:#fff;color:var(--primary-dark);font-size:14px;white-space:nowrap;text-decoration:none}.phone-btn:hover{background:#e0f2f1}.panel-today{width:620px}.title-icon{display:flex;align-items:center;justify-content:center;gap:8px}.view-switch{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin:4px 0 14px;padding:4px;border-radius:12px;background:#e6f1f1}.view-switch button{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:42px;border:0;border-radius:9px;background:transparent;color:var(--primary-dark);font:inherit;font-size:16px;font-weight:700;cursor:pointer}.view-switch button.on{background:var(--primary);color:#fff;box-shadow:0 2px 6px #00695c40}.dorms-title{display:flex;align-items:center;gap:8px}.daily-note{margin:-4px 0 4px}.btn-copy{display:inline-flex;align-items:center;justify-content:center;gap:6px}.peek{margin-bottom:12px;padding:12px;border-radius:10px;background:#f7f9f9;border:1px solid #e0e8e8}.col-chip{display:inline-block;margin:2px 4px 2px 0;padding:0 8px;border-radius:100px;background:#e0f2f1;color:var(--primary-dark);font-size:13px}.peek-table{font-size:13px}.peek-table td{max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.committee{margin:18px 0 0;color:#555;font-size:15px}.btn-copy{width:100%;margin-top:10px}.sub-gap{margin-top:28px}.dorm-table select{min-width:150px}.day-dorm-row{display:grid;grid-template-columns:110px 1fr;align-items:center;gap:8px;margin-bottom:8px}@media (max-width: 600px){.dorm-list li{grid-template-columns:auto 1fr;gap:6px 8px}.dorm-list .phone-btn{justify-self:end}.dorm-list .dorm-name{grid-column:1 / -1;grid-row:2;white-space:normal}.dorms{padding:12px}}.crew{margin:8px 0 0;padding:0;list-style:none}.crew li{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid #e6eeef}.crew-head .crew-name{font-weight:700}.crew-title{margin-left:6px;padding:0 6px;border-radius:100px;background:#e0f2f1;color:var(--primary-dark);font-size:12px;font-weight:700;white-space:nowrap}.crew-swap{background:#fff3e0;color:var(--wait)}.crew-phone{color:var(--primary-dark);white-space:nowrap;text-decoration:none}.roster-table-title{margin-top:28px}.roster-table td,.roster-table th{border:1px solid #d9d9d9}.roster-table th{background:#f3f7f7}.roster-table td.head{font-weight:700}.roster-table tr.student td{color:#b23a3a}.roster-table .group-no,.roster-table .days-col{vertical-align:top}.roster-table .days-col div{line-height:1.7}.roster-table .today-day{border-radius:4px;background:var(--primary);color:#fff;font-weight:700}.roster-table a{color:inherit;text-decoration:none}@media (max-width: 600px){.cal-cell{min-height:48px}.cal-group{padding:0 3px;font-size:11px}.day-panel{padding:12px 10px}}.rt-status-wait{color:var(--wait)}.rt-status-bad{color:var(--bad)}.show-pass{display:flex;align-items:center;gap:6px;margin:-6px 0 14px}.account-note{margin-top:16px}.admin-warn{margin:-8px 0 16px}.help ol{padding-left:20px;line-height:1.8}@media (max-width: 600px){body{background:#fff}.card{box-shadow:none}.panel-wide{border:1px solid #e3eeef}.card-title{white-space:normal}.topbar-close{display:none}.rt-scroll,.rt{width:100%}.rt-scroll{margin-top:20px}.rt{border:0;border-top:1px solid #e3e3e3;border-radius:0;background:#fff}.rt-head{display:none}.rt-row,.rt-row:nth-child(2n){display:grid;grid-template-columns:1fr 1fr auto;gap:4px 8px;padding:14px 2px;background:#fff;border-bottom:1px solid #ececec}.rt-row:hover{background:#f6f6f6}.rt-cell{width:auto!important;padding:0;border:0;font-size:14px}.rt-cell:nth-child(1){grid-column:1;grid-row:2;color:#777}.rt-cell:nth-child(2){display:none}.rt-cell:nth-child(3){grid-column:1;grid-row:1}.rt-cell:nth-child(4){grid-column:2 / 4;grid-row:1}.rt-cell:nth-child(4):before{content:"→ ";color:#999}.rt-cell:nth-child(5){grid-column:2;grid-row:2;color:var(--primary-dark)}.rt-cell:nth-child(6){grid-column:3;grid-row:2;line-height:16px}.rt-foot{min-height:72px;padding:16px 0;justify-content:center;border-top:0;background:#fff}.rt-pages{gap:8px}.rt-page{color:#555;text-shadow:none;background:#fff}.btn-wide{height:46px;background:#fff;border:1.5px solid var(--primary);color:var(--primary-dark)}.btn-wide:hover{background:#e0f2f1}.btn-wide+.btn-wide{margin-top:14px}.topbar-links{display:none}.topbar-text{margin-right:auto}.page{padding:40px 16px 48px}.login-card,.panel{padding:28px 22px}.card-title,.track-title{font-size:24px;line-height:36px}.panel-wide{padding:22px 16px}.dash{margin-top:0}}.quick-nav{display:flex;flex-wrap:wrap;margin-bottom:18px;border:1px solid #b0b8bc;border-radius:6px;background:#fff;overflow:hidden}.quick-nav button{flex:1 1 auto;height:38px;padding:0 12px;border:0;background:none;color:#263238;font:inherit;font-size:15px;cursor:pointer}.quick-nav button+button{border-left:1px solid #d5dadd}.quick-nav button:hover{background:#f1f5f5;color:var(--primary-dark)}.locked{display:flex;flex-direction:column;align-items:center;gap:8px;width:520px;max-width:100%;margin:28px auto 0;padding:22px 20px;border:1px dashed #b0b8bc;border-radius:8px;background:#fff;color:#455a64}.locked p{display:flex;flex-direction:column;gap:2px;margin:0;font-size:15px}.signed-in{display:flex;flex-direction:column;align-items:center;gap:2px;margin:0 0 6px;text-align:center}.signed-in strong{color:var(--primary-dark);font-size:18px}.btn-block-plain{display:block;width:100%;height:42px}:root{--rule: #d5dadd;--rule-strong: #b0b8bc;--head-bg: #2f4f4b;--row-alt: #f7f8f9;--ink: #263238;--ink-soft: #607d8b}.doc-table{width:100%;border-collapse:collapse;border:1px solid var(--rule-strong);background:#fff;color:var(--ink);font-size:15px;font-variant-numeric:tabular-nums}.doc-table th,.doc-table td{padding:8px 10px;border:1px solid var(--rule);text-align:left;vertical-align:middle}.doc-table thead th{background:var(--head-bg);border-color:var(--head-bg);color:#fff;font-size:14px;font-weight:700;letter-spacing:.2px}.doc-table tbody tr:nth-child(2n) td{background:var(--row-alt)}.doc-table .col-no{width:44px;text-align:center;color:var(--ink-soft)}.doc-table .col-dorm{width:110px;white-space:nowrap}.doc-table .col-role{width:96px;color:var(--ink-soft);font-size:14px;white-space:nowrap}.doc-table .col-phone{width:128px;white-space:nowrap}.doc-table tr.is-head td{font-weight:700}.dorm-cell{display:inline-flex;align-items:center;gap:6px;color:var(--ink);font-weight:700}.dorm-cell svg{color:var(--ink-soft)}.dorm-table-today .dorm-name{font-weight:400;white-space:nowrap}.tel{display:inline-flex;align-items:center;gap:5px;color:var(--ink);text-decoration:none}.tel svg{color:var(--ink-soft)}.tel:hover{color:var(--primary-dark);text-decoration:underline}.note-tag{margin-left:6px;padding:0 5px;border:1px solid var(--rule-strong);border-radius:3px;color:var(--ink-soft);font-size:12px;font-weight:400}.dorms{padding:0;border:0;border-radius:0;background:none}.dorms-title{margin:6px 0 10px;color:var(--ink);font-size:17px;font-weight:700}.daily-note{margin:-6px 0 10px}.btn-copy{margin-top:12px;border-color:var(--rule-strong);color:var(--ink);font-weight:400}.view-switch{gap:0;padding:0;border:1px solid var(--rule-strong);border-radius:6px;background:#fff;overflow:hidden}.view-switch button{height:40px;border-radius:0;color:var(--ink);font-weight:400}.view-switch button+button{border-left:1px solid var(--rule-strong)}.view-switch button.on{background:var(--head-bg);color:#fff;font-weight:700;box-shadow:none}.group-chip,.group-chip.wide{min-width:0;padding:0;border-radius:0;background:none;color:var(--ink);font-weight:700}.cal{gap:0;border-top:1px solid var(--rule-strong);border-left:1px solid var(--rule-strong)}.cal-head{padding:6px 0;border-right:1px solid var(--rule-strong);border-bottom:1px solid var(--rule-strong);background:var(--head-bg);color:#fff;font-size:13px}.cal-cell{align-items:flex-start;min-height:64px;padding:6px 8px;border:0;border-right:1px solid var(--rule);border-bottom:1px solid var(--rule);border-radius:0;background:#fff;text-align:left}.cal-cell:nth-child(7n+1),.cal-cell:nth-child(7n+7){background:var(--row-alt)}.cal-empty{border-right:1px solid var(--rule);border-bottom:1px solid var(--rule);background:#fbfbfb}.cal-off{color:#b0b8bc}.cal-day{color:var(--ink);font-size:14px}.cal-group{padding:0;border-radius:0;background:none;color:var(--ink-soft);font-size:13px;font-weight:400}.cal-today{outline:none;box-shadow:inset 0 3px 0 var(--primary-dark)}.cal-today .cal-day{color:var(--primary-dark)}.cal-picked{box-shadow:inset 0 0 0 2px var(--head-bg)}.cal-today.cal-picked{box-shadow:inset 0 3px 0 var(--primary-dark),inset 0 0 0 2px var(--head-bg)}.day-panel{padding:0;border:0;border-radius:0;background:none}.day-panel .section-title{color:var(--ink)}.roster-table{border:1px solid var(--rule-strong);font-variant-numeric:tabular-nums}.roster-table th{background:var(--head-bg);border-color:var(--head-bg);color:#fff}.roster-table td,.roster-table th{border-color:var(--rule)}.roster-table tr.group-first td{border-top:2px solid var(--rule-strong)}.roster-table .today-day{border-radius:0;background:none;color:var(--primary-dark);text-decoration:underline;text-underline-offset:3px}.roster-table tr.student td{color:var(--ink-soft);font-style:italic}@media (max-width: 600px){.doc-table{font-size:14px}.doc-table th,.doc-table td{padding:7px 6px}.doc-table .col-dorm{width:86px}.doc-table .col-role{display:none}.doc-table .col-phone{width:auto}.dorm-table-today .dorm-name{white-space:normal}.cal-cell{min-height:50px;padding:4px}.cal-group{font-size:11px}}
