@import "https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=Sora:wght@400;500;600;700;800&display=swap";*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;scroll-behavior:smooth;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow-x:hidden}body{min-height:100dvh;line-height:1.6;overflow-x:clip}img,picture,video,canvas,svg,iframe,embed,object{max-width:100%}img,video,canvas{height:auto}img,svg,video{display:block}input,button,textarea,select{font:inherit;color:inherit}p,h1,h2,h3,h4,h5,h6,li,td,th,label,legend,figcaption,dt,dd{overflow-wrap:break-word}h1,h2,h3,h4,h5,h6{text-wrap:balance}:where(.content-grid,.stats-grid,.form-grid,.footer__inner,.search-content,.book-details-content,.location-path,.toolbar,.card,.stats-card)>*{min-width:0}a{color:inherit;text-decoration:none}ul,ol{list-style:none}table{border-collapse:collapse}:root{--brand-navy:#06163f;--brand-navy-2:#0b2458;--brand-gold:#e99a3a;--brand-gold-soft:#f6edcf;--primary:var(--brand-navy-2);--primary-light:#1e3a75;--primary-dark:var(--brand-navy);--primary-50:#eef1f8;--primary-100:#dde3f1;--primary-200:#bcc7e3;--primary-700:#14306b;--primary-800:#0a1f4d;--primary-900:#07183e;--primary-deep:var(--brand-navy);--accent:var(--brand-gold);--accent-dark:#d4831f;--accent-light:#f2b45f;--accent-50:var(--brand-gold-soft);--background:#f8f7f4;--surface:#fff;--surface-alt:#f8f7f4;--surface-muted:#f1efeb;--surface-elevated:#fff;--text:#111827;--text-primary:#111827;--text-secondary:#4b5563;--text-muted:#76808d;--text-inverse:#fff;--text-on-primary:#fff;--text-on-accent:var(--brand-navy);--border:#dcd9d2;--border-light:#e7e3dc;--border-dark:#c3beb2;--status-available:#0e9f6e;--status-available-bg:#e8f6f0;--status-borrowed:#0284c7;--status-borrowed-bg:#e0f2fe;--status-reserved:#d97706;--status-reserved-bg:#fffbeb;--status-overdue:#dc2626;--status-overdue-bg:#fef2f2;--status-misplaced:#ea580c;--status-misplaced-bg:#fff7ed;--status-maintenance:#6b7280;--status-maintenance-bg:#f3f4f6;--success:#0e9f6e;--success-bg:#e8f6f0;--warning:#d97706;--warning-bg:#fffbeb;--danger:#dc2626;--danger-bg:#fef2f2;--info:#2563eb;--info-bg:#eff6ff;--font-family:"Inter", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, sans-serif;--font-display:"Sora", "Inter", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-mono:"JetBrains Mono", "Fira Code", "Cascadia Code", Consolas, monospace;--text-xs:.75rem;--text-sm:.875rem;--text-base:1rem;--text-lg:1.125rem;--text-xl:1.25rem;--text-2xl:1.5rem;--text-3xl:1.875rem;--text-4xl:2.25rem;--text-5xl:3rem;--text-6xl:3.75rem;--leading-tight:1.25;--leading-normal:1.5;--leading-relaxed:1.75;--font-normal:400;--font-medium:500;--font-semibold:600;--font-bold:700;--font-extrabold:800;--space-0:0;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.25rem;--space-6:1.5rem;--space-8:2rem;--space-10:2.5rem;--space-12:3rem;--space-16:4rem;--space-20:5rem;--space-24:6rem;--radius-sm:.375rem;--radius-md:.5rem;--radius-lg:.75rem;--radius-xl:1rem;--radius-2xl:1.375rem;--radius-3xl:1.75rem;--radius-full:9999px;--shadow-xs:0 1px 2px #06163f0f;--shadow-sm:0 1px 2px #06163f0d, 0 2px 6px #06163f0d;--shadow-md:0 6px 16px -6px #06163f1f, 0 2px 4px #06163f0a;--shadow-lg:0 12px 32px -8px #06163f2e, 0 4px 8px #06163f0d;--shadow-xl:0 24px 48px -12px #06163f47, 0 8px 16px #06163f0f;--shadow-card:0 1px 2px #06163f0a, 0 8px 24px #06163f12;--shadow-card-hover:0 2px 4px #06163f0d, 0 20px 40px -12px #06163f38;--shadow-gold:0 8px 24px -8px #e99a3a8c;--transition-fast:.16s cubic-bezier(.22, 1, .36, 1);--transition-normal:.28s cubic-bezier(.22, 1, .36, 1);--transition-slow:.45s cubic-bezier(.22, 1, .36, 1);--z-base:0;--z-dropdown:100;--z-sticky:200;--z-navbar:300;--z-modal-backdrop:400;--z-modal:500;--z-popover:600;--z-tooltip:700;--z-toast:800;--container-sm:640px;--container-md:768px;--container-lg:1024px;--container-xl:1200px;--container-2xl:1400px;--navbar-height:4rem;--sidebar-width:260px;--header-height:4rem;--page-max:1400px;--page-gutter:clamp(1rem, .55rem + 2.2vw, 2rem);--card-pad:clamp(1rem, .72rem + 1.3vw, 1.5rem);--card-gap:clamp(1rem, .72rem + 1.3vw, 1.5rem);--section-gap:clamp(2.5rem, 1.5rem + 5vw, 4rem);--grid-gap:clamp(.875rem, .55rem + 1.6vw, 1.5rem);--section-pad-inline:clamp(1rem, .5rem + 2.5vw, 2rem);--content-pad:var(--page-gutter);--tap-min:44px;--radius-card:12px;--radius-control:8px}html,body{height:100%}body{font-family:var(--font-family);font-size:var(--text-base);font-weight:var(--font-normal);line-height:var(--leading-normal);color:var(--text);background-color:var(--background)}h1,h2,h3,h4,h5,h6{font-family:var(--font-display);font-weight:var(--font-bold);line-height:var(--leading-tight);color:var(--text)}h1{letter-spacing:-.03em;font-size:clamp(2rem,1.35rem + 3vw,3rem)}h2{letter-spacing:-.025em;font-size:clamp(1.5rem,1.16rem + 1.7vw,1.875rem)}h3{font-size:clamp(1.25rem,1.09rem + .8vw,1.5rem)}h4{font-size:clamp(1.125rem,1.06rem + .32vw,1.25rem)}h5{font-size:clamp(1rem,.97rem + .15vw,1.125rem);font-weight:var(--font-semibold)}h6{font-size:var(--text-base);font-weight:var(--font-semibold)}p{margin-bottom:var(--space-4);color:var(--text-secondary)}p:last-child{margin-bottom:0}a{color:var(--primary);transition:color var(--transition-fast)}a:hover{color:var(--primary-light)}strong,b{font-weight:var(--font-bold)}small{font-size:var(--text-sm)}code{font-family:var(--font-mono);background-color:var(--surface-alt);border:1px solid var(--border-light);border-radius:var(--radius-sm);padding:.125em .375em;font-size:.875em}hr{border:none;border-top:1px solid var(--border);margin:var(--space-6) 0}::selection{background-color:var(--accent-50);color:var(--brand-navy)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.hidden{display:none}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.flex-nowrap{flex-wrap:nowrap}.items-start{align-items:flex-start}.items-center{align-items:center}.items-end{align-items:flex-end}.items-stretch{align-items:stretch}.items-baseline{align-items:baseline}.justify-start{justify-content:flex-start}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-between{justify-content:space-between}.justify-around{justify-content:space-around}.flex-1{flex:1}.flex-auto{flex:auto}.flex-none{flex:none}.shrink-0{flex-shrink:0}.gap-1{gap:var(--space-1)}.gap-2{gap:var(--space-2)}.gap-3{gap:var(--space-3)}.gap-4{gap:var(--space-4)}.gap-6{gap:var(--space-6)}.gap-8{gap:var(--space-8)}.grid{display:grid}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.col-span-2{grid-column:span 2}.col-span-3{grid-column:span 3}.col-span-full{grid-column:1/-1}.container{width:100%;max-width:var(--container-xl);padding-left:var(--section-pad-inline);padding-right:var(--section-pad-inline);margin-left:auto;margin-right:auto}.container-sm{max-width:var(--container-sm)}.container-md{max-width:var(--container-md)}.container-lg{max-width:var(--container-lg)}.m-0{margin:0}.m-1{margin:var(--space-1)}.m-2{margin:var(--space-2)}.m-4{margin:var(--space-4)}.m-6{margin:var(--space-6)}.m-8{margin:var(--space-8)}.mx-auto{margin-left:auto;margin-right:auto}.mx-0{margin-left:0;margin-right:0}.mx-4{margin-left:var(--space-4);margin-right:var(--space-4)}.my-0{margin-top:0;margin-bottom:0}.my-2{margin-top:var(--space-2);margin-bottom:var(--space-2)}.my-4{margin-top:var(--space-4);margin-bottom:var(--space-4)}.my-6{margin-top:var(--space-6);margin-bottom:var(--space-6)}.my-8{margin-top:var(--space-8);margin-bottom:var(--space-8)}.mt-0{margin-top:0}.mt-1{margin-top:var(--space-1)}.mt-2{margin-top:var(--space-2)}.mt-4{margin-top:var(--space-4)}.mt-6{margin-top:var(--space-6)}.mt-8{margin-top:var(--space-8)}.mb-0{margin-bottom:0}.mb-1{margin-bottom:var(--space-1)}.mb-2{margin-bottom:var(--space-2)}.mb-4{margin-bottom:var(--space-4)}.mb-6{margin-bottom:var(--space-6)}.mb-8{margin-bottom:var(--space-8)}.ml-auto{margin-left:auto}.mr-auto{margin-right:auto}.p-0{padding:0}.p-1{padding:var(--space-1)}.p-2{padding:var(--space-2)}.p-3{padding:var(--space-3)}.p-4{padding:var(--space-4)}.p-5{padding:var(--space-5)}.p-6{padding:var(--space-6)}.p-8{padding:var(--space-8)}.px-2{padding-left:var(--space-2);padding-right:var(--space-2)}.px-3{padding-left:var(--space-3);padding-right:var(--space-3)}.px-4{padding-left:var(--space-4);padding-right:var(--space-4)}.px-5{padding-left:var(--space-5);padding-right:var(--space-5)}.px-6{padding-left:var(--space-6);padding-right:var(--space-6)}.px-8{padding-left:var(--space-8);padding-right:var(--space-8)}.py-1{padding-top:var(--space-1);padding-bottom:var(--space-1)}.py-2{padding-top:var(--space-2);padding-bottom:var(--space-2)}.py-3{padding-top:var(--space-3);padding-bottom:var(--space-3)}.py-4{padding-top:var(--space-4);padding-bottom:var(--space-4)}.py-6{padding-top:var(--space-6);padding-bottom:var(--space-6)}.py-8{padding-top:var(--space-8);padding-bottom:var(--space-8)}.pt-4{padding-top:var(--space-4)}.pb-4{padding-bottom:var(--space-4)}.text-xs{font-size:var(--text-xs)}.text-sm{font-size:var(--text-sm)}.text-base{font-size:var(--text-base)}.text-lg{font-size:var(--text-lg)}.text-xl{font-size:var(--text-xl)}.text-2xl{font-size:var(--text-2xl)}.text-3xl{font-size:var(--text-3xl)}.text-4xl{font-size:var(--text-4xl)}.font-normal{font-weight:var(--font-normal)}.font-medium{font-weight:var(--font-medium)}.font-semibold{font-weight:var(--font-semibold)}.font-bold{font-weight:var(--font-bold)}.font-extrabold{font-weight:var(--font-extrabold)}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.leading-tight{line-height:var(--leading-tight)}.leading-normal{line-height:var(--leading-normal)}.leading-relaxed{line-height:var(--leading-relaxed)}.tracking-tight{letter-spacing:-.025em}.tracking-normal{letter-spacing:0}.tracking-wide{letter-spacing:.025em}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.capitalize{text-transform:capitalize}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-3{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.text-primary{color:var(--primary)}.text-accent{color:var(--accent)}.text-secondary{color:var(--text-secondary)}.text-muted{color:var(--text-muted)}.text-inverse{color:var(--text-inverse)}.text-success{color:var(--success)}.text-warning{color:var(--warning)}.text-danger{color:var(--danger)}.text-info{color:var(--info)}.bg-primary{background-color:var(--primary)}.bg-accent{background-color:var(--accent)}.bg-surface{background-color:var(--surface)}.bg-surface-alt{background-color:var(--surface-alt)}.bg-transparent{background-color:#0000}.bg-success{background-color:var(--success-bg)}.bg-warning{background-color:var(--warning-bg)}.bg-danger{background-color:var(--danger-bg)}.bg-info{background-color:var(--info-bg)}.border{border:1px solid var(--border)}.border-light{border:1px solid var(--border-light)}.border-t{border-top:1px solid var(--border)}.border-b{border-bottom:1px solid var(--border)}.border-l{border-left:1px solid var(--border)}.border-r{border-right:1px solid var(--border)}.border-0{border:none}.rounded-sm{border-radius:var(--radius-sm)}.rounded,.rounded-md{border-radius:var(--radius-md)}.rounded-lg{border-radius:var(--radius-lg)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-full{border-radius:var(--radius-full)}.shadow-xs{box-shadow:var(--shadow-xs)}.shadow-sm{box-shadow:var(--shadow-sm)}.shadow-md{box-shadow:var(--shadow-md)}.shadow-lg{box-shadow:var(--shadow-lg)}.shadow-xl{box-shadow:var(--shadow-xl)}.shadow-none{box-shadow:none}.w-full{width:100%}.w-auto{width:auto}.max-w-full{max-width:100%}.h-full{height:100%}.min-h-screen{min-height:100vh}.overflow-hidden{overflow:hidden}.overflow-auto{overflow:auto}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.relative{position:relative}.absolute{position:absolute}.fixed{position:fixed}.sticky{position:sticky}.inset-0{inset:0}.top-0{top:0}.right-0{right:0}.bottom-0{bottom:0}.left-0{left:0}.cursor-pointer{cursor:pointer}.cursor-not-allowed{cursor:not-allowed}.cursor-default{cursor:default}.select-none{-webkit-user-select:none;user-select:none}.select-all{-webkit-user-select:all;user-select:all}.transition-fast{transition:all var(--transition-fast)}.transition-normal,.transition-all{transition:all var(--transition-normal)}.transition-none{transition:none}.opacity-0{opacity:0}.opacity-25{opacity:.25}.opacity-50{opacity:.5}.opacity-75{opacity:.75}.opacity-100{opacity:1}.whitespace-normal{white-space:normal}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.align-middle{vertical-align:middle}.align-top{vertical-align:top}.align-bottom{vertical-align:bottom}.card{background-color:var(--surface);border:1px solid var(--border-light);border-radius:var(--radius-xl);box-shadow:var(--shadow-card);overflow:hidden}.card-body{padding:var(--space-6)}.card-header{padding:var(--space-4) var(--space-6);border-bottom:1px solid var(--border-light);background-color:var(--surface-alt)}.card-footer{padding:var(--space-4) var(--space-6);border-top:1px solid var(--border-light);background-color:var(--surface-alt)}.btn{justify-content:center;align-items:center;gap:var(--space-2);min-height:2.25rem;font-size:var(--text-sm);font-weight:var(--font-semibold);text-align:center;border-radius:var(--radius-lg);cursor:pointer;white-space:normal;overflow-wrap:break-word;max-width:100%;transition:all var(--transition-fast);-webkit-user-select:none;user-select:none;border:1px solid #0000;padding:.625rem 1.25rem;line-height:1.2;display:inline-flex}.btn:disabled,.btn.disabled{opacity:.5;cursor:not-allowed;pointer-events:none}.btn-primary{background-color:var(--primary);color:var(--text-on-primary);border-color:var(--primary);box-shadow:0 6px 16px -8px #06163f99}.btn-primary:hover{background-color:var(--primary-light);border-color:var(--primary-light);box-shadow:0 8px 20px -8px #06163f8c}.btn-accent{background-color:var(--accent);color:var(--text-on-accent);border-color:var(--accent);box-shadow:var(--shadow-gold)}.btn-accent:hover{background-color:var(--accent-dark);border-color:var(--accent-dark);box-shadow:0 10px 28px -8px #e99a3a80}.btn-outline{color:var(--text);border-color:var(--border);background-color:#0000}.btn-outline:hover{background-color:var(--surface-alt);border-color:var(--border-dark)}.btn-outline-primary{color:var(--primary);border-color:var(--primary);background-color:#0000}.btn-outline-primary:hover{background-color:var(--primary);color:var(--text-on-primary)}.btn-danger{background-color:var(--danger);color:var(--text-inverse);border-color:var(--danger)}.btn-danger:hover{background-color:#c62828;border-color:#c62828}.btn-ghost{color:var(--text);background-color:#0000;border-color:#0000}.btn-ghost:hover{background-color:var(--surface-alt)}.btn-sm{font-size:var(--text-xs);padding:.375rem .75rem}.btn-lg{font-size:var(--text-base);padding:.75rem 1.5rem}.btn-icon{aspect-ratio:1;padding:.5rem}.input,.select,.textarea{width:100%;max-width:100%;font-size:var(--text-sm);color:var(--text);background-color:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);transition:border-color var(--transition-fast), box-shadow var(--transition-fast);padding:.625rem .875rem;line-height:1.5}@media (pointer:coarse){.input,.select,.textarea{font-size:max(1rem, var(--text-sm));min-height:var(--tap-min)}}.input:focus,.select:focus,.textarea:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--accent-50);outline:none}.input::placeholder,.textarea::placeholder{color:var(--text-muted)}.input-error{border-color:var(--danger)}.input-error:focus{box-shadow:0 0 0 3px var(--danger-bg)}.input-sm{font-size:var(--text-xs);padding:.375rem .625rem}.input-lg{font-size:var(--text-base);padding:.75rem 1rem}.textarea{resize:vertical;min-height:100px}.select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23666666' stroke-width='2'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");background-position:right .75rem center;background-repeat:no-repeat;background-size:1rem;padding-right:2.5rem}.form-group{gap:var(--space-1);flex-direction:column;display:flex}.form-label{font-size:var(--text-sm);font-weight:var(--font-medium);color:var(--text)}.form-hint{font-size:var(--text-xs);color:var(--text-muted)}.form-error{font-size:var(--text-xs);color:var(--danger)}.table-wrapper{-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain;border:1px solid var(--border-light);border-radius:var(--radius-lg);width:100%;max-width:100%;overflow-x:auto}.table{border-collapse:collapse;width:100%;font-size:var(--text-sm)}.table th{padding:var(--space-3) var(--space-4);text-align:left;font-weight:var(--font-semibold);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.05em;color:var(--text-secondary);background-color:var(--surface-alt);border-bottom:1px solid var(--border);white-space:nowrap}.table td{padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--border-light);color:var(--text);vertical-align:middle;overflow-wrap:anywhere}.table thead th{z-index:1;background-color:var(--surface-alt);position:sticky;top:0}.table tbody tr:hover{background-color:var(--surface-alt)}.table tbody tr:last-child td{border-bottom:none}.badge{align-items:center;gap:var(--space-1);font-size:var(--text-xs);font-weight:var(--font-medium);border-radius:var(--radius-full);white-space:nowrap;padding:.125rem .5rem;line-height:1.5;display:inline-flex}.badge-available{color:var(--status-available);background-color:var(--status-available-bg)}.badge-borrowed{color:var(--status-borrowed);background-color:var(--status-borrowed-bg)}.badge-reserved{color:var(--status-reserved);background-color:var(--status-reserved-bg)}.badge-overdue{color:var(--status-overdue);background-color:var(--status-overdue-bg)}.badge-misplaced{color:var(--status-misplaced);background-color:var(--status-misplaced-bg)}.badge-maintenance{color:var(--status-maintenance);background-color:var(--status-maintenance-bg)}.badge-primary{color:var(--text-on-primary);background-color:var(--primary)}.badge-accent{color:var(--text-on-accent);background-color:var(--accent)}.alert{align-items:flex-start;gap:var(--space-3);padding:var(--space-4);border-radius:var(--radius-lg);font-size:var(--text-sm);border:1px solid #0000;display:flex}.alert-success{background-color:var(--success-bg);color:var(--success);border-color:var(--success);border-color:#0e9f6e33}.alert-warning{background-color:var(--warning-bg);color:var(--warning);border-color:#ed6c0233}.alert-danger{background-color:var(--danger-bg);color:var(--danger);border-color:#d32f2f33}.alert-info{background-color:var(--info-bg);color:var(--info);border-color:#0288d133}.modal-backdrop{z-index:var(--z-modal-backdrop);padding:var(--page-gutter);overscroll-behavior:contain;background-color:#00000080;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background-color:var(--surface);border-radius:var(--radius-xl);box-shadow:var(--shadow-xl);width:100%;max-width:32rem;min-height:0;max-height:90dvh;z-index:var(--z-modal);flex-direction:column;display:flex;overflow:hidden}.modal-header{justify-content:space-between;align-items:center;gap:var(--space-3);padding:var(--card-pad) var(--card-pad);border-bottom:1px solid var(--border-light);flex-shrink:0;display:flex}.modal-header>:first-child{overflow-wrap:anywhere;min-width:0}.modal-body{padding:var(--card-pad);overscroll-behavior:contain;min-height:0;overflow-y:auto}.modal-footer{justify-content:flex-end;align-items:center;gap:var(--space-3);padding:var(--card-pad);border-top:1px solid var(--border-light);flex-wrap:wrap;flex-shrink:0;display:flex}.pagination{justify-content:center;align-items:center;gap:var(--space-1);flex-wrap:wrap;display:flex}.pagination-btn{min-width:2rem;height:2rem;padding:0 var(--space-2);font-size:var(--text-sm);font-weight:var(--font-medium);color:var(--text-secondary);border:1px solid var(--border);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast);background-color:#0000;justify-content:center;align-items:center;display:flex}.pagination-btn:hover{background-color:var(--surface-alt);color:var(--text)}.pagination-btn.active{background-color:var(--primary);color:var(--text-on-primary);border-color:var(--primary)}.tabs{border-bottom:2px solid var(--border-light);-webkit-overflow-scrolling:touch;scrollbar-width:none;align-items:center;gap:0;max-width:100%;display:flex;overflow-x:auto}.tabs::-webkit-scrollbar{display:none}.tab{align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-5);font-size:var(--text-sm);font-weight:var(--font-medium);color:var(--text-secondary);cursor:pointer;transition:all var(--transition-fast);white-space:nowrap;background-color:#0000;border:none;border-bottom:2px solid #0000;margin-bottom:-2px;display:flex}.tab:hover{color:var(--text)}.tab.active{color:var(--primary);border-bottom-color:var(--primary)}.divider{background-color:var(--border-light);width:100%;height:1px;margin:var(--space-4) 0}.empty-state{padding:clamp(2rem, 6vw, 3rem) var(--page-gutter);text-align:center;flex-direction:column;justify-content:center;align-items:center;display:flex}.empty-state-icon{width:clamp(3rem,12vw,4rem);height:clamp(3rem,12vw,4rem);margin-bottom:var(--space-4);color:var(--text-muted)}.empty-state-title{font-size:var(--text-lg);font-weight:var(--font-semibold);color:var(--text);margin-bottom:var(--space-2)}.empty-state-text{font-size:var(--text-sm);color:var(--text-muted);max-width:24rem;margin-bottom:var(--space-6)}.avatar{border-radius:var(--radius-full);background-color:var(--primary-100);width:2.5rem;height:2.5rem;color:var(--primary);font-size:var(--text-sm);font-weight:var(--font-semibold);justify-content:center;align-items:center;display:inline-flex;overflow:hidden}.avatar img{object-fit:cover;width:100%;height:100%}.avatar-sm{width:2rem;height:2rem;font-size:var(--text-xs)}.avatar-lg{width:3.5rem;height:3.5rem;font-size:var(--text-lg)}.skeleton{background:linear-gradient(90deg, var(--border-light) 25%, var(--border) 50%, var(--border-light) 75%);border-radius:var(--radius-md);background-size:200% 100%;animation:1.5s infinite skeleton-shimmer}@keyframes skeleton-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--background)}::-webkit-scrollbar-thumb{background:var(--border-dark);border-radius:var(--radius-full)}::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}@media print{.no-print,.navbar,.sidebar{display:none!important}body{color:#000;background:#fff}.card{box-shadow:none;border:1px solid #ccc}}@media (width>=1800px){:root{--page-max:1560px}}@media (width<=1200px){.grid-cols-4{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (width<=1024px){:root{--sidebar-width:0px}.grid-cols-4,.grid-cols-3{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-2{grid-template-columns:minmax(0,1fr)}}@media (width<=768px){:root{--navbar-height:3.5rem;--header-height:3.5rem}.grid-cols-4,.grid-cols-3,.grid-cols-2{grid-template-columns:minmax(0,1fr)}.col-span-2,.col-span-3{grid-column:span 1}.hide-mobile{display:none!important}.table{font-size:var(--text-xs)}.table th,.table td{padding:var(--space-2) var(--space-3)}}@media (width<=480px){.btn{font-size:var(--text-xs);padding:.5rem 1rem}.modal{max-width:100%}.pagination{flex-wrap:wrap;justify-content:center}}@media (width<=360px){:root{--page-gutter:.75rem;--card-pad:.875rem;--grid-gap:.75rem}.container{padding-left:.75rem;padding-right:.75rem}}@media (pointer:coarse){:root .btn,:root .modal-close,:root .toast-dismiss,:root .pagination-btn{min-height:var(--tap-min)}:root .btn-icon,:root .action-btn,:root .switch-btn,:root .modal-close,:root .toast-dismiss,:root .pagination-btn{min-width:var(--tap-min)}:root .btn-icon,:root .action-btn,:root .switch-btn{width:var(--tap-min);height:var(--tap-min)}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@keyframes slideInRight{0%{opacity:0;transform:translate(20px)}to{opacity:1;transform:translate(0)}}@keyframes spin{to{transform:rotate(360deg)}}.animate-fade-in{animation:fadeIn var(--transition-normal) ease-out}.animate-fade-in-up{animation:fadeInUp var(--transition-normal) ease-out}.animate-fade-in-down{animation:fadeInDown var(--transition-normal) ease-out}.animate-slide-in-right{animation:slideInRight var(--transition-normal) ease-out}.animate-spin{animation:1s linear infinite spin}.btn{cursor:pointer;transition:all var(--transition-fast);white-space:normal;overflow-wrap:break-word;text-align:center;border:none;border-radius:12px;justify-content:center;align-items:center;gap:.5rem;max-width:100%;font-family:inherit;font-weight:600;line-height:1.2;text-decoration:none;display:inline-flex}.btn>svg{flex-shrink:0}.btn:active:not(:disabled){transform:translateY(1px)scale(.99)}.btn:disabled{opacity:.55;cursor:not-allowed;pointer-events:none}.btn--sm{min-height:2rem;padding:.4rem .85rem;font-size:.8rem}.btn--md{min-height:2.25rem;padding:.55rem 1.15rem;font-size:.875rem}.btn--lg{min-height:2.75rem;padding:.7rem 1.5rem;font-size:1rem}.btn--primary{background:var(--primary,#1b3a5c);color:#fff;box-shadow:0 6px 16px -8px #06163f80}.btn--primary:hover{background:var(--primary-dark,#14304a);box-shadow:0 8px 20px -8px #06163f73}.btn--secondary{background:var(--accent,#e98a24);color:var(--text-on-accent,#06163f);box-shadow:var(--shadow-gold,0 8px 24px -8px #e99a3a8c)}.btn--secondary:hover{background:var(--accent-dark,#a50d24);box-shadow:0 10px 28px -8px #e99a3a80}.btn--outline{color:var(--primary,#1b3a5c);border:2px solid var(--primary,#1b3a5c);background:0 0}.btn--outline:hover{background:var(--primary,#1b3a5c);color:#fff}.btn--danger{background:var(--danger,#dc3545);color:#fff}.btn--danger:hover{background:#c82333;box-shadow:0 2px 8px #dc35454d}.btn--success{background:var(--success,#28a745);color:#fff}.btn--success:hover{background:#218838;box-shadow:0 2px 8px #28a7454d}.btn--ghost{color:var(--text-secondary,#6c757d);background:0 0}.btn--ghost:hover{background:var(--surface,#f8f9fa);color:var(--text,#212529)}.btn .spinner{border:2px solid #ffffff59;border-top-color:#fff;border-radius:50%;width:1em;height:1em;animation:.6s linear infinite btn-spin}.btn--ghost .spinner,.btn--outline .spinner{border-color:#1b3a5c40;border-top-color:var(--primary,#1b3a5c)}@keyframes btn-spin{to{transform:rotate(360deg)}}.input-group{flex-direction:column;gap:.35rem;display:flex}.input-label{color:var(--text,#212529);font-size:.85rem;font-weight:600}.input-label--required:after{content:" *";color:var(--accent,#c8102e)}.input-wrapper{align-items:center;display:flex;position:relative}.input-wrapper .input-icon{width:18px;height:18px;color:var(--text-secondary,#6c757d);pointer-events:none;flex-shrink:0;position:absolute;left:.75rem}.input-field{border:2px solid var(--border,#dee2e6);width:100%;color:var(--text,#212529);background:#fff;border-radius:8px;outline:none;padding:.6rem .85rem;font-family:inherit;font-size:.9rem;transition:border-color .2s,box-shadow .2s}.input-field.has-icon{padding-left:2.5rem}.input-field::placeholder{color:var(--text-secondary,#6c757d);opacity:.6}.input-field:focus{border-color:var(--primary,#1b3a5c);box-shadow:0 0 0 3px #1b3a5c1f}.input-field.input--error{border-color:var(--danger,#dc3545)}.input-field.input--error:focus{box-shadow:0 0 0 3px #dc35451f}.input-field:disabled{background:var(--surface,#f8f9fa);cursor:not-allowed;opacity:.65}.input-error{color:var(--danger,#dc3545);margin-top:.15rem;font-size:.8rem}.input-helper{color:var(--text-secondary,#6c757d);margin-top:.15rem;font-size:.78rem}.select-field{border:2px solid var(--border,#dee2e6);width:100%;color:var(--text,#212529);appearance:none;cursor:pointer;background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%236c757d' stroke-width='2.5'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E") right .75rem center no-repeat;border-radius:8px;outline:none;padding:.6rem 2.2rem .6rem .85rem;font-family:inherit;font-size:.9rem;transition:border-color .2s,box-shadow .2s}.select-field:focus{border-color:var(--primary,#1b3a5c);box-shadow:0 0 0 3px #1b3a5c1f}.select-field:disabled{background-color:var(--surface,#f8f9fa);cursor:not-allowed;opacity:.65}.select-field option[value=""]{color:var(--text-secondary,#6c757d)}.card{background:var(--surface,#fff);border:1px solid var(--border,#dee2e6);border-radius:12px;transition:box-shadow .25s,transform .25s}.card--no-pad{padding:0}.card--pad-sm{padding:1rem}.card--pad-md{padding:1.5rem}.card--pad-lg{padding:2rem}.card--hover:hover{transform:translateY(-2px);box-shadow:0 6px 20px #00000014}.badge{overflow-wrap:break-word;border-radius:20px;align-items:center;max-width:100%;font-weight:600;display:inline-flex}.badge--sm{padding:.2rem .6rem;font-size:.7rem}.badge--md{padding:.3rem .85rem;font-size:.78rem}.badge--available,.badge--success{color:#1e7e34;background:#28a7451f}.badge--borrowed,.badge--warning{color:#856404;background:#ffc10726}.badge--reserved,.badge--info{color:#0056b3;background:#007bff1f}.badge--overdue,.badge--danger{color:#bd2130;background:#dc35451f}.badge--misplaced{color:#8a4100;background:#fd7e1426}.badge--maintenance{color:#495057;background:#6c757d26}.modal-overlay{z-index:1000;padding:clamp(.75rem,3vw,1.5rem);padding-top:max(clamp(.75rem, 3vw, 1.5rem), env(safe-area-inset-top,0px));padding-bottom:max(clamp(.75rem, 3vw, 1.5rem), env(safe-area-inset-bottom,0px));background:#00000080;justify-content:center;align-items:center;animation:.2s modal-fade-in;display:flex;position:fixed;inset:0}.modal-content{background:var(--surface,#fff);-webkit-overflow-scrolling:touch;overscroll-behavior:contain;border-radius:12px;width:100%;max-height:90dvh;animation:.25s modal-slide-in;overflow-y:auto;box-shadow:0 20px 60px #0003}.modal--sm{max-width:min(400px,100%)}.modal--md{max-width:min(560px,100%)}.modal--lg{max-width:min(780px,100%)}.modal-header{border-bottom:1px solid var(--border,#dee2e6);background:var(--surface,#fff);z-index:1;justify-content:space-between;align-items:flex-start;gap:.75rem;padding:1.25rem 1.5rem;display:flex;position:sticky;top:0}.modal-header h2{color:var(--text,#212529);overflow-wrap:break-word;min-width:0;margin:0;font-size:1.15rem}.modal-close{cursor:pointer;width:32px;height:32px;color:var(--text-secondary,#6c757d);background:0 0;border:none;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;transition:background .15s,color .15s;display:flex}.modal-close:hover{background:var(--surface,#f8f9fa);color:var(--text,#212529)}.modal-body{padding:1.25rem 1.5rem}.modal-footer{border-top:1px solid var(--border,#dee2e6);background:var(--surface,#fff);flex-wrap:wrap;justify-content:flex-end;gap:.75rem;padding:1rem 1.5rem;display:flex;position:sticky;bottom:0}@keyframes modal-fade-in{0%{opacity:0}to{opacity:1}}@keyframes modal-slide-in{0%{opacity:0;transform:translateY(-12px)scale(.97)}to{opacity:1;transform:translateY(0)scale(1)}}.toast-container{top:max(1rem, env(safe-area-inset-top,0px));right:var(--page-gutter);left:var(--page-gutter);z-index:2000;pointer-events:none;flex-direction:column;align-items:flex-end;gap:.75rem;display:flex;position:fixed}.toast{pointer-events:auto;border-left:4px solid var(--border,#dee2e6);background:#fff;border-radius:10px;align-items:flex-start;gap:.75rem;width:100%;min-width:min(300px,100%);max-width:min(420px,100%);padding:1rem 1.25rem;animation:.3s toast-in;display:flex;box-shadow:0 8px 30px #0000001f}.toast--exiting{animation:.25s forwards toast-out}.toast--success{border-left-color:var(--success,#28a745)}.toast--error{border-left-color:var(--danger,#dc3545)}.toast--warning{border-left-color:var(--warning,#ffc107)}.toast--info{border-left-color:var(--info,#17a2b8)}.toast-icon{flex-shrink:0;width:20px;height:20px;margin-top:1px}.toast--success .toast-icon{color:var(--success,#28a745)}.toast--error .toast-icon{color:var(--danger,#dc3545)}.toast--warning .toast-icon{color:var(--warning,#ffc107)}.toast--info .toast-icon{color:var(--info,#17a2b8)}.toast-message{min-width:0;color:var(--text,#212529);overflow-wrap:break-word;flex:1;font-size:.875rem;line-height:1.45}.toast-dismiss{cursor:pointer;color:var(--text-secondary,#6c757d);min-width:var(--tap-min);min-height:var(--tap-min);background:0 0;border:none;border-radius:4px;flex-shrink:0;padding:2px;transition:color .15s}.toast-dismiss:hover{color:var(--text,#212529)}@keyframes toast-in{0%{opacity:0;transform:translate(40px)}to{opacity:1;transform:translate(0)}}@keyframes toast-out{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(40px)}}.spinner{border:3px solid var(--border,#dee2e6);border-top-color:var(--primary,#1b3a5c);border-radius:50%;animation:.7s linear infinite spin;display:inline-block}.spinner--sm{border-width:2px;width:20px;height:20px}.spinner--md{border-width:3px;width:36px;height:36px}.spinner--lg{border-width:4px;width:56px;height:56px}.spinner-overlay{justify-content:center;align-items:center;padding:3rem;display:flex}.empty-state{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:.75rem;padding:clamp(1.5rem,6vw,3rem) 1.5rem;display:flex}.empty-state-icon{width:clamp(44px,18vw,64px);height:clamp(44px,18vw,64px);color:var(--text-secondary,#6c757d);opacity:.45;margin-bottom:.5rem}.empty-state-title{color:var(--text,#212529);overflow-wrap:break-word;margin:0;font-size:1.15rem;font-weight:600}.empty-state-desc{color:var(--text-secondary,#6c757d);overflow-wrap:break-word;max-width:360px;margin:0;font-size:.9rem;line-height:1.5}.empty-state-action{margin-top:.5rem}.pagination{flex-wrap:wrap;justify-content:center;align-items:center;gap:.35rem;display:flex}.pagination-btn{border:2px solid var(--border,#dee2e6);min-width:36px;height:36px;color:var(--text,#212529);cursor:pointer;background:#fff;border-radius:8px;justify-content:center;align-items:center;padding:0 .55rem;font-family:inherit;font-size:.85rem;font-weight:500;transition:all .15s;display:flex}.pagination-btn:hover:not(:disabled){border-color:var(--primary,#1b3a5c);color:var(--primary,#1b3a5c)}.pagination-btn:disabled{opacity:.4;cursor:not-allowed}.pagination-btn--active{background:var(--primary,#1b3a5c);border-color:var(--primary,#1b3a5c);color:#fff}.pagination-btn--active:hover:not(:disabled){background:var(--primary-dark,#14304a);color:#fff}.pagination-ellipsis{width:36px;height:36px;color:var(--text-secondary,#6c757d);justify-content:center;align-items:center;font-size:.9rem;display:flex}.stats-card{background:var(--surface,#fff);border:1px solid var(--border,#dee2e6);border-radius:12px;flex-wrap:wrap;align-items:flex-start;gap:1rem;min-width:0;padding:1.25rem 1.5rem;transition:box-shadow .25s;display:flex}.stats-card:hover{box-shadow:0 4px 14px #0000000f}.stats-card-icon{border-radius:12px;flex-shrink:0;justify-content:center;align-items:center;width:48px;height:48px;display:flex}.stats-card-icon--primary{color:var(--primary,#1b3a5c);background:#1b3a5c1a}.stats-card-icon--accent{color:var(--accent,#e98a24);background:#e98a241a}.stats-card-icon--success{color:var(--success,#28a745);background:#28a7451a}.stats-card-icon--warning{color:var(--warning,#e0a800);background:#ffc1071a}.stats-card-icon--info{color:var(--info,#17a2b8);background:#17a2b81a}.stats-card-info{flex-direction:column;gap:.2rem;min-width:0;display:flex}.stats-card-label{color:var(--text-secondary,#6c757d);text-transform:uppercase;letter-spacing:.03em;font-size:.8rem;font-weight:500}.stats-card-value{color:var(--text,#212529);font-size:1.6rem;font-weight:700;line-height:1.2}.stats-card-trend{align-items:center;gap:.3rem;margin-top:.15rem;font-size:.78rem;font-weight:600;display:flex}.stats-card-trend--up{color:var(--success,#28a745)}.stats-card-trend--down{color:var(--danger,#dc3545)}.search-bar{align-items:center;display:flex;position:relative}.search-bar-icon{width:18px;height:18px;color:var(--text-secondary,#6c757d);pointer-events:none;position:absolute;left:.85rem}.search-bar-input{border:2px solid var(--border,#dee2e6);width:100%;color:var(--text,#212529);background:#fff;border-radius:8px;outline:none;padding:.6rem 1rem .6rem 2.6rem;font-family:inherit;font-size:.9rem;transition:border-color .2s,box-shadow .2s}.search-bar-input::placeholder{color:var(--text-secondary,#6c757d);opacity:.6}.search-bar-input:focus{border-color:var(--primary,#1b3a5c);box-shadow:0 0 0 3px #1b3a5c1a}@media (width<=768px){.modal-overlay{padding:1rem}.modal-content{max-height:85vh}.toast-container{left:1rem;right:1rem}.toast{min-width:auto;max-width:100%}.stats-card{padding:1rem}.stats-card-value{font-size:1.35rem}.empty-state{padding:2rem 1rem}}@media (width<=480px){.btn--lg{padding:.6rem 1.2rem;font-size:.9rem}.modal-body,.modal-header,.modal-footer{padding:1rem}.modal-footer{flex-wrap:wrap}.modal-footer .btn{flex:auto}.pagination-btn{min-width:32px;height:32px;font-size:.8rem}}.navbar{height:var(--navbar-height);min-height:var(--navbar-height);-webkit-backdrop-filter:blur(16px)saturate(160%);backdrop-filter:blur(16px)saturate(160%);padding:0 var(--page-gutter);z-index:1000;background:#ffffffb8;border-bottom:1px solid #06163f14;justify-content:space-between;align-items:center;gap:clamp(.5rem,1.5vw,1.5rem);display:flex;position:fixed;top:0;left:0;right:0;box-shadow:0 1px #06163f08,0 8px 24px -12px #06163f1f}.navbar__brand{min-width:0;font-family:var(--font-display);color:var(--text);letter-spacing:-.01em;flex-shrink:1;align-items:center;gap:10px;font-size:clamp(1rem,.92rem + .4vw,1.2rem);font-weight:700;display:flex}.navbar__brand svg{flex-shrink:0}.navbar__brand-logo{object-fit:contain;border-radius:6px;flex-shrink:0;width:auto;height:clamp(26px,6vw,34px)}.navbar__brand-text{flex-direction:column;min-width:0;line-height:1.1;display:flex}.navbar__brand-sub{color:var(--accent-dark);letter-spacing:1.2px;text-transform:uppercase;white-space:nowrap;font-size:clamp(.55rem,1.6vw,.62rem);font-weight:700}.navbar__links{align-items:center;gap:4px;min-width:0;display:flex}.navbar__link{color:var(--text-secondary);border-radius:var(--radius-full);white-space:nowrap;transition:color var(--transition-fast), background var(--transition-fast);padding:8px clamp(.5rem,1.4vw,16px);font-size:clamp(.8rem,.7rem + .35vw,.9rem);font-weight:500;position:relative}.navbar__link:hover{color:var(--primary);background:var(--primary-50)}.navbar__link--active{color:var(--primary-dark);background:var(--primary-100);font-weight:600}.navbar__link--active:after{content:"";background:var(--accent);border-radius:3px;width:16px;height:3px;position:absolute;bottom:2px;left:50%;transform:translate(-50%)}.navbar__actions{flex-shrink:0;align-items:center;gap:clamp(.375rem,1.2vw,12px);min-width:0;display:flex}.navbar__auth-btn{border-radius:var(--radius-full);white-space:nowrap;transition:all var(--transition-fast);border:none;padding:8px clamp(.75rem,1.8vw,20px);font-size:.875rem;font-weight:600}.navbar__auth-btn--outline{background:var(--accent);color:var(--text-on-accent);border:1px solid var(--accent);box-shadow:var(--shadow-gold)}.navbar__auth-btn--outline:hover{background:var(--accent-dark);border-color:var(--accent-dark)}.navbar__auth-btn--filled{background:var(--primary);color:var(--text-on-primary);border:1px solid var(--primary)}.navbar__auth-btn--filled:hover{background:var(--primary-light);border-color:var(--primary-light)}.navbar__user{align-items:center;gap:8px;min-width:0;display:flex;position:relative}.navbar__user-btn{border:1px solid var(--border-light);border-radius:var(--radius-full);max-width:100%;color:var(--text);box-shadow:var(--shadow-sm);transition:border-color var(--transition-fast), box-shadow var(--transition-fast);background:#ffffffd9;align-items:center;gap:8px;padding:4px 12px 4px 4px;font-size:.875rem;font-weight:500;display:flex}.navbar__user-btn>span:not(.navbar__user-avatar){text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.navbar__user-btn:hover{border-color:var(--primary-light);box-shadow:var(--shadow-md)}.navbar__user-avatar{background:var(--accent);width:clamp(26px,6vw,32px);height:clamp(26px,6vw,32px);color:var(--text-on-accent);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:.8rem;font-weight:700;display:flex;box-shadow:inset 0 0 0 2px #fff6}.navbar__dropdown{width:max-content;min-width:200px;max-width:calc(100vw - 2 * var(--page-gutter));background:var(--surface);border:1px solid var(--border-light);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);z-index:1100;padding:6px;position:absolute;top:calc(100% + 6px);right:0}.navbar__dropdown-item{width:100%;color:var(--text);border-radius:var(--radius-md);text-align:left;transition:background var(--transition-fast);background:0 0;border:none;align-items:center;gap:10px;padding:8px 12px;font-size:.875rem;display:flex}.navbar__dropdown-item:hover{background:var(--surface-alt)}.navbar__dropdown-item--danger{color:var(--danger)}.navbar__dropdown-divider{background:var(--border-light);height:1px;margin:4px 0}.navbar__mobile-toggle{width:var(--tap-min);height:var(--tap-min);color:var(--text);border-radius:var(--radius-md);transition:background var(--transition-fast);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:none}.navbar__mobile-toggle:hover{background:var(--primary-50)}.navbar__mobile-menu{top:var(--navbar-height);padding:var(--page-gutter);padding-bottom:calc(var(--page-gutter) + env(safe-area-inset-bottom,0px));background:var(--surface);z-index:999;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;display:none;position:fixed;bottom:0;left:0;right:0;overflow-y:auto}.navbar__mobile-menu--open{display:block}.navbar__mobile-link{min-height:var(--tap-min);color:var(--text-secondary);border-radius:var(--radius-md);overflow-wrap:anywhere;transition:all var(--transition-fast);align-items:center;padding:14px 16px;font-size:1rem;font-weight:500;display:flex}.navbar__mobile-link:hover,.navbar__mobile-link--active{color:var(--primary);background:#0b24580f}.navbar__mobile-actions{border-top:1px solid var(--border-light);flex-direction:column;gap:10px;margin-top:16px;padding-top:16px;display:flex}.navbar__mobile-actions .navbar__auth-btn{min-height:var(--tap-min);justify-content:center;align-items:center;width:100%;display:inline-flex}.sidebar{width:var(--sidebar-width);background:var(--primary-dark);color:#fff;z-index:1001;max-width:85vw;transition:transform var(--transition-normal);-webkit-overflow-scrolling:touch;overscroll-behavior:contain;scrollbar-gutter:stable;flex-direction:column;display:flex;position:fixed;top:0;bottom:0;left:0;overflow:hidden auto}.sidebar__brand{padding:16px clamp(3rem,12vw,20px) 16px 20px;padding-left:max(20px, env(safe-area-inset-left,0px));border-bottom:1px solid #ffffff1a;flex-shrink:0;align-items:center;gap:10px;display:flex}.sidebar__brand svg{flex-shrink:0}.sidebar__brand-logo{object-fit:contain;border-radius:6px;flex-shrink:0;width:auto;height:32px}.sidebar__brand-text{min-width:0;font-size:1.1rem;font-weight:700;line-height:1.2}.sidebar__brand-sub{opacity:.7;text-transform:uppercase;letter-spacing:.5px;font-size:.6rem}.sidebar__nav{flex:1;min-height:0;padding:12px 0;overflow-y:auto}.sidebar__section{margin-bottom:8px;padding:0 12px}.sidebar__section-title{text-transform:uppercase;letter-spacing:1px;opacity:.5;overflow-wrap:anywhere;padding:8px 12px 6px;font-size:.65rem;font-weight:600}.sidebar__link{color:#ffffffb3;border-radius:var(--radius-md);min-height:2.75rem;transition:all var(--transition-fast);white-space:nowrap;text-overflow:ellipsis;align-items:center;gap:12px;padding:10px 12px;font-size:.875rem;font-weight:500;display:flex;position:relative;overflow:hidden}.sidebar__link:hover{color:#fff;background:#ffffff1a}.sidebar__link--active{color:#fff;background:#ffffff26}.sidebar__link--active:before{content:"";background:var(--accent);border-radius:3px;width:3px;position:absolute;top:22%;bottom:22%;left:0}.sidebar__link svg{opacity:.8;flex-shrink:0}.sidebar__link--active svg{opacity:1}.sidebar__footer{padding:12px 20px 16px;padding-bottom:calc(16px + env(safe-area-inset-bottom,0px));border-top:1px solid #ffffff1a;flex-shrink:0}.sidebar__footer-action{color:#ffffffb3;border-radius:var(--radius-md);cursor:pointer;width:100%;min-height:2.75rem;transition:all var(--transition-fast);background:0 0;border:none;align-items:center;gap:10px;padding:8px;font-size:.85rem;font-weight:500;text-decoration:none;display:flex}.sidebar__footer-action:hover{color:#fff;background:#ffffff1a}.sidebar__footer-action--danger{color:#fca5a5}.sidebar__footer-action--danger:hover{color:#fff;background:#d32f2f40}.sidebar__footer-divider{background:#ffffff1a;height:1px;margin:10px 0}.sidebar__user{border-radius:var(--radius-md);min-height:2.75rem;transition:background var(--transition-fast);align-items:center;gap:10px;padding:8px;display:flex}.sidebar__user:hover{background:#ffffff14}.sidebar__user-avatar{background:var(--accent);width:36px;height:36px;color:var(--primary-dark);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:.8rem;font-weight:700;display:flex}.sidebar__user-info{flex:1;min-width:0}.sidebar__user-name{white-space:nowrap;text-overflow:ellipsis;font-size:.85rem;font-weight:600;overflow:hidden}.sidebar__user-role{opacity:.6;text-transform:capitalize;text-overflow:ellipsis;white-space:nowrap;font-size:.7rem;overflow:hidden}.sidebar-overlay{z-index:1000;background:#0006;animation:.2s sidebar-fade-in;display:none;position:fixed;inset:0}.sidebar-overlay--visible{display:block}@keyframes sidebar-fade-in{0%{opacity:0}to{opacity:1}}.sidebar__close{width:var(--tap-min);height:var(--tap-min);color:#fff9;border-radius:var(--radius-sm);transition:color var(--transition-fast), background var(--transition-fast);background:0 0;border:none;justify-content:center;align-items:center;padding:0;display:none;position:absolute;top:12px;right:12px}.sidebar__close:hover{color:#fff;background:#ffffff1a}@media (width<=1024px){.sidebar{width:min(80vw,260px);box-shadow:none;visibility:hidden;transform:translate(-100%)}.sidebar--open{visibility:visible;transform:translate(0);box-shadow:0 0 60px #00000073}.sidebar__close{display:flex}}@media (width>=1025px){.sidebar-overlay{display:none!important}}@media (width<=480px){.sidebar{width:min(84vw,300px)}}@media (width<=900px){.navbar{padding:0 var(--page-gutter)}.navbar__links{display:none}.navbar__mobile-toggle{display:flex}}@media (width<=768px){.navbar>.navbar__actions>.navbar__auth-btn,.navbar__user{display:none}}@media (width>=901px){.navbar__mobile-menu{display:none!important}}.layout-public,.layout-student{flex-direction:column;min-height:100dvh;display:flex}.layout-public__main,.layout-student__main{width:100%;padding-top:var(--navbar-height);min-height:calc(100vh - var(--navbar-height));min-height:calc(100dvh - var(--navbar-height));flex:1}.layout-public__footer,.layout-student__footer{background:linear-gradient(180deg, var(--primary) 0%, var(--brand-navy) 55%, var(--brand-navy) 100%);color:#ffffffc7;padding:clamp(2.5rem, 6vw, 4rem) var(--page-gutter) clamp(1.5rem, 4vw, 2.5rem);position:relative}.layout-public__footer:before,.layout-student__footer:before{content:"";background:linear-gradient(90deg, var(--accent) 0%, var(--accent-light) 45%, var(--accent-dark) 100%);height:3px;position:absolute;top:0;left:0;right:0}.footer__inner{max-width:var(--container-xl);grid-template-columns:repeat(auto-fit,minmax(min(220px,100%),1fr));gap:clamp(1.5rem,3vw,2.5rem);margin:0 auto;display:grid}.footer__brand{flex-direction:column;grid-column:span 2;gap:12px;min-width:0;display:flex}.footer__brand-name{color:#fff;font-size:1.25rem;font-weight:700;font-family:var(--font-display);letter-spacing:-.01em;align-items:center;gap:8px;min-width:0;display:flex}.footer__brand-logo{object-fit:contain;border-radius:6px;flex-shrink:0;width:auto;height:32px}.footer__brand-desc{opacity:.65;overflow-wrap:break-word;max-width:360px;font-size:.875rem;line-height:1.7}.footer__column-title{text-transform:uppercase;letter-spacing:1.5px;color:var(--accent);margin-bottom:16px;font-size:.75rem;font-weight:700}.footer__link{color:#ffffffb8;overflow-wrap:break-word;min-height:2rem;transition:color var(--transition-fast), transform var(--transition-fast);padding:5px 0;font-size:.875rem;display:block}.footer__link:hover{color:var(--accent);transform:translate(3px)}.footer__bottom{max-width:var(--container-xl);opacity:.55;border-top:1px solid #ffffff14;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;margin:clamp(1.5rem,4vw,2.5rem) auto 0;padding-top:clamp(1rem,3vw,1.5rem);font-size:.8rem;display:flex}@media (width<=900px){.footer__brand{grid-column:1/-1}}@media (width<=480px){.footer__bottom{text-align:center;flex-direction:column}}.layout-admin{min-height:100dvh;display:flex}.layout-admin__sidebar{width:var(--sidebar-width);flex-shrink:0}.layout-admin__main{min-width:0;min-height:100dvh;margin-left:var(--sidebar-width);flex-direction:column;flex:1;display:flex}.layout-admin__header{height:var(--header-height);min-height:var(--header-height);background:var(--surface);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:var(--space-3);padding:0 var(--page-gutter);z-index:100;display:flex;position:sticky;top:0}.layout-admin__header-left{flex:1;align-items:center;gap:12px;min-width:0;display:flex}.layout-admin__toggle-btn{width:var(--tap-min);height:var(--tap-min);margin-left:calc(var(--tap-min) * -.25);color:var(--text);border-radius:var(--radius-md);transition:background var(--transition-fast);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:none}.layout-admin__toggle-btn:hover{background:var(--background)}.layout-admin__title{color:var(--text);text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:clamp(1rem,.95rem + .3vw,1.1rem);font-weight:600;overflow:hidden}.layout-admin__header-right{flex-shrink:0;align-items:center;gap:8px;display:flex}.layout-admin__notif-btn{width:var(--tap-min);height:var(--tap-min);color:var(--text-secondary);border-radius:var(--radius-md);transition:all var(--transition-fast);background:0 0;border:none;justify-content:center;align-items:center;padding:0;display:flex;position:relative}.layout-admin__notif-btn:hover{background:var(--background);color:var(--text)}.layout-admin__header-icon-btn{width:var(--tap-min);height:var(--tap-min);color:var(--text-secondary);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:flex}.layout-admin__header-icon-btn:hover{background:var(--background);color:var(--danger)}.layout-admin__notif-badge{background:var(--danger);border:2px solid var(--surface);border-radius:50%;width:8px;height:8px;position:absolute;top:8px;right:8px}.layout-admin__header-user{min-height:var(--tap-min);border-radius:var(--radius-md);transition:background var(--transition-fast);cursor:pointer;align-items:center;gap:8px;min-width:0;padding:4px 8px;display:flex}.layout-admin__header-user:hover{background:var(--background)}.layout-admin__header-avatar{background:var(--primary);color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:32px;height:32px;font-size:.8rem;font-weight:700;display:flex}.layout-admin__header-user-text{flex-direction:column;min-width:0;line-height:1.25;display:flex}.layout-admin__header-name{text-overflow:ellipsis;white-space:nowrap;max-width:12ch;font-size:.85rem;font-weight:500;overflow:hidden}.layout-admin__header-role{color:var(--text-muted);text-transform:capitalize;text-overflow:ellipsis;white-space:nowrap;max-width:14ch;font-size:.7rem;overflow:hidden}.layout-admin__content{min-width:0;padding:var(--page-gutter);background:var(--background);flex:1;overflow-x:clip}@media (width<=1024px){.layout-admin__main{margin-left:0}.layout-admin__toggle-btn{display:flex}}@media (width<=768px){.layout-admin__header-name,.layout-admin__header-role{display:none}}
