@import"https://fonts.googleapis.com/css2?family=Outfit:wght@400;500;600;700;800&family=Sarabun:wght@400;500;600;700&display=swap";:root{color-scheme:light;--primary: oklch(45% .16 260);--primary-deep: oklch(22% .08 260);--primary-light: oklch(88% .06 260);--primary-hover: oklch(40% .18 260);--bg: oklch(97% .01 260);--bg-gradient-start: oklch(97% .01 260);--bg-gradient-end: oklch(94% .02 260);--panel: oklch(99% .005 260);--glass-surface: rgba(255, 255, 255, .7);--glass-border: rgba(255, 255, 255, .45);--glass-blur: 12px;--text: oklch(18% .03 260);--text-muted: oklch(50% .03 260);--text-on-primary: #ffffff;--line: oklch(87% .03 260);--success: oklch(62% .16 145);--success-light: oklch(92% .06 145);--warning: oklch(69% .16 70);--warning-light: oklch(93% .06 70);--danger: oklch(55% .22 25);--danger-light: oklch(92% .08 25);--closed: oklch(45% .02 260);--closed-light: oklch(92% .01 260);--shadow-sm: 0 1px 3px rgba(0, 0, 0, .06), 0 1px 2px rgba(0, 0, 0, .04);--shadow-md: 0 4px 14px rgba(0, 0, 0, .07), 0 2px 6px rgba(0, 0, 0, .04);--shadow-lg: 0 18px 50px rgba(15, 36, 58, .1), 0 6px 18px rgba(15, 36, 58, .06);--radius-sm: 6px;--radius-md: 12px;--radius-lg: 18px;--radius-pill: 999px;--font-heading: "Outfit", system-ui, sans-serif;--font-body: "Sarabun", system-ui, sans-serif;--transition-fast: .15s cubic-bezier(.4, 0, .2, 1);--transition-normal: .3s cubic-bezier(.4, 0, .2, 1)}[data-theme=dark]{color-scheme:dark;--primary: oklch(65% .14 260);--primary-deep: oklch(14% .06 260);--primary-light: oklch(28% .08 260);--primary-hover: oklch(70% .16 260);--bg: oklch(14% .02 260);--bg-gradient-start: oklch(14% .02 260);--bg-gradient-end: oklch(17% .03 260);--panel: oklch(20% .03 260);--glass-surface: rgba(30, 38, 55, .75);--glass-border: rgba(60, 72, 100, .4);--text: oklch(92% .01 260);--text-muted: oklch(65% .02 260);--text-on-primary: oklch(14% .02 260);--line: oklch(30% .04 260);--success-light: oklch(25% .06 145);--warning-light: oklch(28% .06 70);--danger-light: oklch(25% .08 25);--closed-light: oklch(26% .02 260);--shadow-sm: 0 1px 3px rgba(0, 0, 0, .25);--shadow-md: 0 4px 14px rgba(0, 0, 0, .3);--shadow-lg: 0 18px 50px rgba(0, 0, 0, .4)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}body{font-family:var(--font-body);font-size:16px;line-height:1.6;color:var(--text);background:linear-gradient(168deg,var(--bg-gradient-start),var(--bg-gradient-end));background-attachment:fixed;min-height:100vh;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}h1,h2,h3,h4,h5,h6{font-family:var(--font-heading);font-weight:700;line-height:1.25;letter-spacing:-.01em}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}a{color:var(--primary);text-decoration:none}a:hover{text-decoration:underline}img{max-width:100%;display:block}.sr-only{position:absolute;width:1px;height:1px;min-width:1px;min-height:1px;max-width:1px;max-height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);clip-path:inset(50%);white-space:nowrap;border:0}.loading{padding:32px;font-size:20px;text-align:center;color:var(--text-muted)}.auth-page{min-height:100vh;display:grid;place-items:center;overflow-x:hidden;background:radial-gradient(circle at 14% 12%,rgba(20,184,166,.18),transparent 28rem),radial-gradient(circle at 84% 82%,rgba(250,204,21,.15),transparent 24rem),linear-gradient(135deg,#f8fbff,#edf7f6 45%,#eef4ff);padding:28px}.auth-centered-container{width:min(100%,1160px);min-height:min(760px,calc(100vh - 56px));display:grid;grid-template-columns:minmax(0,1.15fr) minmax(360px,.85fr);gap:24px;align-items:stretch;animation:slide-in-up .5s cubic-bezier(.16,1,.3,1)}.auth-hero{position:relative;display:grid;align-content:space-between;gap:28px;min-height:100%;overflow:hidden;border:1px solid rgba(15,54,78,.12);border-radius:8px;background:linear-gradient(135deg,#082f49f2,#0f766eeb),linear-gradient(90deg,rgba(255,255,255,.08) 1px,transparent 1px),linear-gradient(0deg,rgba(255,255,255,.08) 1px,transparent 1px);background-size:auto,34px 34px,34px 34px;color:#fff;padding:clamp(28px,5vw,56px);box-shadow:0 24px 70px #0f364e2e}.auth-hero:after{content:"";position:absolute;inset:auto -70px -110px auto;width:320px;height:320px;border:1px solid rgba(255,255,255,.18);border-radius:50%;background:#ffffff14}.auth-school-mark{position:relative;z-index:1;display:flex;align-items:center;gap:14px}.auth-school-mark .auth-crest{flex:0 0 auto}.auth-school-mark span,.auth-school-mark strong{display:block}.auth-school-mark span{color:#ffffffb8;font-family:var(--font-heading);font-size:12px;font-weight:800;text-transform:uppercase}.auth-school-mark strong{max-width:360px;color:#fff;font-size:16px;line-height:1.35}.auth-crest{width:68px;height:68px;object-fit:contain;border:1px solid rgba(255,255,255,.62);border-radius:50%;background:#fff;padding:5px;box-shadow:0 10px 28px #0715242e}.auth-hero-copy{position:relative;z-index:1;display:grid;gap:18px;max-width:680px}.auth-hero-copy h1{color:#fff;font-size:clamp(42px,6vw,72px);line-height:1.02;letter-spacing:0}.auth-hero-copy p{max-width:620px;color:#ffffffd1;font-size:clamp(17px,2vw,22px);line-height:1.65}.auth-badge-row{display:flex;flex-wrap:wrap;gap:8px}.auth-badge{display:inline-flex;align-items:center;gap:6px;min-height:32px;border:1px solid rgba(37,99,235,.14);border-radius:8px;background:#2563eb1a;color:#1d4ed8;padding:5px 10px;font-size:12.5px;font-weight:800;white-space:nowrap}.auth-hero .auth-badge{border-color:#ffffff38;background:#ffffff24;color:#fff}.auth-badge.teal{background:#14b8a629}.auth-badge.amber{background:#f59e0b2e}.auth-benefit-grid{position:relative;z-index:1;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.auth-benefit-card{display:grid;gap:12px;min-width:0;border:1px solid rgba(255,255,255,.18);border-radius:8px;background:#ffffff1c;padding:16px;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.auth-benefit-icon{width:36px;height:36px;display:grid;place-items:center;border-radius:8px;background:#ffffff29;color:#99f6e4}.auth-benefit-card h2{color:#fff;font-size:15px;letter-spacing:0;margin-bottom:4px}.auth-benefit-card p{color:#ffffffb8;font-size:13px;line-height:1.55}.auth-footer-note{position:relative;z-index:1;color:#ffffffad;font-size:13px}.auth-login-panel{display:grid;align-items:center}.auth-glass-card{display:flex;flex-direction:column;gap:22px;width:100%;border:1px solid rgba(15,54,78,.12);border-radius:8px;background:#fffffff0;padding:clamp(24px,4vw,34px);box-shadow:0 22px 58px #0f364e24}.auth-card-header{display:flex;align-items:center;gap:14px;text-align:left}.auth-card-crest{width:54px;height:54px;border-color:#0f364e1f;box-shadow:var(--shadow-sm)}.auth-card-header p{color:#0f766e;font-size:13px;font-weight:800;margin-bottom:2px}.auth-card-header h2{color:#0f172a;font-size:27px;line-height:1.1;letter-spacing:0}.auth-card-body{display:flex;flex-direction:column;gap:18px}.auth-mode-banner{display:flex;align-items:center;justify-content:center;gap:8px;min-height:42px;padding:9px 14px;border-radius:8px;color:#fff;font-size:14px;font-weight:800}.auth-mode-banner.blue{background:linear-gradient(135deg,#1d4ed8,#0f766e)}.auth-mode-banner.green{background:linear-gradient(135deg,#15803d,#0f766e)}.auth-mode-banner.orange{background:linear-gradient(135deg,#b45309,#0f766e)}.auth-role-hints{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.auth-role-hints span{min-width:0;display:inline-flex;align-items:center;justify-content:center;gap:5px;border:1px solid rgba(15,118,110,.16);border-radius:8px;background:#f0fdfacc;color:#115e59;padding:8px 6px;font-size:12px;font-weight:800;text-align:center}.auth-card-form{display:flex;flex-direction:column;gap:16px}.auth-card-form .form-field label{color:#334155}.auth-card-form input,.auth-card-form select{min-height:50px;border-color:#d7e2ea;border-radius:8px;background:#fff;color:#0f172a}.auth-card-form input::placeholder{color:#8a9aaa}.auth-card-form input:focus,.auth-card-form select:focus{border-color:#0f766e;box-shadow:0 0 0 3px #14b8a62e}.auth-submit{min-height:52px;border-radius:8px;background:linear-gradient(135deg,#1d4ed8,#0f766e);border-color:transparent;box-shadow:0 14px 24px #1d4ed82e}.auth-submit:hover:not(:disabled){background:linear-gradient(135deg,#1e40af,#0f766e)}.auth-submit:disabled{cursor:wait;opacity:.78;transform:none;box-shadow:none}.auth-card-form .btn-link{min-height:40px;border:none;background:transparent;color:#0f766e;padding:4px 8px;font-size:14px;box-shadow:none}.auth-card-form .btn-link:hover{background:#14b8a617;transform:none}[data-theme=dark] .auth-page{background:radial-gradient(circle at 14% 12%,rgba(20,184,166,.18),transparent 28rem),radial-gradient(circle at 84% 82%,rgba(250,204,21,.1),transparent 24rem),linear-gradient(135deg,#071320,#0f1d2e 52%,#082f2d)}[data-theme=dark] .auth-glass-card{border-color:#94a3b82e;background:#0f172ae6}[data-theme=dark] .auth-card-header h2,[data-theme=dark] .auth-card-form input,[data-theme=dark] .auth-card-form select{color:var(--text)}[data-theme=dark] .auth-card-form .form-field label{color:#b0b8c5}[data-theme=dark] .auth-card-form input,[data-theme=dark] .auth-card-form select{border-color:#94a3b83d;background:#0f172ab8}[data-theme=dark] .auth-role-hints span{border-color:#2dd4bf2e;background:#14b8a61f;color:#99f6e4}@media(max-width:920px){.auth-centered-container{grid-template-columns:1fr;min-height:auto}.auth-login-panel{order:1}.auth-hero{order:2;min-height:auto}.auth-benefit-grid{grid-template-columns:1fr}}@media(max-width:520px){.auth-page{align-items:start;padding:12px}.auth-centered-container{gap:12px}.auth-glass-card,.auth-hero{padding:20px}.auth-card-header{align-items:center}.auth-card-header h2{font-size:23px}.auth-role-hints{grid-template-columns:1fr}.auth-hero-copy h1{font-size:38px}.auth-hero-copy p{font-size:16px}.auth-school-mark{align-items:flex-start}}.input-icon-left{position:absolute;left:14px;color:var(--text-muted);display:flex;align-items:center;pointer-events:none}input.with-icon-left{padding-left:44px}input.with-icon-right{padding-right:44px}label{display:grid;gap:6px;font-weight:600;font-size:14px}input,select,textarea{width:100%;min-height:46px;border:1px solid var(--line);border-radius:var(--radius-md);padding:10px 14px;background:var(--panel);color:var(--text);transition:border-color var(--transition-fast),box-shadow var(--transition-fast)}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px #154fac26}[data-theme=dark] input:focus,[data-theme=dark] select:focus,[data-theme=dark] textarea:focus{box-shadow:0 0 0 3px #5a8ee440}textarea{resize:vertical;min-height:100px}.input-with-icon{position:relative;display:flex;align-items:center;width:100%}.input-with-icon input{padding-right:46px}.pw-toggle{position:absolute;right:0;top:0;bottom:0;width:44px;height:100%;min-height:auto;border:none;background:transparent;color:var(--text-muted);display:grid;place-items:center;cursor:pointer;padding:0;z-index:5}.pw-toggle:hover{color:var(--text);background:transparent;transform:none;box-shadow:none}button{min-height:48px;border:1px solid var(--line);border-radius:var(--radius-md);padding:10px 20px;background:var(--panel);color:var(--text);font-weight:700;font-family:var(--font-heading);transition:all var(--transition-fast)}button:hover{box-shadow:var(--shadow-sm);transform:translateY(-1px)}button:active{transform:translateY(0)}button.primary,.btn-primary{background:var(--primary);color:var(--text-on-primary);border-color:var(--primary)}button.primary:hover,.btn-primary:hover{background:var(--primary-hover);border-color:var(--primary-hover)}button.ghost,.btn-ghost{background:transparent;border-color:transparent}button.ghost:hover,.btn-ghost:hover{background:var(--primary-light)}button.danger,.btn-primary.danger{background:var(--danger);color:#fff;border-color:var(--danger)}button.danger:hover,.btn-primary.danger:hover{background:var(--danger);border-color:var(--danger)}.alert{border:1px solid var(--danger);border-radius:var(--radius-md);background:var(--danger-light);color:var(--danger);padding:14px 16px;font-weight:500}.notice{border:1px solid var(--success);border-radius:var(--radius-md);background:var(--success-light);color:var(--success);padding:14px 16px;font-weight:500}.app-shell{min-height:100dvh;display:grid;grid-template-columns:270px minmax(0,1fr)}.sidebar{position:sticky;top:0;height:100dvh;display:grid;grid-template-rows:auto 1fr auto;gap:16px;padding:18px;background:var(--primary-deep);color:#d6dfec;overflow-y:auto;z-index:20}.brand{display:flex;gap:12px;align-items:center;padding:14px;border-radius:var(--radius-md);background:#ffffff14;border:1px solid rgba(255,255,255,.1)}.brand-mark{width:48px;height:48px;display:grid;place-items:center;border-radius:50%;background:var(--primary);color:var(--text-on-primary);font-family:var(--font-heading);font-size:20px;font-weight:800;flex-shrink:0}.brand-logo-circle-sm{width:36px;height:36px;border-radius:50%;background:#fff;display:flex;align-items:center;justify-content:center;padding:3px;box-shadow:var(--shadow-sm);flex-shrink:0}.brand-logo-circle-sm img{width:100%;height:100%;object-fit:contain}.sidebar-brand{display:flex;gap:12px;align-items:center;padding:14px;border-radius:var(--radius-md);background:#ffffff14;border:1px solid rgba(255,255,255,.1)}.sidebar-brand strong{display:block;font-family:var(--font-heading);font-size:15px;color:#fff}.sidebar-brand span{display:block;font-size:12px;color:#949fb2}.brand strong{display:block;font-family:var(--font-heading);font-size:16px;color:#fff}.brand span{display:block;font-size:13px;color:#949fb2}.sidebar nav{display:grid;align-content:start;gap:6px}.sidebar nav button{display:flex;align-items:center;gap:10px;justify-content:flex-start;min-height:44px;padding:10px 14px;border:1px solid transparent;border-radius:var(--radius-md);background:transparent;color:#b6becb;font-weight:500;font-size:15px;transition:all var(--transition-fast)}.sidebar nav button:hover{background:#ffffff14;color:#fff;transform:none;box-shadow:none}.sidebar nav button.active{background:#ffffff24;color:#fff;font-weight:700;border-color:#ffffff1f;box-shadow:inset 3px 0 0 var(--primary)}.sidebar-footer{padding-top:16px;border-top:1px solid rgba(255,255,255,.1);display:flex;flex-direction:column;gap:12px}.sidebar-user-info{display:flex;align-items:center;gap:12px}.user-avatar{width:38px;height:38px;border-radius:50%;background:#ffffff26;color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:16px;flex-shrink:0;overflow:hidden}.user-avatar img,.user-avatar-sm img,.user-avatar-tiny img,.header-avatar img,.profile-photo-preview img,.point-photo-preview img,.admin-point-thumb img,.point-reference-media img{display:block;width:100%;height:100%;border-radius:inherit;object-fit:cover}.sidebar-user-info strong{display:block;font-size:14.5px;color:#fff;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:150px}.role-badge{display:inline-block;font-size:11px;padding:2px 8px;border-radius:var(--radius-sm);background:#ffffff1f;color:#fffc;font-weight:500;margin-top:2px}.sidebar-footer .btn-ghost{width:100%;justify-content:center;background:#ffffff0d;color:#b6becb;border:1px solid rgba(255,255,255,.1);border-radius:var(--radius-md);padding:8px 12px;font-size:13px;font-weight:600;display:flex;align-items:center;gap:8px}.sidebar-footer .btn-ghost:hover{background:#ef444426;color:#ef4444;border-color:#ef444433;transform:none;box-shadow:none}.bottom-nav{display:none;position:fixed;bottom:0;left:0;right:0;z-index:50;height:62px;padding-bottom:env(safe-area-inset-bottom,0);background:var(--glass-surface);border-top:1px solid var(--glass-border);backdrop-filter:blur(var(--glass-blur)) saturate(1.5);-webkit-backdrop-filter:blur(var(--glass-blur)) saturate(1.5)}.bottom-nav ul{display:flex;list-style:none;height:100%;margin:0;padding:0}.bottom-nav li{flex:1}.bottom-nav button{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;min-height:52px;border:none;border-radius:0;background:transparent;color:var(--text-muted);font-size:11px;font-weight:600;padding:4px;transition:color var(--transition-fast)}.bottom-nav button:hover,.bottom-nav button:active{transform:none;box-shadow:none}.bottom-nav button .icon{font-size:22px;line-height:1}.bottom-nav button.active:after{content:"";position:absolute;top:0;left:25%;right:25%;height:3px;background:var(--primary);border-radius:0 0 3px 3px}.workspace{padding:24px;min-width:0}.topbar{position:sticky;top:12px;z-index:10;display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:24px;padding:18px 22px;border:1px solid var(--glass-border);border-radius:var(--radius-lg);background:var(--glass-surface);backdrop-filter:blur(var(--glass-blur)) saturate(1.4);-webkit-backdrop-filter:blur(var(--glass-blur)) saturate(1.4);box-shadow:var(--shadow-md)}.topbar h1{margin:0;font-size:28px}.topbar p{margin:0;color:var(--text-muted);font-size:14px}.date-control{width:280px;min-width:280px}.stack{display:grid;gap:22px}.metric-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}.metric{--metric-accent: var(--primary);position:relative;min-height:110px;display:grid;gap:8px;padding:20px;border:1px solid var(--glass-border);border-radius:16px;background:var(--glass-surface);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);box-shadow:0 8px 32px #0000000a;overflow:hidden;transition:transform var(--transition-fast),box-shadow var(--transition-fast)}.metric:before{content:"";position:absolute;left:0;top:0;bottom:0;width:6px;background:var(--metric-accent);border-radius:16px 0 0 16px}.metric:hover{transform:translateY(-2px);box-shadow:0 12px 36px #00000014}.metric span{color:var(--text-muted);font-size:14px;font-weight:600;text-transform:none;letter-spacing:normal}.metric strong{font-family:var(--font-heading);font-size:38px;font-weight:700;line-height:1;color:var(--text)}.metric.success{--metric-accent: var(--success)}.metric.warning{--metric-accent: var(--warning)}.metric.danger{--metric-accent: var(--danger)}.metric.closed{--metric-accent: var(--closed)}.alert-banner{display:flex;align-items:center;gap:16px;padding:16px 20px;background:var(--glass-surface);border-radius:var(--radius-md);border:1px solid var(--glass-border);box-shadow:var(--shadow-sm);animation:slide-in-right .4s cubic-bezier(.16,1,.3,1)}.alert-banner-icon{flex-shrink:0}.alert-banner-content{flex:1;display:grid;gap:4px}.alert-banner-content strong{font-size:15px;font-weight:700;line-height:1.3}.alert-banner-content span{font-size:13.5px;color:var(--text-muted);line-height:1.4}.alert-danger-banner{border-left:4px solid var(--danger)}.alert-danger-banner .alert-banner-icon,.alert-danger-banner .alert-banner-content strong{color:var(--danger)}.btn-alert-action{min-height:auto;padding:8px 16px;font-size:13px;font-weight:700;background:var(--danger);color:#fff;border:none;border-radius:var(--radius-md);transition:all var(--transition-fast);cursor:pointer;white-space:nowrap}.btn-alert-action:hover{background:#bb061e;transform:translateY(-1px)}.donut{--size: 150px;--thickness: 22px;width:var(--size);height:var(--size);border-radius:50%;position:relative;display:flex;align-items:center;justify-content:center;margin:0 auto;box-shadow:var(--shadow-sm);transition:transform var(--transition-normal)}.donut:hover{transform:scale(1.03)}.donut:after{content:"";position:absolute;inset:var(--thickness);border-radius:50%;background:var(--panel)}.donut-center{position:relative;z-index:5;font-family:var(--font-heading);font-size:24px;font-weight:800;color:var(--text)}.donut-chart{--size: 180px;--thickness: 28px;--val-a: 45;--val-b: 30;--val-c: 15;position:relative;width:var(--size);height:var(--size);border-radius:50%;background:conic-gradient(var(--success) 0% calc(var(--val-a) * 1%),var(--warning) calc(var(--val-a) * 1%) calc((var(--val-a) + var(--val-b)) * 1%),var(--danger) calc((var(--val-a) + var(--val-b)) * 1%) calc((var(--val-a) + var(--val-b) + var(--val-c)) * 1%),var(--closed) calc((var(--val-a) + var(--val-b) + var(--val-c)) * 1%) 100%);margin:0 auto}.donut-chart:after{content:attr(data-label);position:absolute;inset:var(--thickness);border-radius:50%;background:var(--panel);display:grid;place-items:center;font-family:var(--font-heading);font-size:22px;font-weight:800;color:var(--text);text-align:center;line-height:1.2}.task-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.task-card{min-height:150px;display:grid;align-content:center;gap:8px;text-align:left;padding:22px;border:1px solid var(--glass-border);border-radius:var(--radius-md);background:var(--glass-surface);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);box-shadow:var(--shadow-sm);transition:transform var(--transition-normal),box-shadow var(--transition-normal)}.task-card:hover{transform:translateY(-4px);box-shadow:var(--shadow-lg)}.task-card strong{font-family:var(--font-heading);font-size:34px;font-weight:800;color:var(--primary)}.task-card small{color:var(--text-muted);font-size:14px}.panel{padding:22px;border:1px solid var(--line);border-radius:var(--radius-md);background:var(--panel);box-shadow:var(--shadow-sm)}.panel h2{margin:0 0 16px;font-size:20px}.progress-list{display:grid;gap:10px}.progress-row{display:grid;gap:8px;padding:14px;border:1px solid var(--line);border-radius:var(--radius-md);background:var(--panel);transition:box-shadow var(--transition-fast)}.progress-row:hover{box-shadow:var(--shadow-sm)}.progress-row div{display:flex;justify-content:space-between;gap:12px}progress{width:100%;height:10px;border-radius:var(--radius-pill);accent-color:var(--primary);appearance:none;-webkit-appearance:none}progress::-webkit-progress-bar{background:var(--primary-light);border-radius:var(--radius-pill)}progress::-webkit-progress-value{background:var(--primary);border-radius:var(--radius-pill)}.two-col{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:22px}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.wide{grid-column:1 / -1}.duty-panel{max-width:800px;margin:0 auto;animation:slide-in-up .5s cubic-bezier(.16,1,.3,1)}.duty-form{display:grid;gap:20px;margin-top:24px}.category-chips{display:flex;gap:12px;flex-wrap:wrap}.chip input[type=radio],.chip input[type=checkbox]{position:absolute;opacity:0;width:0;height:0;margin:0}.step-indicator{display:flex;align-items:center;justify-content:space-between;width:100%;margin-bottom:32px;position:relative}.step-item{display:flex;align-items:center;gap:8px;position:relative;flex:1}.step-item:last-child{flex:none}.step-circle{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:50%;border:2px solid var(--line);background:var(--panel);font-family:var(--font-heading);font-weight:700;font-size:14px;color:var(--text-muted);transition:all var(--transition-fast);flex-shrink:0}.step-item.active .step-circle{background:var(--primary);border-color:var(--primary);color:var(--text-on-primary)}.step-item.done .step-circle{background:var(--success);border-color:var(--success);color:#fff}.step-label{font-weight:600;font-size:14px;color:var(--text-muted);white-space:nowrap;transition:color var(--transition-fast)}.step-item.active .step-label{color:var(--primary);font-weight:700}.step-item.done .step-label{color:var(--success)}.step-line{flex:1;height:2px;background:var(--line);margin:0 16px;transition:background var(--transition-fast)}.step-item.done .step-line{background:var(--success)}.step-strip,.tabbar{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:16px}.step-strip span{border:1px solid var(--line);border-radius:var(--radius-pill);padding:8px 14px;background:var(--panel);font-weight:700;font-size:13px}.tabbar button.active{background:var(--primary-light);color:var(--primary);border-color:var(--primary)}.chip{display:inline-flex;align-items:center;gap:6px;padding:6px 14px;border-radius:var(--radius-pill);font-size:13px;font-weight:600;border:1px solid var(--line);background:var(--panel);cursor:pointer;transition:all var(--transition-fast);-webkit-user-select:none;user-select:none}.chip:hover{background:var(--primary-light);border-color:var(--primary)}.chip.selected,.chip.active{background:var(--primary);color:var(--text-on-primary);border-color:var(--primary)}.chip.success{background:var(--success-light);color:var(--success);border-color:var(--success)}.chip.warning{background:var(--warning-light);color:var(--warning);border-color:var(--warning)}.chip.danger{background:var(--danger-light);color:var(--danger);border-color:var(--danger)}.chip.duty-status-option{justify-content:center;min-width:132px}.chip.duty-status-option.active.success{background:var(--success);color:#fff;border-color:var(--success);box-shadow:0 0 0 3px color-mix(in srgb,var(--success) 18%,transparent)}.chip.duty-status-option.active.warning{background:var(--warning);color:#fff;border-color:var(--warning);box-shadow:0 0 0 3px color-mix(in srgb,var(--warning) 22%,transparent)}.chip.duty-status-option.active.danger{background:var(--danger);color:#fff;border-color:var(--danger);box-shadow:0 0 0 3px color-mix(in srgb,var(--danger) 18%,transparent)}.duty-submit-preview{display:grid;gap:10px;padding:14px;border:1px solid var(--line);border-radius:var(--radius-md);background:var(--panel)}.duty-submit-preview div{display:grid;gap:6px}.duty-submit-preview span{color:var(--text-muted);font-size:12px;font-weight:700}.duty-submit-preview p{margin:0;color:var(--text);line-height:1.6}.point-reference-card{display:grid;grid-template-columns:minmax(120px,160px) minmax(0,1fr);gap:12px;align-items:center;margin-top:12px;padding:12px;border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface)}.point-reference-media{display:grid;place-items:center;aspect-ratio:4 / 3;overflow:hidden;border:1px solid var(--line);border-radius:var(--radius-md);background:var(--panel);color:var(--text-muted);font-size:12px;font-weight:800;text-align:center}.point-reference-media span{display:grid;gap:6px;place-items:center;padding:8px}.point-reference-card strong,.point-reference-card span,.point-reference-card p{display:block;margin:0;min-width:0}.point-reference-card strong{color:var(--text);font-size:15px}.point-reference-card span,.point-reference-card p{color:var(--text-muted);font-size:12px;line-height:1.45}.photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(100px,1fr));gap:10px}.photo-grid .photo-thumb{position:relative;aspect-ratio:1;border-radius:var(--radius-md);overflow:hidden;border:2px solid var(--line);cursor:pointer;transition:transform var(--transition-fast)}.photo-grid .photo-thumb:hover{transform:scale(1.04)}.photo-grid .photo-thumb img{width:100%;height:100%;object-fit:cover}.photo-grid .photo-preview{width:100%;height:100%;border:0;background:transparent;padding:0}.photo-grid .photo-thumb .remove{position:absolute;top:4px;right:4px;width:48px;height:48px;min-height:48px;border-radius:50%;background:var(--danger);color:#fff;display:grid;place-items:center;font-size:14px;border:none;padding:0}.photo-count{margin-left:auto;color:var(--text-muted);font-size:13px;font-weight:600}.photo-grid .photo-add{display:flex;flex-direction:column;align-items:center;justify-content:center;aspect-ratio:1;border:2px dashed var(--line);background:var(--panel);border-radius:var(--radius-md);color:var(--text-muted);cursor:pointer;min-height:auto;gap:6px;padding:0;transition:all var(--transition-fast)}.photo-grid .photo-add:hover{border-color:var(--primary);color:var(--primary);background:var(--primary-light)}.admin-home-shortcuts{display:grid;gap:20px}.admin-home-shortcuts h2{margin-top:4px}.admin-home-shortcuts p{color:var(--text-muted)}.admin-home-shortcut-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px}.admin-home-shortcut-grid button{display:flex;align-items:center;gap:10px;min-height:var(--touch);padding:14px 16px;border:1px solid var(--line);border-radius:var(--radius-md);background:var(--panel);color:var(--text);font-weight:700;text-align:left}.admin-home-shortcut-grid button:hover{border-color:var(--primary);background:var(--primary-light);color:var(--primary)}.evidence-row{display:flex;flex-wrap:wrap;gap:10px}.evidence-gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:12px;margin-top:16px}.evidence-thumb{aspect-ratio:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;border:1px solid var(--line);border-radius:var(--radius-md);background:var(--panel);cursor:pointer;padding:8px;transition:all var(--transition-fast);overflow:hidden}.evidence-thumb:hover{border-color:var(--primary);background:var(--primary-light);transform:translateY(-2px)}.evidence-thumb img{width:100%;height:100%;object-fit:cover;border-radius:var(--radius-sm)}.evidence-thumb span{font-size:11px;color:var(--text-muted);word-break:break-all;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.three-pane{display:grid;grid-template-columns:320px minmax(0,1fr) 280px;gap:20px}.admin-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:20px}.admin-health{display:grid;gap:18px}.admin-health-status{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:16px;border:1px solid var(--line);border-radius:var(--radius-md);background:var(--success-light);color:var(--success);font-weight:700}.system-health-status{color:var(--text);border-color:color-mix(in srgb,var(--success) 22%,var(--line))}.system-health-status.warn{background:var(--warning-light);border-color:color-mix(in srgb,var(--warning) 28%,var(--line))}.system-health-status.bad{background:var(--danger-light);border-color:color-mix(in srgb,var(--danger) 30%,var(--line))}.system-health-status-main{display:flex;gap:12px;align-items:center;min-width:0}.system-health-status-main svg{flex:0 0 auto;color:var(--success)}.system-health-status.warn .system-health-status-main svg{color:var(--warning)}.system-health-status.bad .system-health-status-main svg{color:var(--danger)}.system-health-status-main div{display:grid;gap:2px;min-width:0}.system-health-status-main span,.system-health-actions span,.system-health-date{color:var(--text-muted);font-size:12px;font-weight:700}.system-health-status-main strong{font-family:var(--font-heading);font-size:clamp(22px,3vw,32px);line-height:1.05}.system-health-status-main small{color:var(--text);font-size:14px;font-weight:600;line-height:1.35}.system-health-actions{display:flex;align-items:center;justify-content:flex-end;gap:10px;flex-wrap:wrap}.admin-health-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.admin-health-card{display:grid;grid-template-columns:auto 1fr;gap:8px 10px;min-height:104px;padding:16px;border:1px solid var(--line);border-radius:var(--radius-md)}.admin-health-card svg{color:var(--primary)}.admin-health-card.ok svg,.admin-health-card.ok strong{color:var(--success)}.admin-health-card.warn svg,.admin-health-card.warn strong{color:var(--warning)}.admin-health-card.bad svg,.admin-health-card.bad strong{color:var(--danger)}.admin-health-card span{color:var(--text-muted);font-size:13px;font-weight:700}.admin-health-card strong{grid-column:1 / -1;color:var(--text);font-family:var(--font-heading);font-size:clamp(20px,2vw,30px);line-height:1.1;overflow-wrap:anywhere}.admin-health-card small{grid-column:1 / -1;color:var(--text-muted);font-size:12px;font-weight:600;line-height:1.3}.system-health-section{display:grid;gap:10px}.system-health-section h3{margin:0;color:var(--primary-deep);font-size:15px}[data-theme=dark] .system-health-section h3{color:var(--text)}.system-health-checks,.system-health-tech-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.system-health-check,.system-health-tech{display:grid;gap:6px;min-width:0;padding:12px 14px;border:1px solid var(--line);border-radius:var(--radius-md);background:var(--panel)}.system-health-check{grid-template-columns:auto minmax(0,1fr);align-items:center}.system-health-check.ok{border-color:color-mix(in srgb,var(--success) 20%,var(--line))}.system-health-check.warn{border-color:color-mix(in srgb,var(--warning) 25%,var(--line))}.system-health-check.bad{border-color:color-mix(in srgb,var(--danger) 30%,var(--line))}.system-health-check div,.system-health-tech{min-width:0}.system-health-check strong,.system-health-tech strong{color:var(--text);font-size:14px;line-height:1.3}.system-health-check small,.system-health-tech span,.system-health-secret-note{color:var(--text-muted);font-size:12px;font-weight:600;line-height:1.3}.system-health-tech strong{overflow-wrap:anywhere}.system-health-tech .status-pill{margin-top:2px}.system-health-secret-note{margin:0}.system-health-date{text-align:right}.admin-stack{display:grid;gap:16px}.admin-toolbar,.admin-form-row{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px;align-items:center}.admin-toolbar{grid-template-columns:minmax(220px,1fr) auto}.admin-users-grid,.admin-points-grid{display:grid;gap:8px;align-items:center}.admin-users-grid{grid-template-columns:1.2fr 1fr .85fr .85fr 1.2fr}.admin-points-grid{grid-template-columns:1.2fr 1.4fr .75fr .55fr .65fr 1.4fr .8fr}.admin-users-grid input,.admin-users-grid select,.admin-points-grid input,.admin-points-grid select,.admin-form-row input,.admin-form-row select,.admin-toolbar input{width:100%;min-height:38px;padding:8px 10px;font-size:13px}.admin-actions,.admin-temp-password{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.admin-temp-password{padding:10px 12px;border:1px solid var(--line);border-radius:var(--radius-md);background:var(--primary-light)}.admin-temp-password code{font-size:13px;overflow-wrap:anywhere}.btn-compact{min-height:36px;padding:7px 10px;font-size:12.5px}.admin-members-console{gap:18px}.admin-members-header{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:20px;border:1px solid var(--line);border-radius:var(--radius-md)}.admin-members-header h2{margin:4px 0 2px;font-size:clamp(24px,3vw,34px);line-height:1.1}.admin-members-header p,.admin-modal-header p{margin:0;color:var(--text-muted);font-size:14px}.admin-members-eyebrow{color:var(--primary);font-size:12px;font-weight:800;letter-spacing:.04em;text-transform:uppercase}.admin-members-summary{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px}.admin-roster-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(132px,1fr));gap:12px}.admin-member-stat{display:grid;grid-template-columns:auto 1fr;gap:8px 10px;min-height:104px;padding:16px;border:1px solid var(--line);border-radius:var(--radius-md)}.admin-member-stat svg{color:var(--primary)}.admin-member-stat span{color:var(--text-muted);font-size:13px;font-weight:700}.admin-member-stat strong{grid-column:1 / -1;color:var(--text);font-family:var(--font-heading);font-size:30px;line-height:1}.admin-member-stat.success svg,.admin-member-stat.success strong{color:var(--success)}.admin-member-stat.warning svg,.admin-member-stat.warning strong{color:var(--warning)}.admin-member-stat.closed svg,.admin-member-stat.closed strong{color:var(--closed)}.admin-members-toolbar{grid-template-columns:minmax(240px,1fr) auto}.admin-search-field{width:100%}.admin-secret-panel{justify-content:space-between;padding:14px 16px}.admin-secret-panel>div{display:grid;gap:2px}.admin-secret-panel strong{color:var(--text)}.admin-secret-panel small{color:var(--text-muted);font-size:12px;font-weight:600}.data-table.admin-members-table{margin-bottom:0;overflow:visible;position:relative;z-index:1}.data-table-header.admin-member-row,.data-table-row.admin-member-row{display:grid;grid-template-columns:minmax(220px,1.5fr) minmax(120px,.7fr) minmax(130px,.7fr) 72px;align-items:center;gap:14px}.data-table-header.admin-member-row>*,.data-table-row.admin-member-row>*{flex:unset}.data-table-header.admin-member-row>:last-child{text-align:center}.admin-member-main{align-items:center}.admin-member-main strong{display:block;color:var(--text);line-height:1.2}.admin-member-username{display:block;margin-top:2px;color:var(--text-muted);font-size:13px}.role-badge.role-admin{background:var(--warning-light);color:var(--warning)}.role-badge.role-reviewer{background:var(--primary-light);color:var(--primary)}.role-badge.role-teacher{background:var(--success-light);color:var(--success)}.admin-status-cell{display:flex;align-items:center;gap:10px;min-width:0}.member-switch{display:inline-flex;align-items:center;width:48px;min-height:28px;padding:3px;border:1px solid var(--line);border-radius:var(--radius-pill);background:var(--closed-light);cursor:pointer;transition:background var(--transition-fast),border-color var(--transition-fast),opacity var(--transition-fast)}.member-switch span{width:20px;height:20px;border-radius:50%;background:#fff;box-shadow:var(--shadow-sm);transition:transform var(--transition-fast)}.member-switch.on{border-color:var(--success);background:var(--success)}.member-switch.on span{transform:translate(18px)}.member-switch.saving{opacity:.65;cursor:wait}.admin-member-actions{display:flex;justify-content:center;gap:8px;position:relative}.admin-member-actions .btn-compact{white-space:nowrap}.admin-action-trigger{width:42px;justify-content:center}.admin-action-menu{position:fixed;right:auto;z-index:1200;box-sizing:border-box;display:grid;min-width:250px;max-height:calc(100vh - 24px);padding:6px;border:1px solid var(--line);border-radius:var(--radius-md);background:var(--panel);box-shadow:var(--shadow-lg);overflow-y:auto}.admin-action-menu button{justify-content:flex-start;min-height:40px;padding:9px 10px;border:none;background:transparent;color:var(--text);font-size:13px}.admin-action-menu button:hover,.admin-action-menu button:focus-visible{background:var(--primary-light);color:var(--primary)}.admin-action-menu button.danger-action{color:var(--danger)}.admin-action-menu button.danger-action:hover,.admin-action-menu button.danger-action:focus-visible{background:var(--danger-light);color:var(--danger)}.admin-action-sheet-backdrop{display:none}.admin-member-modal{max-width:560px}.profile-photo-section{display:flex;gap:14px;align-items:center;margin-bottom:18px;padding:14px;border:1px solid var(--line);border-radius:var(--radius-md);background:var(--primary-light)}.point-photo-section{display:flex;gap:14px;align-items:center;margin-bottom:18px;padding:14px;border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface)}.profile-photo-preview{display:flex;align-items:center;justify-content:center;width:76px;height:76px;border-radius:50%;background:var(--primary);color:var(--text-on-primary);font-size:24px;font-weight:800;overflow:hidden;flex:0 0 auto}.point-photo-preview{display:grid;place-items:center;width:132px;height:92px;overflow:hidden;flex:0 0 auto;border:1px solid var(--line);border-radius:var(--radius-md);background:var(--panel);color:var(--text-muted);font-size:12px;font-weight:800;text-align:center}.point-photo-preview span{display:grid;gap:6px;place-items:center;padding:8px}.profile-photo-controls{display:grid;gap:7px;min-width:0}.profile-photo-controls small,.profile-photo-error{color:var(--text-muted);font-size:12px;font-weight:700}.profile-photo-error{color:var(--danger)}.profile-photo-actions{display:flex;flex-wrap:wrap;gap:8px}.profile-photo-picker{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:36px;padding:7px 10px;border:1px solid var(--line);border-radius:var(--radius-md);background:var(--panel);color:var(--text);font-size:12.5px;font-weight:800;cursor:pointer}.profile-photo-picker input{position:absolute;inset:0;width:100%;opacity:0;cursor:pointer}.profile-photo-picker:has(input:disabled){opacity:.55;cursor:wait}.admin-modal-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:18px;padding-bottom:14px;border-bottom:1px solid var(--line)}.admin-modal-header h3{display:flex;align-items:center;gap:8px;margin:0 0 4px;color:var(--primary)}.admin-member-form{padding:0;margin-bottom:0}.admin-modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:6px}.admin-reset-warning{display:flex;gap:10px;align-items:flex-start;padding:14px;border:1px solid var(--warning);border-radius:var(--radius-md);background:var(--warning-light);color:var(--warning);font-weight:700}.admin-reset-warning.danger{border-color:var(--danger);background:var(--danger-light);color:var(--danger)}.admin-locations-console{gap:18px}.admin-location-summary{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:12px}.admin-location-stat{display:grid;grid-template-columns:auto 1fr;gap:8px 10px;min-height:104px;padding:16px;border:1px solid var(--line);border-radius:var(--radius-md)}.admin-location-stat svg{color:var(--primary)}.admin-location-stat span{color:var(--text-muted);font-size:13px;font-weight:700}.admin-location-stat strong{grid-column:1 / -1;color:var(--text);font-family:var(--font-heading);font-size:30px;line-height:1}.admin-location-stat.success svg,.admin-location-stat.success strong{color:var(--success)}.admin-location-stat.warning svg,.admin-location-stat.warning strong{color:var(--warning)}.admin-location-stat.closed svg,.admin-location-stat.closed strong{color:var(--closed)}.admin-location-toolbar{grid-template-columns:minmax(240px,1.35fr) minmax(150px,.85fr) minmax(140px,.75fr) minmax(130px,.7fr) auto}.admin-roster-toolbar{grid-template-columns:minmax(240px,1.35fr) minmax(150px,.8fr) minmax(140px,.75fr) auto}.admin-roster-select{max-width:520px}.admin-roster-readiness{display:grid;grid-template-columns:minmax(220px,.9fr) minmax(260px,1.4fr) minmax(180px,auto);align-items:center;gap:14px;padding:16px;border:1px solid var(--line);border-radius:var(--radius-md)}.admin-roster-readiness h3{margin:4px 0 2px;color:var(--text);font-size:18px}.admin-roster-readiness p{margin:0;color:var(--text-muted);font-size:13px}.readiness-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:8px}.readiness-item{display:flex;align-items:center;gap:6px;min-height:34px;padding:7px 9px;border:1px solid var(--line);border-radius:var(--radius-sm);color:var(--text-muted);font-size:12px;font-weight:800}.readiness-item strong{margin-left:auto;color:var(--text);white-space:nowrap}.readiness-item.passed svg,.readiness-item.passed strong{color:var(--success)}.readiness-item.blocked svg,.readiness-item.blocked strong{color:var(--warning)}.readiness-blockers{grid-column:1 / -1;display:flex;flex-wrap:wrap;gap:6px}.readiness-blockers span{padding:5px 8px;border-radius:var(--radius-sm);background:color-mix(in srgb,var(--warning) 10%,transparent);color:var(--text-muted);font-size:12px;font-weight:800}.admin-roster-table{margin-bottom:0}.data-table-header.admin-roster-row,.data-table-row.admin-roster-row{display:grid;grid-template-columns:64px minmax(150px,1.1fr) minmax(90px,.6fr) minmax(160px,1fr) minmax(120px,.75fr) minmax(150px,1fr) minmax(120px,.75fr) minmax(180px,1.2fr) minmax(90px,.6fr) minmax(110px,.75fr);align-items:center;gap:12px}.data-table-header.admin-roster-row>*,.data-table-row.admin-roster-row>*{min-width:0;flex:unset}.admin-roster-row strong,.admin-roster-row span{overflow-wrap:anywhere}.admin-roster-point{color:var(--text-muted);font-size:12px;font-weight:700}.data-table-header.admin-roster-edit-row,.data-table-row.admin-roster-edit-row{grid-template-columns:58px minmax(150px,1fr) minmax(180px,1.2fr) minmax(180px,1.2fr) minmax(190px,1.25fr) minmax(120px,.75fr) minmax(90px,.6fr) minmax(150px,.85fr)}.admin-roster-main-cell{display:grid;gap:6px;min-width:0}.admin-roster-main-cell strong{color:var(--text);line-height:1.25}.admin-roster-field{display:grid;gap:6px;min-width:0}.admin-roster-field>span{overflow:hidden;color:var(--text-muted);font-size:12px;font-weight:800;line-height:1.2;text-overflow:ellipsis;white-space:nowrap}.admin-roster-field select{width:100%;min-height:38px;padding:8px 10px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--panel);color:var(--text);font-size:13px}.admin-roster-status-cell,.admin-roster-actions{display:flex;flex-wrap:wrap;align-items:center;gap:6px}.admin-roster-status-cell small{width:100%;color:var(--text-muted);font-size:11px;font-weight:700}.admin-roster-actions{justify-content:flex-end}.admin-roster-actions .btn-compact{min-height:34px;padding:7px 9px;font-size:12px}.admin-location-table{margin-bottom:0;overflow:visible;position:relative;z-index:1}.data-table-header.admin-location-row,.data-table-row.admin-location-row{display:grid;grid-template-columns:72px minmax(140px,1fr) minmax(190px,1.25fr) minmax(95px,.6fr) minmax(58px,.38fr) minmax(120px,.72fr) minmax(160px,1.05fr) 72px;align-items:center;gap:14px}.data-table-header.admin-location-row>*,.data-table-row.admin-location-row>*{flex:unset}.data-table-header.admin-location-row>:last-child{text-align:center}.admin-location-book,.admin-location-main{display:grid;gap:3px;min-width:0}.admin-location-book span{display:none}.admin-location-book strong,.admin-location-main strong{overflow:hidden;color:var(--text);font-size:14px;line-height:1.25;text-overflow:ellipsis;white-space:nowrap}.admin-location-main em{justify-self:start;padding:3px 8px;border-radius:var(--radius-pill);background:var(--warning-light);color:var(--warning);font-size:11px;font-style:normal;font-weight:800}.admin-point-thumb{display:grid;place-items:center;width:64px;height:48px;overflow:hidden;border:1px solid var(--line);border-radius:var(--radius-md);background:var(--panel);color:var(--text-muted)}.period-badge,.order-badge{justify-self:start;min-width:0;padding:5px 9px;border-radius:var(--radius-pill);background:var(--primary-light);color:var(--primary);font-size:12px;font-weight:800}.order-badge{min-width:42px;text-align:center;background:var(--surface);color:var(--text-muted)}.admin-location-detail{display:-webkit-box;margin:0;overflow:hidden;color:var(--text-muted);font-size:13px;line-height:1.35;-webkit-box-orient:vertical;-webkit-line-clamp:2}.queue-item{display:flex;flex-direction:column;align-items:flex-start;gap:8px;width:100%;padding:14px 14px 14px 18px;border:1px solid var(--line);border-radius:var(--radius-md);background:var(--panel);margin-bottom:10px;cursor:pointer;position:relative;transition:all var(--transition-fast);border-left:4px solid var(--closed)}.queue-item:hover{box-shadow:var(--shadow-md);transform:translate(2px)}.queue-item.normal{border-left-color:var(--success)}.queue-item.incident{border-left-color:var(--warning)}.queue-item.urgent{border-left-color:var(--danger)}.queue-item span{color:var(--text-muted);font-size:13px}.list-item,.table-list>div{display:flex;justify-content:space-between;align-items:center;gap:12px;width:100%;padding:14px;border:1px solid var(--line);border-radius:var(--radius-md);background:var(--panel);margin-bottom:8px;transition:box-shadow var(--transition-fast)}.list-item:hover,.table-list>div:hover{box-shadow:var(--shadow-sm)}.muted,.table-list span,.queue-item span{color:var(--text-muted)}.queue-item.active{background:var(--primary-light);border-left-color:var(--primary)!important;transform:translate(4px)}[data-theme=dark] .queue-item.active{background:#ffffff14}.action-buttons{display:grid;grid-template-columns:1fr;gap:12px}.btn-action{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;font-weight:700;font-size:14px;border:none;border-radius:var(--radius-md);color:#fff;cursor:pointer;transition:all var(--transition-fast)}.btn-action:disabled{opacity:.5;cursor:not-allowed;transform:none!important;box-shadow:none!important;background:var(--line)!important;color:var(--text-muted)!important}.btn-approve{background:var(--success)}.btn-approve:hover:not(:disabled){background:#299236;box-shadow:0 4px 12px #399e4333;transform:translateY(-1px)}.btn-return{background:var(--warning)}.btn-return:hover:not(:disabled){background:#c57d00;background:oklch(65% .16 70);box-shadow:0 4px 12px #d5880033;box-shadow:0 4px 12px oklch(69% .16 70 / .2);transform:translateY(-1px)}.btn-close{background:var(--closed)}.btn-close:hover:not(:disabled){background:#414853;box-shadow:0 4px 12px #4f566133;transform:translateY(-1px)}.action-pane{display:grid;align-content:start;gap:12px}.review-action-pending{color:var(--primary);font-weight:700}.export-link{display:inline-flex;align-items:center;gap:6px;margin:12px 0;font-weight:700;font-family:var(--font-heading);color:var(--primary)}.admin-table{width:100%;border-collapse:collapse;font-size:14px}.admin-table thead th{text-align:left;padding:14px 16px;font-family:var(--font-heading);font-weight:700;font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);border-bottom:2px solid var(--line);position:sticky;top:0;background:var(--panel)}.admin-table tbody td{padding:14px 16px;border-bottom:1px solid var(--line);vertical-align:middle}.admin-table tbody tr:nth-child(2n){background:var(--primary-light)}[data-theme=dark] .admin-table tbody tr:nth-child(2n){background:#ffffff08}.admin-table tbody tr:hover{background:#154fac0f}.admin-table .action-btn{min-height:36px;padding:6px 12px;font-size:13px;border-radius:var(--radius-sm)}.toggle-switch{position:relative;display:inline-block;width:48px;height:26px}.toggle-switch input{opacity:0;width:0;height:0;min-height:0}.toggle-switch .slider{position:absolute;inset:0;background:var(--closed);border-radius:var(--radius-pill);cursor:pointer;transition:background var(--transition-fast)}.toggle-switch .slider:before{content:"";position:absolute;height:20px;width:20px;left:3px;bottom:3px;background:#fff;border-radius:50%;transition:transform var(--transition-fast)}.toggle-switch input:checked+.slider{background:var(--success)}.toggle-switch input:checked+.slider:before{transform:translate(22px)}.toast-container,.toast-stack{position:fixed;top:20px;right:20px;z-index:1000;display:grid;gap:10px;pointer-events:none}.toast{pointer-events:auto;display:flex;align-items:center;gap:12px;min-width:300px;max-width:440px;padding:16px 20px;border-radius:var(--radius-md);background:var(--glass-surface);border:1px solid var(--glass-border);backdrop-filter:blur(16px) saturate(1.5);-webkit-backdrop-filter:blur(16px) saturate(1.5);box-shadow:var(--shadow-lg);font-weight:500;animation:toast-slide-in .4s cubic-bezier(.16,1,.3,1) forwards}.toast.exit{animation:toast-fade-out .3s ease forwards}.toast.success{border-left:4px solid var(--success)}.toast.warning{border-left:4px solid var(--warning)}.toast.danger{border-left:4px solid var(--danger)}.toast.info{border-left:4px solid var(--primary)}.toast .toast-close{margin-left:auto;min-height:28px;min-width:28px;padding:0;border:none;background:transparent;color:var(--text-muted);font-size:18px;display:grid;place-items:center;border-radius:50%}.toast .toast-close:hover{background:var(--danger-light);color:var(--danger);transform:none;box-shadow:none}@keyframes toast-slide-in{0%{opacity:0;transform:translate(80px) scale(.95)}to{opacity:1;transform:translate(0) scale(1)}}@keyframes toast-fade-out{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(80px) scale(.95)}}.lightbox-overlay{position:fixed;inset:0;z-index:900;display:grid;place-items:center;background:#000000d9;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);animation:fade-in .25s ease;cursor:zoom-out}.lightbox-img{max-width:92vw;max-height:90vh;border-radius:var(--radius-md);box-shadow:0 24px 80px #00000080;object-fit:contain;cursor:default}.lightbox-close{position:absolute;top:20px;right:20px;width:48px;height:48px;min-height:48px;border-radius:50%;background:#ffffff26;border:1px solid rgba(255,255,255,.2);color:#fff;font-size:22px;display:grid;place-items:center;padding:0;cursor:pointer;transition:background var(--transition-fast)}.lightbox-close:hover{background:#ffffff4d;transform:none;box-shadow:none}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes slide-in-right{0%{opacity:0;transform:translate(30px)}to{opacity:1;transform:translate(0)}}@keyframes slide-in-up{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}@keyframes fade-out{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.97)}}@keyframes shimmer{0%{background-position:-400px 0}to{background-position:400px 0}}.page-enter{animation:slide-in-right .35s cubic-bezier(.16,1,.3,1) forwards}.page-exit{animation:fade-out .2s ease forwards}.animate-fade-in{animation:fade-in .5s cubic-bezier(.16,1,.3,1) forwards}.animate-slide-in-up{animation:slide-in-up .5s cubic-bezier(.16,1,.3,1) forwards}.skeleton{background:linear-gradient(90deg,var(--line) 25%,var(--primary-light) 50%,var(--line) 75%);background-size:800px 100%;animation:shimmer 1.8s ease infinite;border-radius:var(--radius-md)}.theme-toggle{position:relative;width:44px;height:44px;min-height:44px;border-radius:50%;border:1px solid var(--line);background:var(--panel);display:grid;place-items:center;padding:0;font-size:20px;cursor:pointer;transition:all var(--transition-fast);overflow:hidden}.theme-toggle:hover{background:var(--primary-light);border-color:var(--primary);transform:rotate(15deg)}.theme-toggle .icon-sun,.theme-toggle .icon-moon{position:absolute;transition:transform .4s cubic-bezier(.16,1,.3,1),opacity .3s ease}.theme-toggle .icon-sun{opacity:1;transform:rotate(0) scale(1)}.theme-toggle .icon-moon{opacity:0;transform:rotate(-90deg) scale(.5)}[data-theme=dark] .theme-toggle .icon-sun{opacity:0;transform:rotate(90deg) scale(.5)}[data-theme=dark] .theme-toggle .icon-moon{opacity:1;transform:rotate(0) scale(1)}.data-table{width:100%;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--shadow-sm);margin-bottom:24px}.data-table-header,.data-table-row{display:flex;align-items:center;justify-content:space-between;padding:14px 20px;gap:16px}.data-table-header{background:var(--primary-light);border-bottom:2px solid var(--line);font-weight:700;font-family:var(--font-heading);font-size:13px;color:var(--primary-deep);text-transform:uppercase;letter-spacing:.05em}[data-theme=dark] .data-table-header{background:#ffffff08;color:var(--text)}.data-table-row{border-bottom:1px solid var(--line);transition:background var(--transition-fast)}.data-table-row:last-child{border-bottom:none}.data-table-row.row-alt{background:#fff3}[data-theme=dark] .data-table-row.row-alt{background:#ffffff03}.data-table-row:hover{background:#154fac0d}.data-table-header>*,.data-table-row>*{flex:1;min-width:0;text-align:left}.data-table-header>*:first-child,.data-table-row>*:first-child{flex:2}.user-cell{display:flex;align-items:center;gap:10px;font-weight:600}.user-avatar-sm{width:32px;height:32px;border-radius:50%;background:var(--primary);color:var(--text-on-primary);display:flex;align-items:center;justify-content:center;font-weight:700;font-size:13px;flex-shrink:0;overflow:hidden}.user-avatar-tiny{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:50%;background:var(--primary);color:var(--text-on-primary);font-size:11px;font-weight:800;overflow:hidden;flex:0 0 auto}.admin-roster-user-label{display:flex;align-items:center;gap:7px;min-width:0}.admin-roster-user-label span:last-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.role-badge{display:inline-flex;padding:4px 10px;border-radius:var(--radius-pill);font-size:12px;font-weight:600;background:var(--primary-light);color:var(--primary);width:fit-content}.status-pill{display:inline-flex;padding:4px 10px;border-radius:var(--radius-pill);font-size:12px;font-weight:600;width:fit-content}.status-pill.status-normal,.status-pill.status-reviewed,.status-pill.status-approved{background:var(--success-light);color:var(--success)}.status-pill.status-incident,.status-pill.status-pending{background:var(--warning-light);color:var(--warning)}.status-pill.status-urgent,.status-pill.status-returned,.status-pill.status-rejected{background:var(--danger-light);color:var(--danger)}.status-pill.status-closed{background:var(--line);color:var(--text-muted)}.table-empty{padding:32px;text-align:center;color:var(--text-muted);width:100%}.admin-form{padding:24px;border-radius:var(--radius-lg);display:grid;gap:16px;align-content:start;margin-bottom:24px}.admin-form h3{display:flex;align-items:center;gap:8px;color:var(--primary);margin-bottom:8px}.form-field{display:grid;gap:6px}.form-field label{font-size:13px;font-weight:700;color:var(--text-muted)}.form-row-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.btn-full{width:100%}.report-console{display:grid;gap:18px}.report-console-header{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:20px;border:1px solid var(--line);border-radius:var(--radius-md);background:var(--panel)}.report-console-header h2{margin:4px 0 2px;font-size:clamp(24px,3vw,34px);line-height:1.1}.report-console-header p{max-width:760px;margin:0;color:var(--text-muted);font-size:14px}.report-console-actions{display:flex;gap:10px;align-items:center;justify-content:flex-end;flex-wrap:wrap}.report-filters{display:grid;grid-template-columns:repeat(4,minmax(150px,1fr)) auto;gap:10px;align-items:end;padding:14px;border:1px solid var(--line);border-radius:var(--radius-md);background:var(--panel)}.report-filters .form-field{margin:0}.report-filters .form-field>span{color:var(--text-muted);font-size:12px;font-weight:800}.report-filters input,.report-filters select{width:100%;min-height:40px;padding:8px 10px;font-size:13px}.report-advanced-filters{grid-column:1 / -1;border-top:1px solid var(--line);padding-top:10px}.report-advanced-filters summary{cursor:pointer;color:var(--text-muted);font-size:13px;font-weight:800}.report-advanced-filter-grid{display:grid;grid-template-columns:repeat(4,minmax(150px,1fr)) auto;gap:10px;align-items:end;padding-top:12px}.report-clear-btn{min-height:40px;white-space:nowrap}.report-screen-area{display:grid;gap:14px}.report-checkbox-field{justify-content:end}.report-inline-check{display:flex;align-items:center;gap:8px;min-height:40px;padding:8px 10px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);font-size:13px;font-weight:700}.report-inline-check input{width:16px;height:16px;min-height:0;padding:0}.report-print-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:16px 18px;border:1px solid var(--line);border-radius:var(--radius-md);background:var(--primary-light)}.report-print-header div{display:grid;gap:3px}.report-print-header strong{color:var(--primary-deep);font-size:18px}.report-print-header span,.report-print-header small{color:var(--text-muted);font-size:13px;font-weight:700}.report-summary-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px}.report-summary-card{display:grid;grid-template-columns:auto 1fr;gap:6px 8px;min-height:94px;padding:12px;border:1px solid var(--line);border-radius:var(--radius-md);background:var(--panel);min-width:0}.report-summary-card svg{color:var(--primary)}.report-summary-card.ok svg,.report-summary-card.ok strong{color:var(--success)}.report-summary-card.warn svg,.report-summary-card.warn strong{color:var(--warning)}.report-summary-card.bad svg,.report-summary-card.bad strong{color:var(--danger)}.report-summary-card span{color:var(--text-muted);font-size:12px;font-weight:800;line-height:1.2}.report-summary-card strong{grid-column:1 / -1;color:var(--text);font-family:var(--font-heading);font-size:28px;line-height:1}.report-summary-card small{grid-column:1 / -1;color:var(--text-muted);font-size:11.5px;font-weight:700;line-height:1.25}.report-table{display:grid;overflow:hidden;border:1px solid var(--line);border-radius:var(--radius-md);background:var(--panel)}.report-row{display:grid;grid-template-columns:1.15fr 1fr 1.35fr 1.05fr 1fr 1fr 1.35fr 86px;gap:10px;align-items:center;min-height:68px;padding:11px 14px;border-bottom:1px solid var(--line)}.report-row:last-child{border-bottom:0}.report-row-header{min-height:42px;background:var(--primary-light);color:var(--primary);font-size:12px;font-weight:800}.report-row>span{min-width:0;color:var(--text);font-size:13px;line-height:1.3}.report-row strong,.report-row small{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis}.report-row small,.report-note{color:var(--text-muted);font-size:12px}.report-row .status-pill{margin:2px 4px 2px 0}.report-note{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2}.report-empty{padding:28px;border:0}.report-detail-modal{max-width:680px}.report-detail-grid{display:grid;grid-template-columns:150px minmax(0,1fr);gap:8px 12px;padding:14px;border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface)}.report-detail-grid span{color:var(--text-muted);font-size:12px;font-weight:800}.report-detail-grid strong{min-width:0;color:var(--text);font-size:13px;overflow-wrap:anywhere}.report-detail-note{display:grid;gap:6px;margin:12px 0;padding:14px;border:1px solid var(--line);border-radius:var(--radius-md)}.report-detail-note p{margin:0;color:var(--text-muted);line-height:1.45}@media(max-width:900px){body{font-size:17px}.app-shell{grid-template-columns:1fr}.sidebar{display:none}.bottom-nav{display:block}.workspace{padding:16px 14px calc(72px + env(safe-area-inset-bottom,0))}.topbar{position:static;flex-direction:column;align-items:stretch;gap:12px;margin-bottom:16px;padding:16px}.topbar h1{font-size:24px}.date-control{width:100%}.task-grid,.metric-grid,.two-col,.three-pane,.admin-grid,.admin-health-grid,.form-grid,.admin-health-status,.admin-toolbar,.admin-form-row,.admin-users-grid,.admin-points-grid{grid-template-columns:1fr}.three-pane .queue-pane{order:0}.review-mobile-action-bar{order:1;position:sticky;top:calc(60px + env(safe-area-inset-top,0px));z-index:30;align-self:start;box-shadow:var(--shadow-md)}.three-pane .detail-pane{order:2}.admin-health-status{align-items:flex-start}.system-health-status{display:grid}.system-health-actions{justify-content:flex-start}.system-health-checks,.system-health-tech-grid{grid-template-columns:1fr}.admin-health-card{min-height:74px;padding:12px}.report-console{gap:12px}.report-console-header{display:grid;gap:12px;padding:14px}.report-console-header h2{font-size:24px}.report-console-actions{display:grid;grid-template-columns:1fr 1fr}.report-console-actions button{width:100%;min-width:0;padding-inline:10px}.report-filters{grid-template-columns:1fr;padding:12px}.report-advanced-filter-grid{grid-template-columns:1fr}.report-summary-grid{display:flex;gap:6px;margin-right:-14px;padding:0 14px 2px 0;overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x proximity}.report-summary-card{flex:0 0 126px;min-height:76px;padding:10px;scroll-snap-align:start}.report-summary-card svg{width:15px;height:15px}.report-summary-card span{overflow:hidden;font-size:11px;text-overflow:ellipsis;white-space:nowrap}.report-summary-card strong{font-size:24px}.report-summary-card small{font-size:10.5px}.report-print-header{display:grid;gap:8px;padding:12px}.report-row-header{display:none}.report-row{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"point detail" "time status" "teacher reviewer" "note note";gap:6px 10px;min-height:124px;padding:12px}.report-row>span:nth-child(1){grid-area:time}.report-row>span:nth-child(2){grid-area:teacher}.report-row>span:nth-child(3){grid-area:point}.report-row>span:nth-child(4){grid-area:status;text-align:right}.report-row>span:nth-child(5){grid-area:reviewer;text-align:right}.report-row>span:nth-child(6){display:none}.report-row>span:nth-child(7){grid-area:note}.report-row>span:nth-child(8){grid-area:detail;justify-self:end}.report-row>span{font-size:12.5px}.report-detail-grid{grid-template-columns:1fr}.admin-panel{overflow:hidden}.admin-tabs{display:flex;flex-wrap:nowrap;gap:8px;margin:-2px -2px 12px;padding:2px 2px 8px;overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:none}.admin-tabs::-webkit-scrollbar,.admin-members-summary::-webkit-scrollbar,.admin-roster-summary::-webkit-scrollbar,.admin-location-summary::-webkit-scrollbar,.report-summary-grid::-webkit-scrollbar{display:none}.admin-tab{min-height:42px;padding:8px 12px;border:1px solid var(--line);border-radius:var(--radius-pill);background:var(--panel);color:var(--text-muted);flex:0 0 auto;gap:6px;font-size:14px;white-space:nowrap}.admin-tab svg{display:none}.admin-tab.active{border-color:var(--primary);background:var(--primary-light);color:var(--primary)}.admin-tab .tab-underline{display:none}.admin-members-header{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:6px 10px;padding:12px}.admin-members-header>div{min-width:0}.admin-members-eyebrow{display:none}.admin-members-header h2{margin:0;font-size:22px}.admin-members-header p{display:none}.admin-members-header .btn-primary{min-height:40px;padding:8px 12px;white-space:nowrap}.admin-members-summary,.admin-roster-summary{display:flex;gap:6px;margin-right:-14px;padding:0 14px 2px 0;overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x proximity}.admin-roster-summary .admin-member-stat{flex:0 0 124px}.admin-roster-readiness{grid-template-columns:1fr;gap:10px;padding:12px}.admin-roster-readiness .btn-primary{width:100%}.readiness-list{grid-template-columns:1fr}.admin-member-stat{flex:0 0 112px;min-height:52px;padding:8px 10px;gap:2px 6px;scroll-snap-align:start}.admin-member-stat svg{width:15px;height:15px}.admin-member-stat span{overflow:hidden;font-size:11px;line-height:1.15;text-overflow:ellipsis;white-space:nowrap}.admin-member-stat strong{font-size:20px}.admin-members-toolbar{grid-template-columns:minmax(0,1fr) 46px;gap:8px}.admin-members-toolbar .btn-secondary{width:46px;min-width:46px;min-height:46px;padding:0;justify-content:center;overflow:hidden;font-size:0}.admin-members-toolbar .btn-secondary svg{width:18px;height:18px}.admin-search-field input{min-height:46px}.admin-search-field input.with-icon-left{padding-left:48px;font-size:14px}.admin-members-console{gap:10px;padding-bottom:calc(160px + env(safe-area-inset-bottom,0px))}.admin-locations-console{gap:10px}.admin-location-summary{display:flex;gap:6px;margin-right:-14px;padding:0 14px 2px 0;overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x proximity}.admin-location-stat{flex:0 0 122px;min-height:54px;padding:8px 10px;gap:2px 6px;scroll-snap-align:start}.admin-location-stat svg{width:15px;height:15px}.admin-location-stat span{overflow:hidden;font-size:11px;line-height:1.15;text-overflow:ellipsis;white-space:nowrap}.admin-location-stat strong{font-size:20px}.admin-location-toolbar,.admin-roster-toolbar{grid-template-columns:minmax(0,1fr) 46px;gap:8px}.admin-roster-toolbar .admin-search-field{grid-column:1 / 2}.admin-roster-toolbar select,.admin-roster-select{grid-column:1 / -1;min-height:42px;max-width:none;font-size:14px}.admin-location-toolbar .admin-search-field{grid-column:1 / 2}.admin-location-toolbar select{grid-column:1 / -1;min-height:42px;font-size:14px}.admin-location-toolbar .btn-secondary{width:46px;min-width:46px;min-height:46px;padding:0;justify-content:center;overflow:hidden;font-size:0}.admin-location-toolbar .btn-secondary svg{width:18px;height:18px}.admin-roster-toolbar .btn-secondary{width:46px;min-width:46px;min-height:46px;padding:0;justify-content:center;overflow:hidden;font-size:0}.admin-roster-toolbar .btn-secondary svg{width:18px;height:18px}.data-table-header.admin-member-row{display:none}.data-table-row.admin-member-row{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"member actions" "role status";align-items:center;gap:4px 10px;min-height:96px;padding:10px 12px}.admin-member-main{grid-area:member;gap:10px;min-width:0}.admin-member-main strong{overflow:hidden;font-size:17px;line-height:1.2;text-overflow:ellipsis;white-space:nowrap}.admin-member-username{display:block;margin-top:2px;color:var(--text-muted);font-size:10.5px;font-weight:600;line-height:1.1}.admin-member-username:before{content:"ชื่อผู้ใช้: "}.admin-member-row>.role-badge{grid-area:role;margin-left:50px;padding:3px 9px;font-size:11.5px}.admin-member-actions{grid-area:actions;align-self:start;justify-content:flex-end}.admin-action-trigger{width:38px;min-height:38px;padding:0}.admin-status-cell{grid-area:status;align-items:center;flex-direction:row;justify-content:flex-end}.admin-status-cell .status-pill{display:none}.admin-status-cell .member-switch{width:44px;min-height:26px}.admin-status-cell .member-switch span{width:18px;height:18px}.admin-status-cell .member-switch.on span{transform:translate(18px)}.data-table-header.admin-location-row,.data-table-header.admin-roster-row{display:none}.data-table-row.admin-roster-row{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"location review" "period order" "responsible user" "reviewer reviewer-status" "point point" "note note";gap:6px 10px;min-height:172px;padding:12px}.admin-roster-row>.order-badge{grid-area:order;justify-self:end}.admin-roster-row>strong{grid-area:location;font-size:16px;line-height:1.25}.admin-roster-row>.period-badge{grid-area:period;justify-self:start}.admin-roster-row>:nth-child(4){grid-area:responsible}.admin-roster-row>:nth-child(5){grid-area:user;justify-self:end}.admin-roster-row>:nth-child(6){grid-area:reviewer;color:var(--text-muted);font-size:12px}.admin-roster-row>:nth-child(7){grid-area:reviewer-status;justify-self:end}.admin-roster-row>:nth-child(8){grid-area:point}.admin-roster-row>:nth-child(9){grid-area:note;color:var(--text-muted);font-size:12px}.admin-roster-row>:nth-child(10){grid-area:review;justify-self:end}.data-table-row.admin-roster-edit-row{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"location order" "responsible responsible" "reviewer reviewer" "point point" "status status" "note note" "actions actions";min-height:0}.admin-roster-edit-row>.order-badge{grid-area:order;justify-self:end}.admin-roster-edit-row>.admin-roster-main-cell{grid-area:location}.admin-roster-edit-row>.admin-roster-field:nth-of-type(1){grid-area:responsible}.admin-roster-edit-row>.admin-roster-field:nth-of-type(2){grid-area:reviewer}.admin-roster-edit-row>.admin-roster-field:nth-of-type(3){grid-area:point}.admin-roster-edit-row>.admin-roster-status-cell{grid-area:status}.admin-roster-edit-row>.admin-roster-actions{grid-area:actions;justify-content:stretch}.admin-roster-edit-row>.admin-roster-actions .btn-compact{flex:1 1 120px;justify-content:center}.admin-roster-edit-row>:nth-child(7){grid-area:note;color:var(--text-muted);font-size:12px}.data-table-row.admin-location-row{grid-template-columns:72px minmax(0,1fr) auto;grid-template-areas:"photo point actions" "photo book status" "period period order" "detail detail detail";align-items:center;gap:6px 10px;min-height:128px;padding:12px}.admin-location-row>.admin-point-thumb{grid-area:photo;align-self:start}.admin-location-main{grid-area:point;min-width:0}.admin-location-main strong{font-size:16px}.admin-location-book{grid-area:book;gap:1px;min-width:0}.admin-location-book span{display:block;color:var(--text-muted);font-size:10px;font-weight:800;letter-spacing:.02em}.admin-location-book strong{font-size:12px}.admin-location-row>.period-badge{grid-area:period;justify-self:start}.admin-location-row>.order-badge{grid-area:order;justify-self:end}.admin-location-row>.admin-status-cell{grid-area:status;justify-content:flex-end}.admin-location-row>.admin-member-actions{grid-area:actions;align-self:start;justify-content:flex-end}.admin-location-detail{grid-area:detail;font-size:12px;-webkit-line-clamp:2}.point-reference-card,.point-photo-section{grid-template-columns:1fr}.point-reference-card,.point-photo-section{display:grid}.point-photo-preview{width:100%;height:auto;aspect-ratio:4 / 3}.admin-action-sheet-backdrop{position:fixed;inset:0;z-index:1000;display:block;width:100%;min-height:0;padding:0;border:0;border-radius:0;background:#0f172a6b;backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px)}.admin-action-menu{position:fixed;top:auto;right:12px;bottom:calc(70px + env(safe-area-inset-bottom,0px));left:12px;z-index:1201;gap:4px;min-width:0;max-width:none;padding:12px;border-radius:18px 18px 16px 16px}.admin-action-menu:before{content:"";width:42px;height:4px;margin:0 auto 6px;border-radius:999px;background:var(--line)}.admin-action-menu button{width:100%;min-height:48px;border-radius:var(--radius-sm);font-size:14px}.admin-secret-panel{align-items:flex-start;flex-direction:column}.admin-modal-actions,.admin-modal-actions button{width:100%}.admin-modal-actions{flex-direction:column-reverse}button{min-height:52px}input,select,textarea{min-height:50px;font-size:16px}.auth-composition{grid-template-columns:1fr}.auth-brand-rail{min-height:auto;padding:32px 20px;border-right:none;border-bottom:1px solid var(--line)}.auth-school-line-art{display:none}.auth-main{padding:32px 16px}.auth-card{max-width:100%;padding:28px 22px}.donut-chart{--size: 150px;--thickness: 22px}.admin-table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}.toast-container,.toast-stack{left:12px;right:12px;top:12px}.toast{min-width:unset;width:100%;animation:toast-mobile-slide-in .4s cubic-bezier(.16,1,.3,1) forwards}.toast.exit{animation:toast-mobile-fade-out .3s ease forwards}.toast>span{min-width:0;overflow-wrap:anywhere}.toast .toast-close{width:48px;height:48px;min-width:48px;min-height:48px;flex:0 0 48px}@keyframes toast-mobile-slide-in{0%{opacity:0;transform:translateY(-12px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes toast-mobile-fade-out{0%{opacity:1;transform:translateY(0) scale(1)}to{opacity:0;transform:translateY(-8px) scale(.98)}}}@media(max-width:480px){.metric-grid{gap:10px}.metric strong{font-size:26px}.photo-grid{grid-template-columns:repeat(3,1fr)}.step-indicator{align-items:flex-start}.step-item{flex:1 1 0;min-width:0;flex-direction:column;gap:6px;padding-inline:4px;text-align:center}.step-item:last-child{flex:1 1 0;min-width:0}.step-label{width:100%;min-width:0;white-space:normal;overflow-wrap:anywhere;line-height:1.3}.step-line{position:absolute;top:15px;left:calc(50% + 20px);right:calc(-50% + 20px);min-width:0;margin:0}}.fab-btn{position:fixed;bottom:24px;right:24px;width:56px;height:56px;border-radius:50%;background:var(--primary);color:#fff;border:none;box-shadow:0 4px 10px #0000004d;display:flex;align-items:center;justify-content:center;cursor:pointer;z-index:99;transition:transform .2s ease,background-color .2s ease}.fab-btn:hover{background:var(--primary-deep);transform:scale(1.05)}@media(max-width:900px){.fab-btn{bottom:80px}}.modal-overlay{position:fixed;inset:0;background:#00000080;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:1000;padding:16px}.modal-content{background:var(--panel);border:1px solid var(--glass-border);border-radius:var(--radius-lg);width:100%;max-width:500px;padding:24px;box-shadow:var(--shadow-lg)}.hide-on-mobile{display:block}.hide-on-desktop{display:none!important}@media(max-width:900px){.hide-on-mobile{display:none!important}.hide-on-desktop{display:block!important}}.official-report-print-root{display:none}.official-report-preview{position:fixed;inset:0;z-index:1200;display:grid;background:#091627b8}.official-report-preview-shell{display:grid;grid-template-rows:auto minmax(0,1fr);width:min(100vw,1180px);height:100vh;justify-self:center;background:#eef3f8;box-shadow:0 24px 80px #00000059}.official-report-preview-toolbar{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 18px;border-bottom:1px solid #d2dbe7;background:#fff}.official-report-preview-toolbar strong{display:block;color:#0f2f58;font-size:16px;font-weight:900}.official-report-preview-toolbar span{display:block;color:#64748b;font-size:12px;font-weight:700}.official-report-preview-actions{display:flex;align-items:center;gap:8px}.official-report-preview-scroller{min-height:0;overflow:auto;padding:28px 18px 60px}.official-report-document{display:grid;gap:18px;width:210mm;margin:0 auto;color:#172033;font-family:Sarabun,Noto Sans Thai,Tahoma,sans-serif;font-size:9pt;line-height:1.25;print-color-adjust:exact;-webkit-print-color-adjust:exact}.official-report-document *{box-sizing:border-box;letter-spacing:0}.official-report-page{position:relative;width:210mm;min-height:296.5mm;height:296.5mm;padding:10mm 11mm 13mm;background:#fff;box-shadow:0 12px 34px #0f233a29;overflow:hidden;page-break-after:always;break-after:page}.official-report-page:last-child{page-break-after:auto;break-after:auto}.official-report-topbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:3mm;padding:1.7mm 2.8mm;border-radius:1.4mm;background:#0f3d73;color:#fff;font-size:9.2pt;font-weight:900}.official-report-header{display:grid;grid-template-columns:20mm 1fr 38mm;align-items:center;gap:4mm;margin-bottom:3mm;padding:2.3mm 2.8mm;border:1px solid #b7c7da;border-left:3mm solid #1b68ad;border-radius:2mm;background:#f5f9ff}.official-report-logo{display:grid;place-items:center}.official-report-logo img{width:17mm;height:17mm;object-fit:contain}.official-report-school{text-align:center}.official-report-school p,.official-report-cert-header p{margin:0}.official-report-school-name{color:#0f2f58;font-size:12.6pt;font-weight:900}.official-report-doc-name{color:#172033;font-size:9.4pt;font-weight:900}.official-report-docno{display:grid;min-height:13mm;align-content:center;gap:.8mm;border:1px solid #6e86a5;border-radius:1.6mm;background:#fff;padding:1.4mm;text-align:center}.official-report-docno span{color:#50657d;font-size:7.8pt;font-weight:900}.official-report-docno strong{color:#0f2f58;font-size:8.8pt;font-weight:900}.official-report-title{margin-bottom:3mm;text-align:center}.official-report-title h1{margin:0 0 .8mm;color:#0f2f58;font-size:16.5pt;font-weight:900;line-height:1.05}.official-report-title strong{display:block;color:#31587c;font-size:9.3pt;font-weight:900}.official-report-title p{margin:.6mm 0 0;color:#56687d;font-size:8.6pt;font-weight:800}.official-report-meta{display:grid;grid-template-columns:repeat(2,1fr);gap:1mm 4mm;margin-bottom:3mm;padding:1.6mm 2.2mm;border:1px solid #c6d5e6;border-radius:2mm;background:#fbfdff}.official-report-meta-line{display:grid;grid-template-columns:25mm 1fr;align-items:end;gap:1.7mm;min-height:4.8mm}.official-report-meta-line span{color:#294968;font-size:8.4pt;font-weight:900;white-space:nowrap}.official-report-meta-line strong{min-width:0;border-bottom:1px dotted #8194aa;color:#172033;font-size:8.7pt;font-weight:700;line-height:1.2}.official-report-summary{margin-bottom:2mm;border:1px solid #b9c8dc;border-radius:2mm;background:#fbfdff;padding:1.1mm;page-break-inside:avoid}.official-report-section-heading{display:flex;align-items:center;justify-content:space-between;gap:3mm;margin-bottom:1.2mm}.official-report-section-heading h2,.official-report-table-section h2,.official-report-note-box h2{margin:0;color:#0f2f58;font-size:10.6pt;font-weight:900;line-height:1.12}.official-report-section-heading span{color:#5c7189;font-size:8.3pt;font-weight:800}.official-report-summary-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:.8mm}.official-report-summary-card{display:grid;grid-template-columns:5mm minmax(0,1fr);grid-template-rows:auto auto;gap:.25mm .75mm;min-height:10.4mm;overflow:hidden;border:1px solid #c8d6e5;border-radius:1.5mm;background:#fff;padding:.85mm}.official-report-summary-icon{display:grid;width:4.5mm;height:4.5mm;place-items:center;border-radius:999px;background:#dbeafe;color:#1d4f8f}.official-report-summary-icon svg{width:3.4mm;height:3.4mm}.official-report-summary-card span,.official-report-summary-card small,.official-report-summary-card p{color:#4b6178;font-size:7.1pt;line-height:1.05}.official-report-summary-card span{display:block;font-weight:900}.official-report-summary-card strong{display:inline-block;margin-right:.55mm;color:#0f2f58;font-size:15.5pt;font-weight:900;line-height:.9}.official-report-summary-card p{grid-column:1 / -1;margin:0;font-weight:800;white-space:nowrap}.official-report-summary-card.tone-amber .official-report-summary-icon{background:#fff2cc;color:#9a6700}.official-report-summary-card.tone-green .official-report-summary-icon{background:#dcfce7;color:#166534}.official-report-summary-card.tone-red .official-report-summary-icon{background:#fee2e2;color:#b42318}.official-report-summary-card.tone-blue .official-report-summary-icon{background:#dbeafe;color:#1d4ed8}.official-report-summary-card.tone-slate .official-report-summary-icon{background:#e2e8f0;color:#334155}.official-report-table-section{margin-bottom:2.5mm}.official-report-table{width:100%;margin:0;border:1px solid #9fb2c7;border-collapse:collapse;table-layout:fixed}.official-report-table thead{display:table-header-group}.official-report-table tr{page-break-inside:avoid;break-inside:avoid}.official-report-table th,.official-report-table td{border:.7px solid #a8b8ca;background:#fff;color:#172033;padding:.7mm .85mm;vertical-align:top;font-size:7.45pt;line-height:1.14;overflow-wrap:break-word}.official-report-table th{background:#e7f0fb;color:#0f2f58;font-weight:900;text-align:center}.official-report-table td:first-child{text-align:center}.official-report-table td:last-child span{display:block}.official-report-col-order{width:6%}.official-report-col-time{width:10%}.official-report-col-date{width:16%}.official-report-col-count{width:8.5%}.official-report-col-point-count{width:12%}.official-report-col-person{width:13%}.official-report-col-point{width:18%}.official-report-col-status{width:15%}.official-report-col-detail{width:26%}.official-report-col-reviewer{width:12%}.official-report-empty-cell,.official-report-continuation-cell{padding:3mm 2mm;text-align:center;color:#52667c;font-weight:900}.official-report-note-grid{display:grid;grid-template-columns:1fr;gap:1.2mm;margin-bottom:2mm;page-break-inside:avoid}.official-report-note-box{min-height:0;overflow:hidden;border:1px solid #b9c8dc;border-radius:1.8mm;background:#fbfdff}.official-report-note-box h2{margin:0;padding:.65mm 1.5mm;background:#1d66ad;color:#fff;font-size:8.4pt;line-height:1.1}.official-report-note-box p,.official-report-soft-text{margin:0;padding:1mm 1.5mm 1.1mm;color:#34465a;font-size:8pt;line-height:1.25}.official-report-soft-text{color:#6b7c8f}.official-report-photo-section{margin-bottom:2.4mm;page-break-inside:avoid}.official-report-photo-strip{display:grid;grid-template-columns:repeat(4,1fr);gap:1.5mm}.official-report-document-range .official-report-photo-strip{grid-template-columns:repeat(3,1fr)}.official-report-photo-card{margin:0;border:1px solid #c1ccda;border-radius:1.6mm;background:#fff;padding:1mm;page-break-inside:avoid;break-inside:avoid}.official-report-photo-frame{display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr);height:13.5mm;place-items:center;overflow:hidden;border:1px solid #d4dde9;border-radius:1mm;background:#f6f8fb;color:#64748b;font-size:7.2pt;font-weight:900}.official-report-photo-frame img{width:auto;height:auto;max-width:100%;max-height:100%;object-fit:contain;display:block}.official-report-photo-card figcaption{display:grid;gap:.3mm;margin-top:.6mm;color:#465d76;font-size:6.8pt;font-weight:800;line-height:1.1;text-align:center}.official-report-photo-card figcaption strong,.official-report-photo-card figcaption span{color:#465d76}.official-report-no-photo{margin:0;border:1px dashed #b8c5d4;border-radius:1.4mm;background:#f8fbff;padding:1.6mm;color:#64748b;font-size:8pt;font-weight:800;text-align:center}.official-report-signatures{display:grid;grid-template-columns:repeat(3,1fr);gap:2mm;page-break-inside:avoid}.official-report-signature{display:grid;min-height:20mm;align-content:end;gap:.7mm;border:1px solid #b9c8dc;border-radius:2mm;background:#fff;padding:1.4mm;text-align:center}.official-report-signature strong,.official-report-signature span{color:#172033;font-size:7.8pt;line-height:1.08}.official-report-signature strong{color:#0f2f58;font-weight:900}.official-report-footer{position:absolute;right:11mm;bottom:6mm;left:11mm;display:flex;justify-content:space-between;border-top:1px solid #c4d0dd;padding-top:1mm;color:#52667c;font-size:7.6pt;font-weight:800}.official-report-appendix-header{margin-bottom:3mm}.official-report-appendix-header h2,.official-report-cert-header h2{margin:0 0 1mm;color:#0f2f58;font-size:15pt;font-weight:900}.official-report-appendix-header p{margin:0 0 .8mm;color:#53687f;font-size:8.6pt;line-height:1.18}.official-report-photo-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:2.5mm}.official-report-photo-grid .official-report-photo-frame{height:72mm}.official-report-photo-grid .official-report-photo-card figcaption{text-align:left;font-size:7.7pt}.official-report-system-note{display:grid;gap:.6mm;margin-top:3mm;border:1px solid #c8d6e5;border-radius:2mm;background:#fbfdff;padding:2mm;color:#34465a;font-size:8.5pt;line-height:1.22}.official-report-system-note strong{color:#0f2f58;font-weight:900}.official-report-cert-header{display:grid;grid-template-columns:22mm 1fr;align-items:center;gap:4mm;margin-bottom:7mm;padding:3mm;border:1px solid #b9c8dc;border-radius:2mm;background:#f5f9ff}.official-report-cert-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:2mm;margin-bottom:8mm}.official-report-cert-summary span{border:1px solid #c8d6e5;border-radius:2mm;background:#fff;padding:2mm;color:#50657d;font-size:8.8pt;font-weight:900;text-align:center}.official-report-cert-summary strong{color:#0f2f58;font-size:10pt}.official-report-cert-signatures{display:grid;gap:5mm;margin-bottom:6mm}.official-report-cert-signature{display:grid;min-height:42mm;align-content:end;gap:2mm;border:1px solid #b9c8dc;border-radius:2mm;background:#fff;padding:4mm;text-align:center}.official-report-cert-signature strong{color:#0f2f58;font-size:12pt;font-weight:900}.official-report-cert-signature span{color:#172033;font-size:10pt}.official-report-document-range .official-report-header{margin-bottom:2mm;padding-top:1.8mm;padding-bottom:1.8mm}.official-report-document-range .official-report-title,.official-report-document-range .official-report-meta,.official-report-document-range .official-report-summary,.official-report-document-range .official-report-table-section,.official-report-document-range .official-report-note-grid{margin-bottom:1.6mm}.official-report-document-range .official-report-table th,.official-report-document-range .official-report-table td{padding:.52mm .65mm;font-size:7.05pt;line-height:1.08}.official-report-document-range .official-report-note-box{min-height:0}.official-report-document-range .official-report-signature{min-height:17mm}@media screen and (max-width:760px){.official-report-preview-toolbar{align-items:flex-start;flex-direction:column}.official-report-preview-actions{width:100%;justify-content:space-between}.official-report-preview-scroller{padding:18px 8px 46px}.official-report-document{transform:scale(.58);transform-origin:top center;margin-bottom:-120mm}}@page{size:A4 portrait;margin:0}@media print{html,body{margin:0!important;background:#fff!important;color:#000!important}body>*:not(.official-report-print-root){display:none!important}body *{visibility:hidden!important}.official-report-print-root,.official-report-print-root *{visibility:visible!important}.official-report-preview{display:none!important}.official-report-print-root{position:absolute!important;inset:0 auto auto 0!important;display:block!important;width:210mm!important;min-height:297mm!important;margin:0!important;background:#fff!important}.official-report-document{display:block!important;width:210mm!important;margin:0!important;gap:0!important}.official-report-page{min-height:296mm!important;height:296mm!important;box-shadow:none!important}}.header-user-block{display:flex;align-items:center;gap:12px;background:transparent;border:none;padding:6px 4px;border-radius:0;box-shadow:none;margin-left:8px}.header-avatar{display:flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:50%;background:var(--primary);color:var(--text-on-primary);font-weight:800;border:none;overflow:hidden}.header-username{font-size:14px;font-weight:600;color:var(--text)}.header-divider{width:1px;height:16px;background:var(--line);margin:0 4px}.btn-logout-header{min-height:auto;border:none;background:transparent;color:var(--text-muted);padding:4px;display:flex;align-items:center;transition:color var(--transition-fast)}.btn-logout-header:hover{color:var(--danger);background:transparent;transform:none;box-shadow:none}@keyframes authCardAppear{0%{opacity:0;transform:scale(.96) translateY(12px)}to{opacity:1;transform:scale(1) translateY(0)}}.date-control{position:relative;cursor:pointer;display:inline-flex;align-items:center;gap:8px;padding:8px 16px;background:var(--bg);border:1px solid var(--line);border-radius:var(--radius-pill);font-size:14.5px;font-weight:500;color:var(--text);transition:all var(--transition-fast);box-shadow:var(--shadow-sm)}.date-control:hover{border-color:var(--primary);background:var(--bg-hover)}.date-arrow{color:var(--text-muted);transition:transform var(--transition-fast)}.date-control:hover .date-arrow{color:var(--text);transform:translateY(1px)}.hidden-date-input{position:absolute;top:0;left:0;width:100%;height:100%;opacity:0;cursor:pointer;z-index:2}.mobile-header{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;background:var(--glass-surface);border-bottom:1px solid var(--glass-border);backdrop-filter:blur(var(--glass-blur));-webkit-backdrop-filter:blur(var(--glass-blur));position:sticky;top:0;z-index:100;height:60px}.mobile-logo-wrap{position:absolute;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:8px;pointer-events:none}.mobile-logo-circle{width:42px;height:42px;border-radius:50%;background:#fff;padding:4px;display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow-sm);border:1.5px solid var(--line)}.mobile-logo-circle img{width:100%;height:100%;object-fit:contain}.mobile-title-block{display:flex;flex-direction:column;align-items:flex-start;line-height:1.15}.mobile-title-block strong{font-family:var(--font-heading);font-size:18.5px;font-weight:800;color:var(--primary)}.mobile-title-block span{font-size:12.5px;color:var(--text-muted);font-weight:600}.mobile-overlay{position:fixed;inset:0;z-index:900;background:#0f172a70;backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);animation:fade-in .18s ease}.sidebar.mobile-sidebar{position:fixed;inset:0 auto 0 0;z-index:901;display:grid;grid-template-rows:auto 1fr auto;width:min(86vw,380px);height:100dvh;padding:calc(14px + env(safe-area-inset-top,0px)) 14px calc(18px + env(safe-area-inset-bottom,0px));border-radius:0 22px 22px 0;box-shadow:18px 0 46px #02061747;animation:mobile-drawer-in .22s cubic-bezier(.16,1,.3,1)}.mobile-drawer-brand{min-height:70px}.mobile-drawer-brand>div:nth-child(2){min-width:0}.mobile-drawer-brand strong,.mobile-drawer-brand span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar-close{flex-shrink:0;margin-left:auto;color:#fff}.mobile-drawer-scroll{display:grid;align-content:start;gap:16px;min-height:0;overflow-y:auto;padding:2px 0}.mobile-drawer-section{display:grid;gap:8px}.mobile-drawer-section-title{padding:0 8px;color:#96a6be;font-size:12px;font-weight:800}.mobile-drawer-admin{padding-top:10px;border-top:1px solid rgba(255,255,255,.1)}.mobile-sidebar .sidebar-footer{padding-bottom:2px}.mobile-drawer-theme{color:#c9d2de!important}.mobile-drawer-theme:hover{background:#ffffff1a!important;border-color:#ffffff2e!important;color:#fff!important}@keyframes mobile-drawer-in{0%{transform:translate(-100%)}to{transform:translate(0)}}.mobile-page-title{font-family:var(--font-heading);font-size:24px;font-weight:800;color:var(--text);margin:6px 0 12px;letter-spacing:-.02em}.mobile-today-stack{display:flex;flex-direction:column;gap:16px;padding:4px 0 68px}.mobile-dashboard-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:8px}.mobile-grid-left{display:flex;flex-direction:column;gap:8px}.mobile-stacked-card{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:16px;background:var(--glass-surface);border:1px solid var(--glass-border);box-shadow:0 4px 16px #00000008}.mobile-stacked-card .card-icon{width:30px;height:30px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0}.mobile-stacked-card.status-success .card-icon{background:#10b9811a}.mobile-stacked-card.status-info .card-icon{background:#3b82f61a}.mobile-stacked-card.status-warning .card-icon{background:#f59e0b1a}.mobile-stacked-card .card-info{display:flex;flex-direction:column;gap:1px}.mobile-stacked-card .card-info span{font-size:12.5px;color:var(--text-muted);font-weight:600}.mobile-stacked-card .card-info strong{font-family:var(--font-heading);font-size:17.5px;font-weight:800;color:var(--text)}.mobile-donut-card{display:flex;flex-direction:column;align-items:center;justify-content:space-between;padding:12px;border-radius:16px;background:var(--glass-surface);border:1px solid var(--glass-border);box-shadow:0 4px 16px #00000008;height:100%}.mobile-donut-card h3{font-size:15px;font-weight:800;margin:0 0 8px;color:var(--text);text-align:center}.mobile-donut-wrapper{display:flex;align-items:center;justify-content:center;margin:2px 0}.donut-legend-mobile{display:flex;flex-direction:column;gap:4px;width:100%;margin-top:8px}.donut-legend-mobile .legend-item{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--text-muted);font-weight:600}.donut-legend-mobile .dot{width:6px;height:6px;border-radius:50%;flex-shrink:0}.donut-legend-mobile .dot-success{background:#10b981}.donut-legend-mobile .dot-info{background:#3b82f6}.donut-legend-mobile .dot-warning{background:#f59e0b}.mobile-tasks-section{display:flex;flex-direction:column;gap:12px}.mobile-tasks-scroll-list{display:flex;flex-direction:column;gap:10px;max-height:420px;overflow-y:auto;padding-right:4px}.mobile-task-card{display:flex;justify-content:space-between;align-items:center;padding:14px 16px;border-radius:16px;background:var(--glass-surface);border:1px solid var(--glass-border);border-left:6px solid var(--line);box-shadow:0 4px 16px #00000008;transition:transform var(--transition-fast);position:relative}.mobile-task-card.card-approved{border-left-color:#10b981}.mobile-task-card.card-pending{border-left-color:#3b82f6}.mobile-task-card.card-rejected{border-left-color:#ef4444}.mobile-task-card.card-missing{border-left-color:#f59e0b}.mobile-task-card.card-action{border-left-color:var(--primary);cursor:pointer;background:#3b82f60a}.mobile-task-card.card-action:active{transform:scale(.98);background:#3b82f614}.btn-add-action-mobile{width:32px;height:32px;border-radius:50%;background:var(--line);color:var(--text-muted);border:none;font-size:20px;font-weight:500;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:transform var(--transition-fast);box-shadow:var(--shadow-sm);min-height:auto;padding:0}.btn-add-action-mobile:active{transform:scale(.9)}.task-card-body{display:flex;flex-direction:column;gap:3px;flex:1;padding-right:8px}.task-card-body strong{font-size:17.5px;color:var(--text);font-weight:800;line-height:1.3}.task-card-right{display:flex;flex-direction:column;align-items:flex-end;gap:6px;flex-shrink:0}.task-time-right{font-size:12.5px;color:var(--text-muted);font-weight:600}.task-badge{padding:4px 10px;border-radius:var(--radius-pill);font-size:11px;font-weight:700;text-align:center;flex-shrink:0}.badge-approved{background:#10b981;color:#fff;border:none}.badge-pending{background:#3b82f6;color:#fff;border:none}.badge-rejected{background:#ef4444;color:#fff;border:none}.badge-missing{background:#9ca3af;color:#fff;border:none}.bottom-nav{position:fixed;bottom:0;left:0;right:0;height:52px;border-radius:16px 16px 0 0;background:var(--glass-surface);border:none;border-top:1px solid var(--glass-border);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);z-index:100;box-shadow:0 -2px 10px #00000008}.bottom-nav ul{display:flex;justify-content:space-around;align-items:center;height:100%;margin:0;padding:0 8px;list-style:none}.bottom-nav button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;background:transparent;border:none;color:var(--text-muted);font-size:11.5px;font-weight:700;padding:6px 12px;min-height:auto;width:100%;transition:color var(--transition-fast),transform var(--transition-fast);cursor:pointer}.bottom-nav button.active{color:var(--primary)}.bottom-nav button.active:after{display:none!important}.bottom-nav button svg{transition:transform var(--transition-fast)}.bottom-nav button.active svg{transform:translateY(-1px)}.role-home{max-width:980px;margin:0 auto}.role-home-intro{display:grid;gap:4px}.role-home-intro h1,.role-home-intro p{margin:0}.role-home-intro h1{color:var(--primary-deep);font-size:clamp(26px,4vw,36px)}.role-home-intro>p:not(.role-home-date){color:var(--text-muted)}.role-home-date{color:var(--primary);font-size:14px;font-weight:800}.role-home-primary{display:grid;grid-template-columns:auto minmax(0,1fr);gap:14px;width:100%;min-height:96px;padding:18px;color:#fff;text-align:left;background:linear-gradient(135deg,var(--primary),var(--primary-deep));border:0;border-radius:var(--radius-lg);box-shadow:var(--shadow-md)}.role-home-primary:hover{transform:translateY(-1px)}.role-home-primary-icon{display:grid;place-items:center;width:48px;height:48px;border-radius:50%;background:#ffffff29}.role-home-primary span:last-child{display:grid;gap:3px}.role-home-primary small{opacity:.85;font-weight:700}.role-home-primary strong{font-size:20px;line-height:1.25}.role-home-status{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.role-home-status article{display:grid;grid-template-columns:auto minmax(0,1fr);gap:4px 9px;align-items:center;min-height:82px;padding:12px;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-md)}.role-home-status article svg{color:var(--primary)}.role-home-status span{color:var(--text-muted);font-size:13px;font-weight:700}.role-home-status strong{grid-column:1 / -1;font-size:24px;line-height:1}.role-home-work{display:grid;gap:8px}.role-home-section-heading{display:flex;align-items:center;gap:8px}.role-home-section-heading h2{margin:0;font-size:18px}.role-home-work-row{display:grid;grid-template-columns:auto minmax(0,1fr);gap:12px;width:100%;min-height:56px;padding:10px 12px;color:var(--text);text-align:left;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-md)}.role-home-work-row>span{display:grid;gap:2px;min-width:0}.role-home-work-row small{color:var(--text-muted)}.role-home-work-row.returned{border-color:color-mix(in srgb,var(--danger) 45%,var(--line))}.role-home-work-row.returned svg{color:var(--danger)}.role-home-work-row.review svg{color:var(--primary)}.role-home-work-row.missing svg{color:var(--warning)}.role-home-empty{margin:0;padding:16px;color:var(--text-muted);background:var(--panel);border-radius:var(--radius-md)}.role-home-details{border:1px solid var(--line);border-radius:var(--radius-md);background:var(--panel)}.role-home-details summary{min-height:52px;padding:15px;color:var(--primary-deep);cursor:pointer;font-weight:800}.role-home-details-content{padding:0 15px 15px}@media(max-width:760px){.role-home-status{gap:7px}.role-home-status article{min-height:76px;padding:10px}.role-home-status span{font-size:12px}.role-home-status strong{font-size:21px}}.two-col-layout-dashboard{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin-top:24px}@media(max-width:1024px){.two-col-layout-dashboard{grid-template-columns:1fr}}.donut-panel-full{border-radius:var(--radius-lg);border:1px solid var(--glass-border);background:var(--glass-surface);box-shadow:var(--shadow-sm)}.dashboard-panel-title{font-family:var(--font-heading);font-size:20px;font-weight:800;color:var(--text);margin-bottom:18px;letter-spacing:-.01em}.dashboard-row-title{font-size:15px;font-weight:700;color:var(--text)}.dashboard-row-desc{font-size:13.5px;color:var(--text-muted);font-weight:500}
