@font-face{font-family:Manrope;src:url(/Manrope.ttf) format("truetype");font-weight:200 800;font-display:swap}:root{font-family:Manrope,system-ui,sans-serif;color:#202534;background:#f6f7fb;font-synthesis:none;--accent:#5B4AE4;--muted:#606A7E;--border:#E8EBF2;--soft:#EFEDFF;--good:#258265;--warning:#986000;--danger:#B1363E;accent-color:var(--accent);caret-color:var(--accent);scrollbar-color:#b4afcf #f6f7fb}*{box-sizing:border-box}body{margin:0}button,input,textarea,select{font:inherit}button,a,input,textarea,select{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{cursor:default;opacity:.52}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:3px solid #8f80f6;outline-offset:3px}::selection{background:#dcd6ff;color:#202534}a{color:var(--accent);text-underline-offset:4px}h1,h2,h3,p{overflow-wrap:anywhere}h1{font-size:22px;line-height:1.4;font-weight:750;letter-spacing:-.02em;margin:0 0 10px;text-wrap:balance}h2{font-size:16px;line-height:1.5;margin:0 0 10px;font-weight:750}h3{font-size:15px}p{font-size:14px;line-height:1.7;margin:8px 0}strong{font-weight:750}.muted{color:var(--muted)}.small{font-size:12px}.good-text{color:var(--good)}.pending-status{color:var(--warning)}.mobile-page{max-width:470px;margin:0 auto;min-height:100dvh;background:#f6f7fb}.workspace{min-width:0}.page-header{min-height:72px;display:flex;align-items:center;gap:12px;padding:calc(12px + env(safe-area-inset-top)) 22px 12px}.page-header strong{font-size:16px}.icon-button{border:0;background:transparent;display:inline-flex;justify-content:center;align-items:center;min-width:44px;min-height:44px;color:inherit;padding:8px}.page-header .icon-button:first-child{margin-left:-10px}.logout{margin-left:auto}.page-body{padding:26px 22px calc(128px + env(safe-area-inset-bottom));position:relative}.connection{padding:8px 22px;font-size:11px;line-height:1.5;color:var(--muted);background:#eeedf5}.connection.offline{background:#fff5e5;color:#825000}.button{border:1px solid transparent;border-radius:9px;min-height:48px;padding:12px 18px;background:var(--accent);color:#fff;font-size:14px;font-weight:700;display:flex;align-items:center;justify-content:center;gap:8px;width:100%;transition:background .15s ease-out}.button:hover:enabled{background:#4939c8}.button.secondary{background:#fff;color:#202534;border-color:var(--border)}.button.secondary:hover:enabled{background:#efedff}.text-button{display:inline-flex;align-items:center;gap:8px;padding:8px 0;min-height:44px;border:0;background:transparent;color:var(--accent);font-weight:700;font-size:14px;text-align:left}.text-button:hover:enabled{text-decoration:underline;text-underline-offset:4px}.duty-card>.text-button svg,.table-row>.text-button svg{transform:rotate(180deg)}.stack{display:grid;gap:16px}.panel{background:#fff;border:1px solid var(--border);padding:16px;border-radius:12px}.notice{background:var(--soft);padding:14px;border-radius:12px;margin:18px 0;color:#3e319c;font-size:14px;line-height:1.65}.notice strong{color:var(--accent);font-size:14px}.notice p{margin:6px 0 0;color:#202534;font-size:12px}.error{background:#fdf0f0;color:var(--danger);border-radius:10px;padding:14px;margin:0 0 20px;font-size:14px;line-height:1.7}.badge{background:var(--soft);color:var(--accent);border-radius:7px;display:inline-block;padding:5px 10px;font-size:11px;font-weight:650;line-height:1.5}.badge.good{background:#edf7f2;color:#1b7357}.badge.warn{background:#fff5e5;color:#986000}.section-badge{margin:28px 0 32px}.action-footer{position:fixed;bottom:0;left:50%;transform:translate(-50%);width:100%;max-width:470px;padding:16px 22px calc(22px + env(safe-area-inset-bottom));border-top:1px solid var(--border);background:#fff;z-index:5}.intro-date{margin-top:28px}.intro-tasks{margin:48px 0 70px}.intro-tasks p{margin:12px 0}.intro-tasks+.notice{margin-bottom:30px}.instruction{margin:32px 0 24px}.photo-card p{font-size:13px}.photo-card .text-button{margin-top:2px}.photo-thumb{width:100%;aspect-ratio:16/10;object-fit:cover;border-radius:7px;background:#e8ebf2;margin:8px 0}.return-notice{background:#fff5e5;color:#825000}.return-notice strong{color:#825000}.check-list{display:grid;gap:14px}.check-row{padding:16px;min-height:58px;border:1px solid var(--border);background:#fff;border-radius:10px;display:flex;align-items:center;gap:16px;font-size:14px;font-weight:650}.check-row input{width:21px;height:21px;margin:0;flex-shrink:0}.summary-panels{margin-top:46px}.summary-panels .panel p{font-size:13px}.summary-panels .text-button{font-size:12px;padding:0;min-height:36px}.violation-card{margin-bottom:16px}.violation-card h2{margin-top:12px}.result-mark{width:64px;height:64px;border-radius:50%;background:#edf7f2;display:grid;place-items:center;color:var(--good);margin:16px 0 28px}label{display:grid;gap:8px;font-size:13px;font-weight:650}input:not([type=checkbox]):not([type=radio]),textarea,select{border:1px solid var(--border);border-radius:8px;width:100%;padding:12px;background:#fff;color:inherit;min-height:48px;font-size:16px}input::placeholder,textarea::placeholder{color:var(--muted);opacity:1}textarea{resize:vertical;line-height:1.6}.violation-form{display:grid;gap:24px;margin-top:38px}.violation-form fieldset{border:0;padding:0;margin:0}.violation-form legend{font-size:13px;font-weight:650;margin-bottom:12px}.choice-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.choice-grid label{position:relative}.choice-grid input{position:absolute;opacity:0}.choice-grid span{border:1px solid var(--border);border-radius:8px;padding:12px 4px;background:#fff;text-align:center;font-size:12px}.choice-grid input:checked+span{background:var(--soft);color:var(--accent);border-color:var(--accent)}.choice-grid input:focus-visible+span{outline:3px solid #8f80f6;outline-offset:2px}.camera-page .page-body{padding-top:24px;padding-bottom:30px}.camera-page .page-body>p:first-of-type{font-size:12px}.viewfinder{position:relative;background:#202534;border-radius:12px;overflow:hidden;aspect-ratio:346/400;margin-top:30px;color:#fff}.viewfinder video,.viewfinder img{width:100%;height:100%;object-fit:cover;display:block}.viewfinder.preview{aspect-ratio:346/312;background:#e4e8ef}.viewfinder.preview img{object-fit:contain}.camera-guides{position:absolute;inset:20px;background:linear-gradient(#fff,#fff) left top/30px 3px no-repeat,linear-gradient(#fff,#fff) left top/3px 30px no-repeat,linear-gradient(#fff,#fff) right top/30px 3px no-repeat,linear-gradient(#fff,#fff) right top/3px 30px no-repeat,linear-gradient(#fff,#fff) left bottom/30px 3px no-repeat,linear-gradient(#fff,#fff) left bottom/3px 30px no-repeat,linear-gradient(#fff,#fff) right bottom/30px 3px no-repeat,linear-gradient(#fff,#fff) right bottom/3px 30px no-repeat;pointer-events:none}.view-label{position:absolute;bottom:20px;left:0;right:0;text-align:center;font-size:12px;text-shadow:0 1px 4px #000}.camera-wait{position:absolute;inset:35% 10px auto;text-align:center}.camera-page .error{margin-top:18px}.camera-page .instruction{font-size:13px;margin:20px 0 26px}.shutter-area{text-align:center}.shutter{display:block;width:64px;height:64px;border:6px solid white;outline:1px solid var(--accent);background:var(--accent);border-radius:50%;margin:0 auto 18px}.shutter:focus-visible{outline-width:3px}.login{max-width:420px;padding:40px 22px;margin:5vh auto}.brand{display:flex;align-items:center;gap:12px;font-size:19px;font-weight:800}.brand img{height:32px;width:32px}.login h1{margin-top:44px}.login form{display:grid;gap:22px;margin-top:32px}.login .notice{margin-top:32px}.role-options{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}.role-options button{border:1px solid #c9c2ef;background:#fff;color:#4939c8;border-radius:7px;padding:10px;font-size:12px;min-height:44px}.loading{padding:80px 24px;text-align:center}.list-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:28px 0}.duty-list{display:grid;gap:18px}.duty-card>div:first-child>strong{font-size:12px;color:var(--muted)}.duty-card h2{margin:6px 0}.duty-card>.text-button{display:flex;margin-top:16px}.review-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:30px}.review-photos{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin:24px 0}.review-photos img{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:8px}.review-checks{margin:20px 0}.review-checks p{display:flex;align-items:center;gap:12px}.review-checks svg{color:var(--good);flex-shrink:0}.review-violation{margin-top:20px;padding-top:16px;border-top:1px solid var(--border)}.review-form{margin-top:24px}.review-form label{margin-top:20px}.review-actions{display:flex;gap:16px;justify-content:flex-end;margin-top:20px}.review-actions .button{width:auto}.admin-layout{display:flex;min-height:100dvh}.sidebar{width:216px;flex-shrink:0;background:#fff;border-right:1px solid var(--border);padding:28px 24px;display:flex;flex-direction:column;position:fixed;inset:0 auto 0 0}.sidebar .brand{font-size:17px;gap:8px}.sidebar .brand img{height:28px;width:28px}.sidebar>p{font-size:10px;margin-left:36px;line-height:1.4}.sidebar nav{margin:60px -12px 0}.sidebar nav button{display:flex;gap:12px;align-items:center;width:100%;border:0;border-radius:10px;background:var(--soft);color:var(--accent);padding:14px 12px;font-size:12px;font-weight:650;text-align:left}.sidebar-user{margin-top:auto;font-size:12px;border-top:1px solid var(--border);padding-top:24px}.admin-layout>.workspace{margin-left:216px;width:calc(100% - 216px)}.admin-header{background:#fff;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:16px;padding:15px 32px;min-height:74px;font-size:12px}.admin-main{padding:38px 32px 70px;max-width:1440px}.admin-main h1{font-size:30px}.admin-main>.muted{font-size:13px}.admin-layout .connection{padding-left:32px}.report-table{border:1px solid var(--border);border-radius:12px;background:#fff;padding:0 20px}.table-row,.table-head{display:grid;grid-template-columns:minmax(180px,2fr) minmax(140px,1fr) 130px 150px;gap:20px;align-items:center;padding:22px 0;border-bottom:1px solid var(--border);font-size:13px}.table-head{font-size:10px;color:var(--muted);padding:18px 0}.table-row:last-child{border:0}.table-row h2{font-size:14px;margin:8px 0}.table-row .badge{justify-self:start}.table-row .text-button{font-size:12px}@media(min-width:700px){body:has(.mobile-page){background:#e9ebf3}.mobile-page{border-inline:1px solid var(--border)}.mobile-page .page-body{min-height:calc(100dvh - 105px)}.login{margin-top:6vh}.camera-page .page-body{min-height:0}}@media(max-width:1050px){.sidebar{width:190px;padding-inline:16px}.admin-layout>.workspace{margin-left:190px;width:calc(100% - 190px)}.table-row,.table-head{grid-template-columns:1.5fr 1fr 120px}.table-head span:last-child{display:none}.table-row>.text-button{grid-column:1/-1;padding:0}.admin-main{padding-inline:24px}}@media(max-width:720px){.sidebar{display:none}.admin-layout>.workspace{margin-left:0;width:100%}.admin-header{padding-inline:16px}.admin-main{padding:28px 22px 60px}.admin-main h1{font-size:24px}.admin-layout .connection{padding-left:22px}.table-head{display:none}.table-row{grid-template-columns:1fr auto;gap:12px}.table-row>span:not(.badge){grid-column:1;grid-row:2}.table-row>.badge{grid-column:2;grid-row:1}.table-row>.text-button{grid-column:1/-1}.report-table{padding:0 16px}.review-photos{grid-template-columns:1fr}.review-heading{align-items:flex-start;flex-direction:column}.review-actions{flex-direction:column}.review-actions .button{width:100%}}@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}.page-header,.admin-header{position:sticky;top:0;z-index:10;background:#f6f7fb}.admin-header{background:#fff;padding-top:calc(15px + env(safe-area-inset-top,0px))}.duty-date-filter{max-width:320px;margin:20px 0}.weekly-schedule{margin:28px 0}.weekly-schedule>details{margin:12px 0}.weekly-schedule summary{cursor:pointer;min-height:44px;display:list-item;padding:10px 0;font-size:14px;font-weight:750}.weekly-days>div{padding:12px 0;border-top:1px solid var(--border)}.weekly-days h3{margin:0 0 6px}.weekly-days p{margin:4px 0}.launch-screen{position:fixed;inset:0;z-index:1000;display:flex;align-items:center;justify-content:center;overflow:hidden;isolation:isolate;padding:calc(32px + env(safe-area-inset-top,0px)) max(24px,env(safe-area-inset-right,0px)) calc(32px + env(safe-area-inset-bottom,0px)) max(24px,env(safe-area-inset-left,0px));color:var(--soft, #EFEDFF);background:radial-gradient(ellipse at 18% 12%,#9C91FF38,transparent 58%),linear-gradient(155deg,var(--accent, #5B4AE4) 12%,#4634AC 100%);animation:launch-exit .3s 2.1s ease-out forwards}.module-nav{display:flex;flex-wrap:wrap;gap:8px;padding:12px 22px;border-bottom:1px solid var(--border);background:#fff}.module-nav button,.module-nav a{display:inline-flex;align-items:center;min-height:44px;padding:10px 14px;border:1px solid var(--border);border-radius:8px;background:#fff;color:var(--accent);font-size:13px;font-weight:700;text-decoration:none}.module-nav button[aria-current=page]{background:var(--soft);border-color:#c9c2ef}.assignment-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;margin-top:24px}.assignment-form>.button{grid-column:1/-1}.replacement-form{display:flex;align-items:end;gap:16px;margin-top:16px}.replacement-form label{flex:1;min-width:0}.replacement-form>.button{width:auto}.assignment-form label{min-width:0}@media(max-width:600px){.assignment-form{grid-template-columns:1fr}.replacement-form{display:grid}.replacement-form>.button{width:100%}}.launch-screen:before{content:"";position:absolute;z-index:-1;width:min(130vw,680px);aspect-ratio:1;border-radius:50%;pointer-events:none;opacity:.3;background:radial-gradient(circle,#C1B8FF6B,#A497FF18 42%,transparent 70%);animation:launch-glow .56s 1.38s ease-in-out both}.request-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin:20px 0}.request-toolbar>.button{width:auto}.request-filters{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin:20px 0}.request-form,.request-fields,.request-actions{display:grid;gap:20px}.request-fields{border:0;padding:0;margin:0;min-width:0}.request-form{max-width:720px}.request-files{list-style:none;padding:0;margin:20px 0}.request-files li{display:flex;justify-content:space-between;align-items:center;gap:14px;padding:10px 0;border-bottom:1px solid var(--border);font-size:13px;overflow-wrap:anywhere}.request-files li>span:first-child,.request-files a{min-width:0;overflow-wrap:anywhere}.request-files a{display:inline-flex;align-items:center;min-height:44px}.request-actions{margin-top:24px}.request-history{margin-top:28px}.request-history article{padding:16px 0;border-bottom:1px solid var(--border)}.request-history p{white-space:pre-wrap}.request-history strong{font-size:13px}.service-report{display:grid;grid-template-columns:1fr auto;gap:12px;font-size:13px}.service-report dd{margin:0;font-weight:700}.request-form textarea,.request-actions textarea{white-space:pre-wrap}@media(max-width:500px){.request-filters{grid-template-columns:1fr}.request-toolbar>.button{width:100%}.service-report{grid-template-columns:minmax(0,1fr) auto}}.launch-identity{position:relative;width:100%;text-align:center}.launch-screen h1{margin:0;color:inherit;font-family:Manrope,system-ui,sans-serif;font-size:clamp(30px,9.4vw,64px);font-weight:800;line-height:1.2;letter-spacing:-.035em;white-space:nowrap;animation:launch-word .76s 80ms cubic-bezier(.16,1,.3,1) both}.launch-college{margin:0 0 16px;color:inherit;font-size:clamp(18px,4.8vw,26px);font-weight:700;line-height:1.3;letter-spacing:.04em;animation:launch-college .7s .68s cubic-bezier(.2,.8,.2,1) both}.launch-caption{position:absolute;bottom:calc(112px + env(safe-area-inset-bottom));font-size:12px;line-height:1.6;text-align:center}.launch-track{width:min(54vw,220px);height:2px;margin:16px auto 0;overflow:hidden;border-radius:2px;background:#ffffff30}.launch-track:after{content:"";display:block;width:100%;height:100%;border-radius:inherit;background:#fff;transform-origin:left;animation:launch-track 1.9s .1s cubic-bezier(.16,1,.3,1) both}.launch-skip{position:absolute;bottom:calc(28px + env(safe-area-inset-bottom));min-height:44px;padding:10px 22px;border:1px solid #FFFFFF50;border-radius:10px;background:transparent;color:inherit;font:inherit;font-size:12px}.launch-skip:hover{background:#ffffff14}.launch-skip:focus-visible{outline:2px solid #EFEDFF;outline-offset:4px}@keyframes launch-word{0%{opacity:0;filter:blur(8px);transform:scale(.96)}to{opacity:1;filter:blur(0);transform:scale(1)}}@keyframes launch-college{0%{opacity:0;transform:translateY(calc(-50dvh - 80px))}18%{opacity:1}76%{opacity:1;transform:translateY(4px)}90%{opacity:1;transform:translateY(-1px)}to{opacity:1;transform:translateY(0)}}@keyframes launch-glow{0%,to{opacity:.3;transform:scale(1)}45%{opacity:.65;transform:scale(1.06)}}@keyframes launch-track{0%{transform:scaleX(0)}to{transform:scaleX(1)}}@keyframes launch-exit{0%{opacity:1}to{opacity:0}}@media(prefers-reduced-motion:reduce){.launch-screen,.launch-screen:before,.launch-screen h1,.launch-college,.launch-track:after{animation:none}}.install-qr{display:flex;align-items:center;gap:16px;margin-top:26px;padding:16px;background:#fff;border:1px solid var(--border);border-radius:12px}.install-qr img{width:140px;height:140px;flex-shrink:0}.install-qr h2{font-size:15px;margin-bottom:8px}.install-qr p,.install-qr a{font-size:12px;line-height:1.7}.install-qr a{display:inline-flex;align-items:center;min-height:44px;font-weight:700}@media(max-width:380px){.install-qr{flex-direction:column;align-items:flex-start}}@media(display-mode:standalone){body:before{content:"";position:fixed;inset:0 0 auto;z-index:900;height:env(safe-area-inset-top,0px);background:var(--accent);pointer-events:none}.login{margin-top:0;padding-top:calc(40px + env(safe-area-inset-top,0px))}}.install-page{max-width:460px;margin:0 auto;padding:calc(28px + env(safe-area-inset-top)) 22px calc(30px + env(safe-area-inset-bottom));min-height:100dvh}.install-page h1{font-size:25px;line-height:1.35;margin:18px 0 12px}.install-page>.muted{font-size:14px}.install-symbol{display:grid;place-items:center;width:48px;height:48px;border-radius:12px;background:var(--soft);color:var(--accent);margin-top:36px}.install-tabs{display:flex;gap:4px;margin:28px 0 16px;padding:4px;background:#eae8f4;border-radius:10px}.install-tabs button{flex:1;min-height:44px;border:0;border-radius:7px;background:transparent;color:#4e576b;font-size:12px;font-weight:700;padding:8px 6px}.install-tabs button[aria-pressed=true]{background:#fff;color:var(--accent)}.install-steps{padding:20px}.install-steps ol{margin:0;padding-left:22px}.install-steps li{font-size:14px;line-height:1.7;padding-left:5px;margin-bottom:18px}.install-steps li:last-child{margin-bottom:0}.install-steps li::marker{color:var(--accent);font-weight:750}.install-action{margin-top:20px}.install-footnote{margin-top:24px}.admin-entry{display:inline-flex;align-items:center;min-height:44px;font-size:13px;font-weight:700;margin-top:12px}.install-page .notice{font-size:13px}
