/* Official university logo is used unaltered. Presentation only. */
:root{--ink:#172d4f;--muted:#64748b;--green:#2458a0;--line:#e1e8f1;--bg:#f4f7fb}
body{background:var(--bg);font-family:system-ui,-apple-system,"Noto Sans KR",sans-serif;letter-spacing:-.025em}
header{position:sticky;top:0;z-index:20;min-height:88px;padding:18px max(24px,calc((100vw - 1200px)/2));background:rgba(255,255,255,.96);box-shadow:0 3px 18px #172d4f06;backdrop-filter:blur(12px);gap:20px}
.brand{display:flex;align-items:center;gap:22px;flex-shrink:0}
.knu-logo{display:block;width:205px;height:auto;object-fit:contain}
.brand-divider{height:34px;width:1px;background:var(--line)}
.brand-name{font-size:15px;letter-spacing:-.035em;line-height:1.4;white-space:nowrap}
.brand-name small{display:block;font-size:9px;letter-spacing:.12em;color:var(--muted);font-weight:600;margin-top:4px}
.chip{background:#edf3fc;color:#31588e;padding:5px 11px;font-size:10px;letter-spacing:.01em;white-space:nowrap}
#identity{white-space:nowrap;font-weight:600}
#logout{font-size:12px;padding:8px 13px}
main{max-width:1200px;padding:30px 24px 0}
.intro{position:relative;overflow:hidden;margin-bottom:18px;padding:18px 24px;border-radius:16px;color:#fff;background:linear-gradient(115deg,#142d50,#214b80);box-shadow:0 12px 30px #18375812}
.intro::after{content:"";position:absolute;right:-40px;top:-110px;width:340px;height:340px;border:1px solid #ffffff18;border-radius:50%;box-shadow:0 0 0 52px #ffffff05,0 0 0 104px #ffffff03;pointer-events:none}
.intro .eyebrow{color:#b8cdeb;font-size:10px;letter-spacing:.2em;margin:0 0 12px;font-weight:700}
.intro h1{font-size:26px;font-weight:750;line-height:1.3;margin:0;letter-spacing:-.045em}
.intro>p:last-child{display:none}
h2{font-size:18px;letter-spacing:-.035em}
button,.button{border-radius:10px;min-height:42px;transition:background .15s,border-color .15s,box-shadow .15s;font-weight:600;font-size:13px}
button:hover,.button:hover{background:#f0f5fd;border-color:#9cb7de;box-shadow:0 3px 10px #213d6810}
button:focus-visible,.button:focus-visible,a:focus-visible{outline:3px solid #e9903c;outline-offset:3px}
.primary{background:#2458a0;border-color:#2458a0;box-shadow:0 3px 8px #2458a020}
.primary:hover{background:#194882;border-color:#194882;color:#fff}
.out{background:#fff8f1;border-color:#f1dfc9;color:#925516}
.out:hover{background:#ffefdc;border-color:#e3bb83}
button:disabled{opacity:.45;cursor:not-allowed;box-shadow:none}
.own-status{display:flex;align-items:center;padding:16px 20px;background:#eaf1fb;border:1px solid #d6e3f4;border-radius:12px;color:#285184;font-size:13px;line-height:1.7;margin:0 0 22px}
.own-status::before{content:"";width:8px;height:8px;border-radius:50%;background:#3f78bf;flex-shrink:0;margin-right:12px}
.metrics{background:none;border:0;gap:14px;margin-bottom:30px}
.metrics>div{position:relative;border:1px solid var(--line)!important;border-radius:14px;padding:20px 22px;background:#fff;box-shadow:0 3px 12px #172d4f04}
.metrics>div::before{content:"";position:absolute;top:20px;right:20px;width:6px;height:6px;border-radius:50%;background:#cad9ec}
.metrics span{font-size:12px;color:#64748b;font-weight:600}
.metrics strong{font-size:32px;line-height:1.4;margin-top:9px;font-weight:750;color:#214d86}
.metrics .small{font-size:14px;margin-top:18px;line-height:1.6}
.section-heading{margin-bottom:17px}
.section-heading h2{font-size:19px}
.rooms{gap:18px}
.room{position:relative;overflow:hidden;border-radius:16px;padding:24px;border:1px solid var(--line);box-shadow:0 4px 15px #172d4f05}
.room::before{content:"";position:absolute;left:0;right:0;top:0;height:4px;background:#2c5d9f}
.room:nth-child(2)::before{background:#4c8796}
.room:nth-child(3)::before{background:#d5924a}
.room .code{display:inline-block;background:#f0f4fa;color:#5a7395;border-radius:5px;padding:3px 7px;margin-bottom:12px;font-size:9px;font-weight:750;letter-spacing:.13em}
.room h3{font-size:23px;letter-spacing:-.04em}
.room .people{min-height:95px;margin:18px 0}
.room .actions button{min-height:44px}
.room a{font-weight:600;color:#5b7090;font-size:11px}
.person{font-size:13px;border-color:#edf1f7}
.person .small-btn{margin-left:auto;font-size:13px;padding:8px 12px;min-height:44px}
.small-btn{font-size:13px;padding:8px 12px;min-height:44px}
.room.focus{outline:3px solid #5486c8;outline-offset:3px;box-shadow:0 0 0 8px #5486c81f,0 4px 15px #172d4f05}
.panel{padding:26px;border-radius:18px;border-color:var(--line);box-shadow:0 4px 18px #172d4f04;margin:26px 0}
.panel.narrow{max-width:490px;padding:30px;margin:28px auto}
.narrow h2{font-size:21px}
.narrow>p{color:var(--muted);font-size:13px;line-height:1.8}
.narrow form>.primary{width:100%;min-height:46px;margin-top:10px}
input,select,textarea{border-color:#d8e1ed;background:#fbfcfe;border-radius:9px}
input:focus,select:focus,textarea:focus{outline:2px solid #85a9da;background:#fff}
label{font-size:12px;color:#405573}
.equipment-card,.log-card,.equipment-manage-card{border-color:#e3eaf3;border-radius:13px;padding:20px;background:#fcfdff}
.equipment-card h3,.log-card h3,.equipment-manage-card h3{color:#203e64;font-size:17px}
.log-card>p{font-size:13px;line-height:1.8}
.log-duration{color:#285b9d;background:#edf3fc;display:inline-block;padding:3px 9px;border-radius:6px;font-size:12px!important}
.readonly-comment{color:#65758a}
.equipment-grid{gap:18px}
.table-wrap{border:1px solid #e7edf5;border-radius:10px}
th{background:#f5f8fc;padding:12px 14px;color:#59708d}
td{padding:13px 14px;color:#405573}
tbody tr:last-child td{border-bottom:0}
tbody tr:hover{background:#f7faff}
.roadmap{background:#eef3fb;border-color:#dce7f6;box-shadow:none}
.roadmap p{font-size:13px;color:#5c7392;line-height:1.8}
#message{border:1px solid #cbded3;background:#edf7f0;color:#24583c;font-size:13px}
#message.error{border-color:#efd1c8;background:#fff4ef}
#tag-note{background:#fff8e9;border:1px solid #efdfb9;color:#805f25;font-size:13px;line-height:1.8}
dialog{border-radius:18px;box-shadow:0 24px 80px #142d5030}
dialog p{font-size:14px;line-height:1.8;color:#61718a}
dialog::backdrop{background:#0d254b66;backdrop-filter:blur(3px)}
footer{border-top:1px solid #e1e8f1;margin-top:32px;padding:24px 0;color:#72839b;font-size:11px}
@media(max-width:1050px){header{gap:12px;padding:16px 24px}.knu-logo{width:170px}.brand{gap:15px}.chip{font-size:9px;padding:4px 9px}.brand-name{font-size:13px}.brand-name small{font-size:8px}}
@media(max-width:740px){header{padding:14px 16px;min-height:76px;gap:10px}.brand{gap:12px}.knu-logo{width:140px}.brand-divider{height:27px}.brand-name{font-size:12px}.brand-name small{font-size:7px;letter-spacing:.06em}#identity{font-size:11px}#logout{font-size:12px;min-height:44px;padding:8px 12px}main{padding:20px 16px 0}.intro{padding:14px 18px;border-radius:14px}.intro h1{font-size:22px}.intro>p:last-child{font-size:12px}.intro::after{width:230px;height:230px;right:-120px}.metrics{gap:10px}.metrics>div{padding:16px}.metrics strong{font-size:28px}.metrics .small{font-size:12px}.panel{padding:19px}.panel.narrow{padding:24px}.room{padding:22px}.room .people{min-height:45px}.own-status{padding:13px 15px;font-size:12px}.duration-fields{grid-template-columns:1fr}.equipment-card,.log-card,.equipment-manage-card{padding:17px}footer span{float:none;display:block;margin-top:6px}}
@media(max-width:440px){header{gap:9px}.brand{flex:1 1 100%;gap:14px}.knu-logo{width:156px}#identity{margin-left:0;flex:1}.intro h1{font-size:26px}}
@media(prefers-reduced-motion:reduce){button,.button{transition:none}html{scroll-behavior:auto}}
/* Tabs */
.tabs{display:flex;gap:8px;flex-wrap:wrap;margin:4px 0 6px}
.tabs .tab{background:#fff;border:1px solid var(--line);border-radius:999px;padding:9px 20px;font-weight:700;font-size:13px;color:#5a7395;min-height:0}
.tabs .tab:hover{border-color:#9cb7de;color:#2458a0;background:#fff}
.tabs .tab.active{background:#2458a0;border-color:#2458a0;color:#fff;box-shadow:0 3px 8px #2458a020}
/* Manual */
.manual-frame{width:min(860px,88vw);height:70vh;border:1px solid var(--line);border-radius:10px;background:#fff}
#manual-viewer{max-width:96vw}
.manual-box{display:flex;gap:8px;flex-wrap:wrap;align-items:flex-end;margin-top:12px;padding-top:12px;border-top:1px dashed var(--line)}
.manual-box label{margin:0}
.manual-box input[type=file]{margin-top:6px;display:block}
/* Notices */
.notice-card{border:1px solid var(--line);border-radius:10px;padding:12px 14px;margin:8px 0;background:#fff}
.notice-title{background:none;border:none;padding:0;font-size:15px;font-weight:700;color:var(--ink);cursor:pointer;text-align:left;min-height:0}
.notice-title:hover{text-decoration:underline}
/* Maintenance due */
.due-box{border:1px solid #f0b429;background:#fff8e6;border-radius:10px;padding:12px 14px;margin:12px 0}
.due-box h3{margin:0 0 8px}
.due-over{color:#b3261e;font-weight:700}
.due-soon{color:#7a4d00}
/* Training */
.training-row{display:flex;gap:10px;align-items:center;padding:8px 0;border-bottom:1px solid var(--line)}
.training-row input[type=checkbox]{width:20px;height:20px}
.training-row .muted{margin-left:auto;font-size:12px;color:var(--muted)}
.muted{color:var(--muted)}
.small{font-size:12px}
/* Charts */
.chart{width:100%;max-width:720px;display:block;margin:8px 0 20px}
/* Dialogs */
dialog{border:1px solid var(--line);border-radius:14px;padding:20px;max-width:520px;width:92vw}
dialog::backdrop{background:rgba(0,0,0,.35)}
dialog h2{margin-top:0}
dialog textarea{width:100%;box-sizing:border-box;border:1px solid var(--line);border-radius:8px;padding:8px;font:inherit}
dialog input[type=datetime-local],dialog input[type=text],dialog input:not([type]){width:100%;box-sizing:border-box}
/* Table tools */
.table-tools{display:flex;flex-wrap:wrap;gap:10px;margin:2px 0 14px}
.notice-title{display:block;width:100%;text-align:left;min-height:44px;padding:10px 12px;font-size:15px;font-weight:700;line-height:1.4}
.filter-label{align-self:center;font-size:13px;font-weight:700;color:var(--muted);white-space:nowrap}
#reserve-equipment{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px}
#reserve-equipment h3{grid-column:1/-1;margin:18px 0 2px}
#reserve-equipment .notice-card{margin:0;display:flex;flex-direction:column}
#reserve-equipment .notice-card button{margin-top:auto}
.warn-box{background:#fdf0e8;border:1px solid #f0c9a8;border-radius:14px;padding:16px 18px;margin:0 0 18px}
.warn-box h3{margin:0 0 8px;color:#925516}
.warn-box p{margin:4px 0}
.day-timeline{border-top:1px solid #edf2ef;margin-top:10px;padding-top:8px}
.day-timeline p{margin:3px 0}
.table-tools input{max-width:300px;margin-top:0}
/* Mobile: tables become cards */
@media(max-width:740px){
 .table-wrap table,.table-wrap tbody,.table-wrap tr,.table-wrap td{display:block;width:100%}
 .table-wrap thead{display:none}
 .table-wrap tr{border:1px solid var(--line);border-radius:12px;margin-bottom:12px;padding:4px 6px;background:#fff}
 .table-wrap td{border:0;white-space:normal;display:flex;justify-content:space-between;align-items:center;gap:12px;padding:9px 10px;text-align:right}
 .table-wrap td::before{content:attr(data-label);font-weight:700;color:var(--muted);font-size:12px;flex-shrink:0;text-align:left}
 .table-wrap td[data-label=""]::before{content:none}
 .table-wrap td button{margin:2px 0 2px 6px}
}
.report-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}.report-grid>button[type=submit]{grid-column:1/-1;justify-self:start;min-width:170px}.report-actions{display:flex;gap:10px;flex-wrap:wrap}@media(max-width:650px){.report-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:400px){.report-grid{grid-template-columns:1fr}}
.settings-only #workspace> :not(#personal-settings){display:none!important}#personal-settings>a.button{display:inline-block;margin-bottom:22px}#personal-settings>h3,#mode-controls>h3,#alert-admin>h3{margin-top:28px}#alert-form input[type=checkbox]{width:auto}#personal-settings button{margin:4px 4px 4px 0}
.badge{display:inline-block;font-size:11px;font-weight:700;color:#1a5fb4;background:#e3f0ff;border-radius:20px;padding:2px 9px;margin-left:8px;vertical-align:middle}
.stepper{display:flex;align-items:center;gap:10px;margin:10px 0}
.stepper button{width:40px;height:40px;border-radius:10px;border:1px solid #c9d8ea;background:#fff;font-size:22px;line-height:1;color:#203e64;cursor:pointer}
.stepper button:hover:not(:disabled){background:#eef4fb}
.stepper button:disabled{opacity:.35;cursor:default}
.stepper strong{font-size:24px;color:#203e64;min-width:44px;text-align:center}
.stepper span{color:#5a6b82;font-size:14px}
.badge.warn{color:#8a5a00;background:#fff3d6}
.stepper.compact{gap:6px;margin:0}
.stepper.compact button{width:32px;height:32px;font-size:18px;border-radius:8px}
.table-tools .check{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:#5a6b82;white-space:nowrap}
.table-tools .check input{width:auto;margin:0}
dialog h4{margin:16px 0 8px;color:#203e64}
dialog form{display:flex;flex-direction:column;gap:10px;margin:12px 0}
dialog>label{display:block;margin:10px 0}
dialog>button,dialog>a.button{margin:6px 6px 6px 0}
