:root{font-family:system-ui,-apple-system,"PingFang HK","Noto Sans TC",sans-serif;color:#173325;background:#f0f5f1;font-synthesis:none}*{box-sizing:border-box}body{margin:0}button,input{font:inherit}button{cursor:pointer;border:1px solid #cedbd1;border-radius:12px;background:white;color:#234d32;padding:12px 16px;font-weight:650;min-height:44px}button:hover{background:#edf5ee}button:disabled{opacity:.5;cursor:wait}button:focus-visible,input:focus-visible{outline:3px solid #69a983;outline-offset:2px}[hidden]{display:none!important}.app{max-width:650px;min-height:100vh;margin:auto;background:#fff;padding:24px}header{display:flex;align-items:center;gap:14px;border-bottom:1px solid #e2ebe4;padding:4px 0 24px;margin-bottom:22px}header img{border-radius:12px}h1{font-size:24px;margin:0}header p{font-size:13px;color:#68816f;margin:5px 0 0}h2{font-size:19px;margin:24px 0 14px}.panel{padding:20px;border:1px solid #dce7de;border-radius:18px}.panel h2{margin-top:0}.muted{font-size:13px;color:#65786b;line-height:1.7}.primary{background:#166534;color:#fff;border-color:#166534}.primary:hover{background:#14532d}.secondary{width:100%;margin-top:24px}.actions,.toolbar{display:flex;gap:10px;align-items:center;justify-content:space-between}.actions .primary{flex:1}.toolbar{margin-bottom:20px}.toolbar span{overflow-wrap:anywhere}.small{font-size:13px;white-space:nowrap}label{display:block;margin:18px 0;font-size:14px;font-weight:600}input{width:100%;display:block;padding:12px;margin-top:8px;border:1px solid #c8d6cc;border-radius:10px;background:white;color:#163824;min-height:46px}.list{display:grid;gap:10px}.record{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px;border:1px solid #d9e4dc;border-left:5px solid var(--house,#94a39a);border-radius:12px;background:var(--tint,#f8faf8)}.record strong{display:block;line-height:1.5}.record p{margin:6px 0 0;font-size:13px;color:#53695b}.record button{white-space:nowrap}.history{font-size:14px}.count{font-size:13px;background:#e6f1e8;padding:4px 9px;border-radius:30px}.empty{padding:24px;text-align:center;background:#f8faf8;border-radius:12px;color:#718477;font-size:14px}.student-card{padding:14px;border-left:5px solid var(--house,#94a39a);background:var(--tint,#f8faf8);border-radius:8px;margin-bottom:20px}#message,.notice{padding:14px;border-radius:12px;margin:0 0 18px;font-size:14px;line-height:1.6;background:#ecf6ed;border:1px solid #c3ddc8}#message.error{background:#fff0ee;border-color:#efc6c0;color:#8a2920}.notice{background:#fff9e8;border-color:#e7d7a5}.house-row{padding:12px;border:1px solid #e2ebe4;border-radius:10px}.house-row .actions{margin-top:8px}footer{text-align:center;color:#819086;font-size:12px;padding:32px 0 8px}@media(max-width:460px){.app{padding:16px}.panel{padding:16px}h1{font-size:21px}.record{padding:12px}.actions button{padding:12px}header{padding-bottom:18px}}

.record-actions{display:flex;flex-direction:column;gap:8px;flex-shrink:0}.danger{color:#a52b23;border-color:#e9c6c2}.teacher-label{font-weight:650}#houseFilter{padding:4px 16px;background:#f4f8f4;border-radius:12px;margin-bottom:18px}#deletedSection{margin-top:24px}summary{cursor:pointer;font-size:14px;color:#6b786d;padding:12px 0}#teacherInitials{text-transform:uppercase}

.choice-field{border:0;padding:0;margin:22px 0;min-width:0}.choice-field legend{font-size:14px;font-weight:650;margin-bottom:10px;padding:0}.choice-grid{display:grid;gap:10px;grid-template-columns:repeat(3,minmax(0,1fr))}.house-grid,.size-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.item-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.choice-tile{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;min-height:64px;padding:14px 8px;border:2px solid #dce6df;background:var(--tint,#fff);color:#244631;transition:border-color .12s,box-shadow .12s}.choice-tile:hover{border-color:var(--house,#5a8d6c);background:var(--tint,#f1f7f2)}.choice-tile.selected{border-color:var(--house,#166534);box-shadow:0 0 0 1px var(--house,#166534);background:var(--tint,#eaf5ed)}.choice-tile.selected::after{content:'✓';position:absolute;right:5px;top:2px;font-size:12px;color:var(--house,#166534);font-weight:800}.choice-title{font-size:17px;font-weight:750}.choice-detail{font-size:13px;line-height:1.5;font-weight:500;overflow-wrap:anywhere}.student-grid .choice-tile{min-height:82px}.choice-tile:disabled{cursor:not-allowed}.choice-empty{grid-column:1/-1;margin:0;padding:16px;background:#f7f9f7;border-radius:10px;color:#6a7e70;font-size:14px;line-height:1.7}.house-choice-controls{margin-top:12px}.house-choice-controls>button{display:block;margin:12px 0 0 auto}.house-grid .choice-title{font-size:15px}#houseFilter .choice-field{margin:16px 0 10px}@media(max-width:380px){.student-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.choice-grid{gap:8px}.house-grid .choice-tile{padding:12px 4px}.house-grid .choice-title{font-size:14px}}

/* Soft house colours, with matching full-card student backgrounds. */
.house-grid .choice-tile{background:var(--tint);border-color:transparent;color:#244631;opacity:1}
.house-grid .choice-tile:hover{background:var(--tint);border-color:var(--house)}
.house-grid .choice-tile.selected{background:var(--tint);border-color:var(--house);box-shadow:0 0 0 1px var(--house)}
.house-grid .choice-tile.selected::after{color:var(--house);font-size:16px;right:7px;top:3px}
.student-card[data-house]:not([data-house=""]){background:var(--tint);color:#244631;border:2px solid var(--house);padding:20px;font-size:20px;font-weight:750;line-height:1.65;box-shadow:0 4px 12px #12331b0a}
.student-grid .choice-tile.selected[data-house]:not([data-house=""]){background:var(--tint);color:#244631}
.student-grid .choice-tile.selected::after{color:var(--house)}
.pass-grid{grid-template-columns:repeat(5,minmax(0,1fr))}.pass-grid .choice-tile{min-height:112px;background:#e4f8e8;border-color:#83bf92}
.pass-grid .choice-tile.selected{background:#008638;color:#fff;border-color:#005721}.pass-grid .choice-tile.selected::after{color:#fff}
.pass-grid .choice-tile.occupied,.pass-grid .choice-tile.occupied:disabled{background:#374151;color:#fff;border-color:#374151;opacity:1;cursor:not-allowed;box-shadow:none}
.pass-grid .choice-detail{font-size:12px;line-height:1.5}.pass-grid .choice-title{font-size:16px}.pass-grid .choice-tile:disabled:not(.occupied){opacity:.55}
@media(max-width:500px){.pass-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.pass-grid .choice-tile{min-height:105px}}

#loginForm label{margin-bottom:8px}.password-field{position:relative;margin-bottom:18px}.password-field input{margin-top:0;padding-right:58px}.password-toggle{position:absolute;right:3px;top:50%;transform:translateY(-50%);display:flex;align-items:center;justify-content:center;min-width:44px;min-height:40px;padding:8px;border:0;background:transparent;border-radius:8px}.password-toggle:hover{background:#edf5ee}

/* Compact choices and a two-column record layout. */
.choice-field{margin:12px 0}.choice-field legend{margin-bottom:6px}.choice-grid{gap:5px}.choice-tile,.house-grid .choice-tile{min-height:38px;padding:6px 5px;gap:2px;border-radius:8px}.choice-title{line-height:1.15}.choice-detail{line-height:1.2}.student-grid .choice-tile{min-height:48px}.pass-grid .choice-tile{min-height:54px}.pass-grid .choice-detail{line-height:1.2}.choice-empty{padding:8px;line-height:1.3}.student-card,.student-card[data-house]:not([data-house=""]){padding:8px 10px;margin-bottom:10px;line-height:1.3;font-size:18px}#houseFilter{padding:2px 10px;margin-bottom:10px}#houseFilter .choice-field{margin:10px 0 6px}#houseNotice{margin:6px 0}.panel{padding:14px}h2{margin:16px 0 8px}.list{gap:6px}.record{display:grid;grid-template-columns:minmax(0,1fr) 88px;gap:4px 8px;padding:10px 12px;border-radius:10px;align-items:center}.record-info,.record-actions{display:contents}.record .record-heading{grid-column:1/-1;font-size:20px;line-height:1.25;overflow-wrap:anywhere;margin:0 0 3px}.record p{grid-column:1;margin:0;line-height:1.3;font-size:13px}.record .record-time{grid-row:2;padding:6px 8px;background:#ffffff85;border:1px solid #ffffff;border-radius:7px;font-size:14px}.record .record-return{grid-column:2;grid-row:2}.record .record-remove{grid-column:2;grid-row:3;font-size:12px;min-height:30px;padding:4px 8px}.record button{min-height:34px;padding:5px 10px;border-radius:8px}.record-filter{margin:10px 0}.record-filter .choice-title{font-size:19px}.record-filter .choice-tile{min-height:40px}#newBorrow{font-size:20px;padding:9px 12px}.house-row{padding:8px}.house-choice-controls{margin-top:6px}.house-choice-controls>button{margin-top:6px}.teacher-label{font-size:12px!important}@media(max-width:380px){.record{padding:8px;grid-template-columns:minmax(0,1fr) 76px}.record .record-heading{font-size:18px}.record .record-time{font-size:12px}.house-grid .choice-tile{padding:6px 3px}}

.choice-grid:not(.house-grid) .choice-tile:not(.selected):not(.occupied){background:#fff}.choice-grid:not(.house-grid) .choice-tile.selected{background:var(--tint,#eaf5ed);border-color:var(--house,#166534);color:#244631}.choice-grid:not(.house-grid) .choice-tile.selected::after{color:var(--house,#166534)}.record .record-edit{grid-column:2;grid-row:3;font-size:12px;min-height:30px;padding:4px 8px}.record:has(.record-edit) .record-remove{grid-row:4}

.record .teacher-label{grid-row:3}.record .record-status{grid-row:4}.record .record-returned-teacher{grid-row:5}.record .record-return{font-size:13px;white-space:normal;line-height:1.2}.record.history{font-size:inherit}

/* Three columns: borrowing, return details, actions. */
.record{grid-template-columns:minmax(0,1fr) minmax(0,1fr) 88px;align-items:start;gap:6px 8px}.record .record-heading{grid-row:1}.record-borrowed,.record-returned{grid-row:2;min-width:0;padding:7px 8px;background:#ffffff75;border:1px solid #ffffffb0;border-radius:7px;align-self:stretch}.record-borrowed{grid-column:1}.record-returned{grid-column:2}.record .record-actions{display:flex;flex-direction:column;gap:4px;grid-column:3;grid-row:2;align-self:start}.record .record-actions button{width:100%;margin:0;padding:5px 4px;min-height:30px}.record .record-edit{order:1}.record .record-remove{order:2}.record .record-time,.record .record-status{background:none;border:0;padding:0;margin:0 0 5px;font-size:13px;line-height:1.4}.record .teacher-label,.record .record-returned-teacher{font-size:12px;line-height:1.4;overflow-wrap:anywhere}.record .record-deleted-meta{grid-column:1/-1;grid-row:3;font-size:12px}@media(max-width:380px){.record{grid-template-columns:minmax(0,1fr) minmax(0,1fr) 72px;gap:5px;padding:8px}.record-borrowed,.record-returned{padding:5px}.record .record-time,.record .record-status{font-size:12px}.record .record-actions button{font-size:12px}}

.record .record-duration{margin-top:5px;font-size:14px;font-weight:750;line-height:1.35;color:#173325;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}@media(max-width:380px){.record .record-duration{font-size:12px}}

#pullRefresh{position:fixed;z-index:1000;top:calc(env(safe-area-inset-top,0px) + 12px);left:50%;transform:translateX(-50%);padding:10px 18px;border-radius:24px;background:#166534;color:white;box-shadow:0 3px 14px #0002;font-size:14px;font-weight:650;pointer-events:none}#pullRefresh.pull-bottom{top:auto;bottom:calc(env(safe-area-inset-bottom,0px) + 20px)}.refresh-hint{display:inline-block;margin-top:6px;font-size:11px}

.record .record-column-title{font-size:14px;font-weight:750;line-height:1.3;margin:0 0 3px;color:#173325}.record .record-returned-teacher{font-weight:650}.record .record-time,.record .record-status{margin-bottom:3px}.record .record-duration{margin-top:3px}

.record-heading-row{grid-column:1/-1;grid-row:1;display:flex;align-items:center;justify-content:space-between;gap:8px;min-width:0;margin-bottom:3px}.record .record-heading-row .record-heading{flex:1;min-width:0;margin:0}.record .record-heading-row .record-duration{flex:0 0 auto;margin:0;padding:5px 8px;border:1px solid var(--house,#94a39a);border-radius:8px;background:#ffffffb0;white-space:nowrap;line-height:1.25;font-size:14px;text-align:center}@media(max-width:380px){.record .record-heading-row .record-duration{font-size:12px;padding:5px 6px}}
