:root{--bg:#f3f5f9;--surface:#fff;--surface-soft:#f7f8fb;--text:#18202f;--muted:#697386;--line:#e4e8f0;--primary:#5b5bd6;--primary-deep:#4949bd;--primary-soft:#efefff;--success:#18855b;--success-soft:#e9f8f1;--warning:#9a6700;--warning-soft:#fff6d8;--danger:#c03945;--danger-soft:#fff0f1;--shadow:0 14px 42px #222a421a}*{box-sizing:border-box}html{background:var(--bg)}body{color:var(--text);background:var(--bg);margin:0;font-family:Arial,Noto Sans KR,sans-serif}button,input,select,textarea{font:inherit}button,a{-webkit-tap-highlight-color:transparent}a{color:inherit;text-decoration:none}.register-shell{background:linear-gradient(145deg,#eef0ff,#f7f8fb 52%,#eef6ff);place-items:center;min-height:100vh;padding:24px;display:grid}.register-phone{background:var(--surface);width:min(100%,440px);min-height:min(850px,100vh - 48px);box-shadow:var(--shadow);border-radius:36px;overflow:hidden}.register-hero{text-align:center;color:#fff;background:linear-gradient(135deg,#595bd8,#814fc5 55%,#3277d5);padding:38px 28px 70px}.register-hero-icon{background:#ffffff2e;border-radius:18px;place-items:center;width:62px;height:62px;margin:0 auto 14px;display:grid}.register-hero h1{margin:0;font-size:24px}.register-hero p{color:#ffffffd1;margin:7px 0 0;font-size:14px}.register-body{margin-top:-38px;padding:0 22px 28px;position:relative}.capture-card{border:1px solid var(--line);background:var(--surface);box-shadow:var(--shadow);border-radius:28px;padding:12px}.capture-area{background:var(--surface-soft);cursor:pointer;text-align:center;border:1px dashed #cfd5e2;border-radius:22px;place-items:center;min-height:310px;padding:24px;display:grid;overflow:hidden}.capture-area input{display:none}.capture-prompt strong{margin-top:18px;font-size:19px;display:block}.capture-prompt span{color:var(--muted);margin-top:8px;font-size:13px;line-height:1.6;display:block}.camera-circle{width:88px;height:88px;color:var(--primary);background:var(--surface);border-radius:50%;place-items:center;margin:auto;display:grid;box-shadow:0 8px 24px #222a421f}.preview-image{object-fit:cover;border-radius:16px;width:100%;height:310px}.form-panel{border:1px solid var(--line);background:var(--surface);border-radius:24px;margin-top:16px;padding:20px}.form-title{margin:0 0 6px;font-size:19px}.form-help{color:var(--muted);margin:0 0 18px;font-size:13px;line-height:1.5}.field-grid{grid-template-columns:1fr 1fr;gap:14px;display:grid}.field{gap:7px;display:grid}.field.full{grid-column:1/-1}.field label{color:#4f596b;font-size:13px;font-weight:700}.input{width:100%;min-height:46px;color:var(--text);background:var(--surface);border:1px solid #d7dce7;border-radius:12px;outline:none;padding:0 13px}.input:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}.segmented{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.segment{border:1px solid var(--line);min-height:42px;color:var(--muted);background:var(--surface-soft);cursor:pointer;border-radius:11px}.segment.active{color:var(--primary-deep);border-color:var(--primary);background:var(--primary-soft);font-weight:700}.primary-button,.secondary-button,.danger-button{cursor:pointer;border-radius:13px;justify-content:center;align-items:center;gap:8px;min-height:48px;padding:0 18px;font-weight:700;display:inline-flex}.primary-button{color:#fff;background:linear-gradient(90deg,#595bd8,#794fc2);border:0;width:100%;margin-top:16px}.primary-button:disabled{opacity:.55;cursor:not-allowed}.secondary-button{border:1px solid var(--line);color:var(--text);background:var(--surface)}.danger-button{color:var(--danger);background:var(--danger-soft);border:1px solid #f1c6ca}.inline-alert{border-radius:12px;margin-top:14px;padding:12px 14px;font-size:13px;line-height:1.5}.inline-alert.error{color:var(--danger);background:var(--danger-soft)}.inline-alert.success{color:var(--success);background:var(--success-soft)}.loading-row{color:var(--muted);justify-content:center;align-items:center;gap:10px;margin-top:16px;font-size:13px;display:flex}.spinner{border:2px solid #d9dcea;border-top-color:var(--primary);border-radius:50%;width:18px;height:18px;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.admin-shell{grid-template-columns:238px minmax(0,1fr);min-height:100vh;display:grid}.sidebar{color:#e9ebff;background:#25274d;height:100vh;padding:24px 16px;position:sticky;top:0}.brand{align-items:center;gap:11px;padding:6px 8px 26px;display:flex}.brand-mark{background:#ffffff1f;border-radius:12px;place-items:center;width:38px;height:38px;display:grid}.brand strong{font-size:15px;display:block}.brand span{color:#aeb3dc;margin-top:3px;font-size:11px;display:block}.nav{gap:5px;display:grid}.nav-link{color:#bec3e7;border-radius:11px;align-items:center;gap:11px;padding:12px;font-size:14px;display:flex}.nav-link:hover,.nav-link.active{color:#fff;background:#ffffff1a}.admin-main{min-width:0;padding:30px}.page-head{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:24px;display:flex}.page-head h1{margin:0;font-size:27px}.page-head p{color:var(--muted);margin:7px 0 0;font-size:14px}.stat-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:22px;display:grid}.stat-card,.panel{border:1px solid var(--line);background:var(--surface);border-radius:17px;box-shadow:0 5px 16px #222a420a}.stat-card{padding:18px}.stat-card span{color:var(--muted);font-size:13px}.stat-card strong{margin-top:9px;font-size:26px;display:block}.panel{margin-bottom:18px;padding:20px}.panel-head{justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px;display:flex}.panel-head h2{margin:0;font-size:18px}.toolbar{flex-wrap:wrap;gap:9px;display:flex}.filter-chip{border:1px solid var(--line);color:var(--muted);background:var(--surface);cursor:pointer;border-radius:999px;padding:8px 12px;font-size:13px}.room-list{gap:12px;display:grid}.room-card{border:1px solid var(--line);background:var(--surface-soft);border-radius:14px;padding:16px}.room-head{justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;display:flex}.room-head h3{margin:0;font-size:16px}.badge{border-radius:999px;align-items:center;gap:5px;padding:5px 9px;font-size:12px;font-weight:700;display:inline-flex}.badge.normal{color:var(--success);background:var(--success-soft)}.badge.warning{color:var(--warning);background:var(--warning-soft)}.badge.danger{color:var(--danger);background:var(--danger-soft)}.assignment-list{gap:7px;display:grid}.assignment-row{border-top:1px solid var(--line);grid-template-columns:minmax(120px,.7fr) minmax(180px,1.4fr) minmax(100px,.8fr) auto;align-items:center;gap:12px;padding:10px 0;font-size:13px;display:grid}.assignment-row:first-child{border-top:0}.assignment-name{font-weight:700}.muted{color:var(--muted)}.table-wrap{overflow-x:auto}.data-table{border-collapse:collapse;width:100%;font-size:13px}.data-table th{color:var(--muted);border-bottom:1px solid var(--line);text-align:left;white-space:nowrap;padding:11px 10px}.data-table td{border-bottom:1px solid var(--line);vertical-align:middle;padding:13px 10px}.issue-list{gap:10px;display:grid}.issue{border:1px solid var(--line);border-radius:13px;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:12px;padding:14px;display:grid}.issue h3{margin:0;font-size:14px}.issue p{color:var(--muted);margin:5px 0 0;font-size:12px}.empty{color:var(--muted);text-align:center;padding:30px}.search-input{width:min(330px,100%)}@media (max-width:900px){.admin-shell{grid-template-columns:76px minmax(0,1fr)}.sidebar{padding:20px 10px}.brand strong,.brand span,.nav-link span{display:none}.brand{justify-content:center;padding-inline:0}.nav-link{justify-content:center}.stat-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width:680px){.register-shell{padding:0;display:block}.register-phone{border-radius:0;width:100%;min-height:100vh}.admin-shell{display:block}.sidebar{width:100%;height:auto;padding:10px 12px;position:static}.brand{display:none}.nav{grid-template-columns:repeat(5,minmax(0,1fr))}.nav-link{padding:9px 4px}.nav-link span{display:none}.admin-main{padding:20px 14px 84px}.page-head{display:block}.page-head .secondary-button{margin-top:12px}.stat-grid{grid-template-columns:repeat(2,1fr)}.assignment-row{grid-template-columns:1fr 1fr}.assignment-row form{grid-column:1/-1}.field-grid{grid-template-columns:1fr}.field.full{grid-column:auto}}
