:root{--color-primary:#dc0005;--color-primary-hover:#b00004;--color-primary-light:#fde8e8;--color-secondary:#722372;--color-secondary-hover:#5c1a5c;--color-secondary-light:#f3e8f3;--color-bg:#f4f5f7;--color-surface:#fff;--color-surface-subtle:#f8f9fb;--color-border:#dde1e7;--color-border-focus:#722372;--color-text:#1a1a2e;--color-text-secondary:#4b5563;--color-text-muted:#6b7280;--color-text-inverse:#fff;--color-success:#15803d;--color-success-bg:#dcfce7;--color-success-border:#86efac;--color-danger:#dc2626;--color-danger-bg:#fee2e2;--color-danger-border:#fca5a5;--color-warning:#b45309;--color-warning-bg:#fef3c7;--color-warning-border:#fcd34d;--color-info:#1d4ed8;--color-info-bg:#dbeafe;--color-info-border:#93c5fd;--color-neutral:#374151;--color-neutral-bg:#f3f4f6;--color-neutral-border:#d1d5db;--space-xs:4px;--space-sm:8px;--space-md:16px;--space-lg:24px;--space-xl:32px;--space-2xl:48px;--font-family:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-mono:ui-monospace, "Cascadia Code", "Source Code Pro", Menlo, monospace;--font-size-xs:.75rem;--font-size-sm:.8125rem;--font-size-base:.9375rem;--font-size-lg:1.0625rem;--font-size-xl:1.25rem;--font-size-2xl:1.5rem;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semi:600;--font-weight-bold:700;--line-height-base:1.5;--radius-xs:2px;--radius-sm:4px;--radius-md:8px;--radius-lg:12px;--radius-xl:16px;--radius-pill:9999px;--shadow-xs:0 1px 2px #0000000d;--shadow-sm:0 1px 3px #00000014, 0 1px 2px #0000000a;--shadow-md:0 4px 12px #00000014;--shadow-lg:0 8px 24px #0000001a;--shadow-focus:0 0 0 3px #72237233;--header-height:56px;--content-max-w:1200px;--content-padding:var(--space-md);--sidebar-width:220px;--bottom-bar-height:60px;--transition-fast:.12s ease;--transition-base:.2s ease}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--color-bg);color:var(--color-text);font-family:var(--font-family);font-size:var(--font-size-base);line-height:var(--line-height-base);-webkit-font-smoothing:antialiased;min-height:100vh;margin:0}h1,h2,h3,h4,h5,h6{font-weight:var(--font-weight-semi);margin:0;line-height:1.3}p{margin:0}ul,ol{margin:0;padding:0;list-style:none}img{max-width:100%;height:auto;display:block}button{cursor:pointer;font-family:inherit}input,select,textarea{font-family:inherit;font-size:inherit}a{color:var(--color-secondary);text-decoration:none}a:hover{text-decoration:underline}.app{flex-direction:column;min-height:100vh;display:flex}.app-header{background:var(--color-secondary);color:var(--color-text-inverse);padding:var(--space-sm) var(--content-padding);box-shadow:var(--shadow-md);z-index:100;flex-shrink:0;position:sticky;top:0}.app-header__inner{max-width:var(--content-max-w);justify-content:space-between;align-items:center;gap:var(--space-md);min-height:var(--header-height);margin:0 auto;display:flex}.app-header__brand{align-items:center;gap:var(--space-sm);min-width:0;display:flex}.app-header__logo-img{border-radius:var(--radius-pill);object-fit:cover;background:#fff;border:2px solid #ffffff59;flex-shrink:0;width:40px;height:40px}.app-header__text{flex-direction:column;min-width:0;display:flex}.app-header__logo{font-size:var(--font-size-lg);font-weight:var(--font-weight-bold);color:var(--color-text-inverse);white-space:nowrap;letter-spacing:-.01em;line-height:1.2}.app-header__subtitle{font-size:var(--font-size-xs);opacity:.7;white-space:nowrap;display:none}.app-main{flex-direction:column;flex:1;min-width:0;display:flex}.app-sidebar{display:none}.app-sidebar__brand{align-items:center;gap:var(--space-xs);padding:var(--space-sm) var(--space-md);text-align:center;border-bottom:1px solid #ffffff1a;flex-direction:column;flex-shrink:0;display:flex}.app-sidebar__logo{border-radius:var(--radius-pill);object-fit:cover;background:#fff;border:2px solid #ffffff59;flex-shrink:0;width:125px;height:125px}.app-sidebar__name{font-size:var(--font-size-base);font-weight:var(--font-weight-bold);color:var(--color-text-inverse);white-space:nowrap;line-height:1.25}.app-sidebar__org{color:#fff9;white-space:nowrap;text-overflow:ellipsis;max-width:180px;font-size:11px;line-height:1.2;overflow:hidden}.app-sidebar__nav{padding:var(--space-sm);scrollbar-width:thin;flex:1;overflow-y:auto}.app-sidebar__footer{padding:var(--space-md);border-top:1px solid #ffffff1a;flex-shrink:0}.app-sidebar__footer .user-info{gap:var(--space-xs);flex-wrap:wrap}.app-sidebar__footer .user-name{max-width:none;font-size:var(--font-size-xs);flex:1;display:block}.app-sidebar__footer .user-role-badge{display:none}.app-sidebar__footer .btn-signout,.app-sidebar__footer .btn-login{flex:0 0 100%;justify-content:center}.sidebar-nav-item{align-items:center;gap:var(--space-sm);width:100%;padding:10px var(--space-sm);border-radius:var(--radius-md);color:#ffffffb3;font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);text-align:left;cursor:pointer;transition:background var(--transition-fast), color var(--transition-fast);margin-bottom:var(--space-xs);background:0 0;border:none;border-left:3px solid #0000;display:flex}.sidebar-nav-item:hover{color:#fffffff2;background:#ffffff1a}.sidebar-nav-item.active{color:var(--color-text-inverse);font-weight:var(--font-weight-semi);border-left-color:var(--color-primary);padding-left:calc(var(--space-sm) - 3px);background:#ffffff26}.sidebar-nav-item__icon{text-align:center;flex-shrink:0;width:20px;font-size:1.1em}.app-bottom-bar{height:var(--bottom-bar-height);background:var(--color-secondary-hover);z-index:100;scrollbar-width:none;padding-bottom:env(safe-area-inset-bottom,0);border-top:1px solid #ffffff1a;align-items:stretch;display:flex;position:fixed;bottom:0;left:0;right:0;overflow-x:auto}.app-bottom-bar::-webkit-scrollbar{display:none}.bottom-nav-item{min-width:56px;padding:var(--space-xs) var(--space-xs);color:#fff9;cursor:pointer;transition:color var(--transition-fast), border-color var(--transition-fast);white-space:nowrap;background:0 0;border:none;border-top:2px solid #0000;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:2px;display:flex}.bottom-nav-item:hover{color:#ffffffe6}.bottom-nav-item.active{color:var(--color-text-inverse);border-top-color:var(--color-primary)}.bottom-nav-item__icon{font-size:20px;line-height:1}.bottom-nav-item__label{font-size:10px;font-weight:var(--font-weight-medium);line-height:1}.content{max-width:var(--content-max-w);width:100%;padding:var(--space-lg) var(--content-padding);padding-bottom:calc(var(--bottom-bar-height) + var(--space-lg));flex:1;margin:0 auto}.section-header{justify-content:space-between;align-items:center;gap:var(--space-sm);margin-bottom:var(--space-lg);flex-wrap:wrap;display:flex}.section-title{font-size:var(--font-size-xl);font-weight:var(--font-weight-semi);color:var(--color-text)}.empty-state{text-align:center;padding:var(--space-2xl) var(--space-lg);color:var(--color-text-muted);background:var(--color-surface);border-radius:var(--radius-lg);border:2px dashed var(--color-border)}.empty-state p{font-size:var(--font-size-base)}.msg-error{color:var(--color-danger);background:var(--color-danger-bg);border:1px solid var(--color-danger-border);border-radius:var(--radius-md);padding:var(--space-sm) var(--space-md);font-size:var(--font-size-sm);margin-bottom:var(--space-md)}.msg-success{color:var(--color-success);background:var(--color-success-bg);border:1px solid var(--color-success-border);border-radius:var(--radius-md);padding:var(--space-sm) var(--space-md);font-size:var(--font-size-sm);margin-bottom:var(--space-md)}.msg-warning{color:var(--color-warning);background:var(--color-warning-bg);border:1px solid var(--color-warning-border);border-radius:var(--radius-md);padding:var(--space-sm) var(--space-md);font-size:var(--font-size-sm);margin-bottom:var(--space-md)}@media (width>=480px){.app-header__subtitle{display:block}}@media (width>=768px){:root{--content-padding:var(--space-xl)}}@media (width>=1024px){.app{flex-direction:row}.app-sidebar{width:var(--sidebar-width);background:var(--color-secondary-hover);flex-direction:column;flex-shrink:0;height:100vh;min-height:100vh;display:flex;position:sticky;top:0;overflow:hidden}.app-header,.app-bottom-bar{display:none}.content{max-width:none;padding:var(--space-xl);padding-bottom:var(--space-xl);margin:0}}.btn{justify-content:center;align-items:center;gap:var(--space-xs);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-md);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);cursor:pointer;white-space:nowrap;transition:background var(--transition-fast), border-color var(--transition-fast), color var(--transition-fast), box-shadow var(--transition-fast);border:1px solid #0000;line-height:1;text-decoration:none;display:inline-flex}.btn:focus-visible{box-shadow:var(--shadow-focus);outline:none}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:var(--color-primary);color:var(--color-text-inverse);border-color:var(--color-primary)}.btn-primary:hover:not(:disabled){background:var(--color-primary-hover);border-color:var(--color-primary-hover)}.btn-secondary{color:var(--color-secondary);border-color:var(--color-secondary);background:0 0}.btn-secondary:hover:not(:disabled){background:var(--color-secondary-light)}.btn-danger{color:var(--color-danger);border-color:var(--color-danger-border);background:0 0}.btn-danger:hover:not(:disabled){background:var(--color-danger-bg);border-color:var(--color-danger)}.btn-ghost{color:var(--color-text-secondary);background:0 0;border-color:#0000}.btn-ghost:hover:not(:disabled){background:var(--color-surface-subtle)}.btn-success{background:var(--color-success);color:var(--color-text-inverse);border-color:var(--color-success)}.btn-success:hover:not(:disabled){filter:brightness(.92)}.btn-sm{padding:var(--space-xs) var(--space-sm);font-size:var(--font-size-xs);border-radius:var(--radius-sm)}.btn-lg{padding:var(--space-md) var(--space-xl);font-size:var(--font-size-lg);border-radius:var(--radius-lg)}.btn-block{width:100%}.btn-login{align-items:center;gap:var(--space-sm);padding:var(--space-xs) var(--space-md);color:var(--color-text-inverse);border-radius:var(--radius-md);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);cursor:pointer;transition:background var(--transition-fast);white-space:nowrap;background:#ffffff26;border:1px solid #ffffff59;display:inline-flex}.btn-login:hover{background:#ffffff40}.btn-signout{padding:var(--space-xs) var(--space-sm);color:#ffffffb3;border-radius:var(--radius-sm);font-size:var(--font-size-xs);cursor:pointer;transition:all var(--transition-fast);white-space:nowrap;background:0 0;border:1px solid #ffffff40;align-items:center;display:inline-flex}.btn-signout:hover{color:var(--color-text-inverse);background:#ffffff26}.table-wrapper{-webkit-overflow-scrolling:touch;border-radius:var(--radius-lg);width:100%;box-shadow:var(--shadow-sm);overflow-x:auto}.table{border-collapse:collapse;background:var(--color-surface);width:100%;font-size:var(--font-size-sm)}.table thead{background:var(--color-surface-subtle);border-bottom:2px solid var(--color-border)}.table th{text-align:left;padding:var(--space-sm) var(--space-md);font-size:var(--font-size-xs);font-weight:var(--font-weight-semi);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.06em;white-space:nowrap}.table td{padding:var(--space-sm) var(--space-md);border-top:1px solid var(--color-border);vertical-align:middle;color:var(--color-text)}.table tbody tr:hover{background:var(--color-surface-subtle)}.table th.col-actions,.table td.col-actions{text-align:right}.tr-overdue{background:var(--color-danger-bg)!important}.tr-overdue:hover{background:#fecaca!important}.tr-ready{background:var(--color-success-bg)!important}.tr-ready:hover{background:#bbf7d0!important}.tr-confirmed{background:var(--color-warning-bg)!important}.tr-confirmed:hover{background:var(--color-warning-border)!important}.tr-expanded td{background:var(--color-surface-subtle);padding:0}.sub-table-wrapper{padding:var(--space-sm) var(--space-lg);border-top:1px solid var(--color-border)}@media (width<=479px){.col-hide-sm{display:none}}@media (width<=767px){.col-hide-md{display:none}.table th,.table td{padding:var(--space-xs) var(--space-sm)}}.form{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-lg);margin-bottom:var(--space-lg);box-shadow:var(--shadow-xs)}.form-title{font-size:var(--font-size-base);font-weight:var(--font-weight-semi);color:var(--color-text-secondary);margin-bottom:var(--space-md);padding-bottom:var(--space-sm);border-bottom:1px solid var(--color-border)}.form-grid{gap:var(--space-md);grid-template-columns:1fr;display:grid}.form-grid .form-group--full{grid-column:1/-1}.form-row{gap:var(--space-sm);flex-wrap:wrap;align-items:flex-end;display:flex}.form-row>.form-group{flex:1;min-width:140px}.form-group{gap:var(--space-xs);flex-direction:column;display:flex}.form-label{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text-secondary)}.form-label .required{color:var(--color-primary);margin-left:2px}.form-input,.form-select{width:100%;padding:var(--space-sm) var(--space-md);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-text);font-size:var(--font-size-base);line-height:var(--line-height-base);transition:border-color var(--transition-fast), box-shadow var(--transition-fast);appearance:none}.form-input::placeholder{color:var(--color-text-muted)}.form-input:focus,.form-select:focus{border-color:var(--color-border-focus);box-shadow:var(--shadow-focus);outline:none}.form-input--barcode{letter-spacing:.05em;background:var(--color-surface-subtle);font-family:Courier New,Courier,monospace}.form-input--barcode:focus{background:var(--color-surface)}.form-select{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%236b7280' stroke-width='1.5' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right var(--space-sm) center;padding-right:var(--space-xl);cursor:pointer}.year-select{gap:var(--space-xs);padding:var(--space-xs);flex-wrap:wrap;display:flex}.year-chip{padding:2px var(--space-sm);border:1px solid var(--color-border);border-radius:var(--radius-pill);font-size:var(--font-size-xs);cursor:pointer;-webkit-user-select:none;user-select:none;transition:all var(--transition-fast);background:var(--color-surface);color:var(--color-text-secondary);align-items:center;gap:4px;display:inline-flex}.year-chip input[type=checkbox]{display:none}.year-chip.selected{background:var(--color-secondary);color:var(--color-text-inverse);border-color:var(--color-secondary)}.form-error{font-size:var(--font-size-xs);color:var(--color-danger);align-items:center;gap:var(--space-xs);display:flex}.form-hint{font-size:var(--font-size-xs);color:var(--color-text-muted)}@media (width>=768px){.form-grid{grid-template-columns:1fr 1fr}.form-grid.cols-3{grid-template-columns:1fr 1fr 1fr}}.input-with-action{align-items:center;gap:var(--space-xs);display:flex}.input-with-action .form-input{flex:1}.btn-transliterate{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface-subtle);width:30px;height:30px;color:var(--color-text-muted);cursor:pointer;flex:none;justify-content:center;align-items:center;padding:0;transition:background .15s,color .15s,border-color .15s;display:flex}.btn-transliterate:hover{background:var(--color-primary);border-color:var(--color-primary);color:#fff}.btn-transliterate:active{opacity:.8}.badge{align-items:center;gap:var(--space-xs);padding:2px var(--space-sm);border-radius:var(--radius-pill);font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);white-space:nowrap;border:1px solid #0000;line-height:1.5;display:inline-flex}.badge-success{background:var(--color-success-bg);color:var(--color-success);border-color:var(--color-success-border)}.badge-danger{background:var(--color-danger-bg);color:var(--color-danger);border-color:var(--color-danger-border)}.badge-warning{background:var(--color-warning-bg);color:var(--color-warning);border-color:var(--color-warning-border)}.badge-info{background:var(--color-info-bg);color:var(--color-info);border-color:var(--color-info-border)}.badge-neutral{background:var(--color-neutral-bg);color:var(--color-neutral);border-color:var(--color-neutral-border)}.badge-role-admin{background:var(--color-secondary-light);color:var(--color-secondary);border-color:#c9a0c9}.badge-role-librarian{background:var(--color-info-bg);color:var(--color-info);border-color:var(--color-info-border)}.badge-role-member{background:var(--color-neutral-bg);color:var(--color-neutral);border-color:var(--color-neutral-border)}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);overflow:hidden}.card-header{justify-content:space-between;align-items:center;gap:var(--space-md);padding:var(--space-md) var(--space-lg);border-bottom:1px solid var(--color-border);background:var(--color-surface-subtle);display:flex}.card-header__title{font-size:var(--font-size-base);font-weight:var(--font-weight-semi);color:var(--color-text)}.card-body{padding:var(--space-lg)}.card-footer{justify-content:flex-end;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-lg);border-top:1px solid var(--color-border);background:var(--color-surface-subtle);display:flex}.stat-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-md) var(--space-lg);box-shadow:var(--shadow-xs)}.stat-card__label{font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-muted);margin-bottom:var(--space-xs)}.stat-card__value{font-size:var(--font-size-2xl);font-weight:var(--font-weight-bold);color:var(--color-text)}.stat-card--danger .stat-card__value{color:var(--color-danger)}.stat-card--warning .stat-card__value{color:var(--color-warning)}.stats-grid{gap:var(--space-md);margin-bottom:var(--space-xl);grid-template-columns:1fr 1fr;display:grid}@media (width>=768px){.stats-grid{grid-template-columns:repeat(4,1fr)}}.search-bar{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-md);margin-bottom:var(--space-md);box-shadow:var(--shadow-xs)}.filter-row{gap:var(--space-sm);flex-wrap:wrap;align-items:flex-end;display:flex}.filter-group{gap:var(--space-xs);flex-direction:column;flex:1;min-width:140px;display:flex}.filter-label{font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.04em}.search-input-wrap{flex:2;min-width:200px;position:relative}.search-input-wrap .search-icon{left:var(--space-sm);color:var(--color-text-muted);pointer-events:none;font-size:.9em;position:absolute;top:50%;transform:translateY(-50%)}.search-input-wrap .form-input{padding-left:calc(var(--space-sm) * 2 + 1em)}.filter-clear{font-size:var(--font-size-sm);color:var(--color-text-muted);cursor:pointer;padding:var(--space-xs) 0;background:0 0;border:none;align-self:flex-end;text-decoration:underline}.filter-clear:hover{color:var(--color-text)}.filter-toggle{align-items:center;gap:var(--space-xs);font-size:var(--font-size-sm);color:var(--color-text-secondary);cursor:pointer;-webkit-user-select:none;user-select:none;padding:var(--space-sm) 0;align-self:flex-end;display:inline-flex}.filter-toggle input[type=checkbox]{width:16px;height:16px;accent-color:var(--color-secondary);cursor:pointer}.modal-overlay{padding:var(--space-md);z-index:200;background:#00000073;justify-content:center;align-items:center;animation:.15s overlay-in;display:flex;position:fixed;inset:0}@keyframes overlay-in{0%{opacity:0}to{opacity:1}}.modal{background:var(--color-surface);border-radius:var(--radius-xl);box-shadow:var(--shadow-lg);width:100%;max-width:520px;max-height:calc(100vh - var(--space-xl) * 2);flex-direction:column;animation:.18s modal-in;display:flex}@keyframes modal-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.modal-header{padding:var(--space-md) var(--space-lg);border-bottom:1px solid var(--color-border);flex-shrink:0;justify-content:space-between;align-items:center;display:flex}.modal-title{font-size:var(--font-size-lg);font-weight:var(--font-weight-semi);color:var(--color-text)}.modal-close{color:var(--color-text-muted);cursor:pointer;padding:var(--space-xs);border-radius:var(--radius-sm);transition:color var(--transition-fast);background:0 0;border:none;font-size:1.25rem;line-height:1}.modal-close:hover{color:var(--color-text)}.modal-body{padding:var(--space-lg);flex:1;overflow-y:auto}.modal-footer{justify-content:flex-end;gap:var(--space-sm);padding:var(--space-md) var(--space-lg);border-top:1px solid var(--color-border);flex-shrink:0;display:flex}.modal-confirm .modal{max-width:400px}.modal-confirm .modal-body{padding-top:var(--space-md)}.modal-confirm p{color:var(--color-text-secondary);font-size:var(--font-size-base);line-height:1.6}.login-area{align-items:center;gap:var(--space-sm);flex-shrink:0;display:flex}.login-error{font-size:var(--font-size-xs);color:var(--color-primary-light);border-radius:var(--radius-sm);padding:2px var(--space-sm);white-space:nowrap;text-overflow:ellipsis;background:#dc000540;border:1px solid #dc000566;max-width:220px;overflow:hidden}.user-info{align-items:center;gap:var(--space-sm);display:flex}.user-avatar{border-radius:var(--radius-pill);object-fit:cover;border:2px solid #fff6;flex-shrink:0;width:28px;height:28px}.user-name{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text-inverse);text-overflow:ellipsis;white-space:nowrap;max-width:120px;display:none;overflow:hidden}.user-role-badge{font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);color:var(--color-text-inverse);border-radius:var(--radius-pill);padding:1px var(--space-sm);text-transform:capitalize;white-space:nowrap;background:#ffffff26;border:1px solid #ffffff40;display:none}@media (width>=480px){.user-name{display:block}}@media (width>=768px){.user-role-badge{display:inline}}@media (width>=768px){.checkout-panel{margin-top:var(--space-md)}}.btn-expand{align-items:center;gap:var(--space-xs);padding:2px var(--space-sm);border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:var(--font-size-xs);color:var(--color-text-muted);cursor:pointer;transition:all var(--transition-fast);white-space:nowrap;background:0 0;display:inline-flex}.btn-expand:hover,.btn-expand.open{background:var(--color-secondary-light);color:var(--color-secondary);border-color:var(--color-secondary)}.btn-expand__arrow{transition:transform var(--transition-fast);font-size:.7em;display:inline-block}.btn-expand.open .btn-expand__arrow{transform:rotate(90deg)}.sub-table-wrapper{padding:var(--space-sm) var(--space-lg) var(--space-md);background:var(--color-surface-subtle);border-top:1px solid var(--color-border)}.sub-table-title{font-size:var(--font-size-xs);font-weight:var(--font-weight-semi);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.06em;margin-bottom:var(--space-sm)}.sub-table-loading{font-size:var(--font-size-sm);color:var(--color-text-muted);padding:var(--space-sm) 0}.sub-table-empty{font-size:var(--font-size-sm);color:var(--color-text-muted);padding:var(--space-xs) 0;font-style:italic}.status-tabs{gap:var(--space-xs);margin-bottom:var(--space-md);flex-wrap:wrap;display:flex}.status-tab{padding:var(--space-xs) var(--space-md);border:1px solid var(--color-border);border-radius:var(--radius-pill);background:var(--color-surface);font-size:var(--font-size-sm);color:var(--color-text-muted);cursor:pointer;transition:all var(--transition-fast)}.status-tab:hover{border-color:var(--color-secondary);color:var(--color-secondary)}.status-tab.active{background:var(--color-secondary);border-color:var(--color-secondary);color:var(--color-text-inverse);font-weight:var(--font-weight-medium)}.tr-ready{background-color:var(--color-success-bg)}.tr-ready:hover{background-color:var(--color-success-border)}.btn-reserve{align-items:center;gap:var(--space-xs);padding:2px var(--space-sm);border:1px solid var(--color-secondary);border-radius:var(--radius-sm);font-size:var(--font-size-xs);color:var(--color-secondary);cursor:pointer;transition:all var(--transition-fast);white-space:nowrap;background:0 0;display:inline-flex}.btn-reserve:hover:not(:disabled){background:var(--color-secondary);color:var(--color-text-inverse)}.btn-reserve:disabled{opacity:.5;cursor:default;border-color:var(--color-border);color:var(--color-text-muted)}.btn-reserve.reserved{background:var(--color-secondary-light);border-color:var(--color-secondary);color:var(--color-secondary);cursor:default}.res-count{background:var(--color-secondary-light);min-width:18px;height:18px;color:var(--color-secondary);border-radius:var(--radius-pill);font-size:.65rem;font-weight:var(--font-weight-semi);justify-content:center;align-items:center;padding:0 4px;line-height:1;display:inline-flex}.res-summary{gap:var(--space-md);margin-bottom:var(--space-lg);flex-wrap:wrap;display:flex}.res-stat-card{min-width:100px;padding:var(--space-md) var(--space-lg);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);text-align:center;flex:1}.res-stat-card__value{font-size:1.75rem;font-weight:var(--font-weight-bold);color:var(--color-secondary);line-height:1}.res-stat-card__label{font-size:var(--font-size-xs);color:var(--color-text-muted);margin-top:var(--space-xs);text-transform:uppercase;letter-spacing:.05em}.res-stat-card--ready .res-stat-card__value{color:var(--color-success)}.res-stat-card--confirmed .res-stat-card__value{color:var(--color-warning)}.admin-stats{gap:var(--space-md);margin-bottom:var(--space-xl);grid-template-columns:repeat(auto-fill,minmax(130px,1fr));display:grid}.admin-stat{padding:var(--space-md) var(--space-lg);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);text-align:center}.admin-stat__value{font-size:2rem;font-weight:var(--font-weight-bold);color:var(--color-secondary);line-height:1}.admin-stat__label{font-size:var(--font-size-xs);color:var(--color-text-muted);margin-top:var(--space-xs);text-transform:uppercase;letter-spacing:.05em}.admin-stat--danger .admin-stat__value{color:var(--color-danger)}.admin-stat--success .admin-stat__value{color:var(--color-success)}.admin-stat--warn .admin-stat__value{color:#d97706}.admin-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-lg) var(--space-xl);margin-bottom:var(--space-xl)}.admin-card__title{font-size:var(--font-size-base);font-weight:var(--font-weight-semi);color:var(--color-text);margin-bottom:var(--space-sm)}.admin-card__desc{font-size:var(--font-size-sm);color:var(--color-text-muted);margin-bottom:var(--space-md);line-height:1.5}.sync-result{margin-top:var(--space-md);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-sm);font-size:var(--font-size-sm);font-family:var(--font-mono)}.sync-result--success{background:var(--color-success-bg);border:1px solid var(--color-success-border);color:var(--color-success)}.sync-result--error{background:var(--color-danger-bg);border:1px solid var(--color-danger-border);color:var(--color-danger)}.role-select{padding:3px var(--space-sm);border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:var(--font-size-sm);background:var(--color-surface);color:var(--color-text);cursor:pointer;transition:border-color var(--transition-fast)}.role-select:focus{border-color:var(--color-secondary);outline:none}.role-select--saving{opacity:.5;cursor:wait}.role-select[data-role=admin]{color:var(--color-danger);font-weight:var(--font-weight-semi)}.role-select[data-role=librarian]{color:var(--color-secondary);font-weight:var(--font-weight-semi)}.material-grid{gap:var(--space-md);margin-top:var(--space-md);grid-template-columns:repeat(2,1fr);display:grid}@media (width>=480px){.material-grid{grid-template-columns:repeat(3,1fr)}}@media (width>=768px){.material-grid{grid-template-columns:repeat(4,1fr)}}.material-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-xs);flex-direction:column;transition:box-shadow .15s,transform .15s;display:flex;overflow:hidden}.material-card:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}.material-card__cover{aspect-ratio:2/3;background:var(--color-surface-subtle);overflow:hidden}.material-card__img{object-fit:cover;width:100%;height:100%;display:block}.cover-placeholder{background:#374151;justify-content:center;align-items:center;width:100%;height:100%;display:flex}.cover-placeholder__icon{color:#d1d5db;width:40%;height:40%}.material-card__body{padding:var(--space-sm);flex-direction:column;flex:1;gap:2px;display:flex}.material-card__title-primary{font-size:var(--font-size-sm);font-weight:var(--font-weight-semi);color:var(--color-text);-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.3;display:-webkit-box;overflow:hidden}.material-card__title-secondary{font-size:var(--font-size-xs);color:var(--color-text-muted);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.material-card__author{font-size:var(--font-size-xs);color:var(--color-text-secondary);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.material-card__years{font-size:var(--font-size-xs);color:var(--color-text-muted);margin-top:2px}.material-card__footer{padding:var(--space-xs) var(--space-sm) var(--space-sm);gap:var(--space-xs);flex-direction:column;display:flex}.material-card__avail{font-size:var(--font-size-xs);font-weight:var(--font-weight-medium)}.material-card__avail--ok{color:var(--color-success)}.material-card__avail--out{color:var(--color-danger)}.material-card__footer .btn-reserve,.material-card__footer .btn{width:100%;font-size:var(--font-size-xs);justify-content:center}.cover-upload{gap:var(--space-sm);flex-direction:column;display:flex}.cover-upload__preview{object-fit:cover;border-radius:var(--radius-md);border:1px solid var(--color-border);width:120px;height:180px;display:block}.cover-upload__actions{gap:var(--space-xs);flex-wrap:wrap;display:flex}.checkout-panel{max-width:680px;margin:0 auto}.mode-toggle{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-xs);margin-bottom:var(--space-lg);gap:var(--space-xs);display:flex}.mode-toggle__btn{padding:var(--space-sm) var(--space-md);border-radius:var(--radius-md);color:var(--color-text-muted);font-size:var(--font-size-base);font-weight:var(--font-weight-medium);cursor:pointer;transition:background var(--transition-fast), color var(--transition-fast);background:0 0;border:none;flex:1}.mode-toggle__btn.active{background:var(--color-secondary);color:var(--color-text-inverse)}.scan-field{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-lg);margin-bottom:var(--space-md);box-shadow:var(--shadow-xs)}.scan-field__label{font-size:var(--font-size-sm);font-weight:var(--font-weight-semi);color:var(--color-text-secondary);margin-bottom:var(--space-sm);align-items:center;gap:var(--space-xs);display:flex}.scan-field__label-icon{font-size:1.1em}.scan-field__input-row{gap:var(--space-sm);align-items:center;display:flex}.scan-field__input-row .form-input{font-size:var(--font-size-lg);letter-spacing:.04em;font-family:Courier New,Courier,monospace}.scan-result{margin-top:var(--space-md);padding:var(--space-md);background:var(--color-surface-subtle);border:1px solid var(--color-border);border-left:3px solid var(--color-secondary);border-radius:var(--radius-md);align-items:flex-start;gap:var(--space-md);display:flex}.scan-result__icon{flex-shrink:0;font-size:1.5rem;line-height:1}.scan-result__details{min-width:0}.scan-result__name{font-weight:var(--font-weight-semi);font-size:var(--font-size-base);color:var(--color-text);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.scan-result__meta{font-size:var(--font-size-sm);color:var(--color-text-muted);margin-top:2px}.scan-result--out{border-left-color:var(--color-warning);background:var(--color-warning-bg)}.scan-field--error{border-color:var(--color-danger-border);background:var(--color-danger-bg)}.scan-field__error{margin-top:var(--space-sm);font-size:var(--font-size-sm);color:var(--color-danger)}.checkout-action{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-lg);margin-top:var(--space-md);box-shadow:var(--shadow-xs)}.checkout-action__due{font-size:var(--font-size-sm);color:var(--color-text-muted);margin-bottom:var(--space-md)}.checkout-action__due strong{color:var(--color-text)}.checkout-success{text-align:center;padding:var(--space-xl);color:var(--color-success)}.checkout-success__icon{margin-bottom:var(--space-sm);font-size:3rem}.checkout-success__title{font-size:var(--font-size-xl);font-weight:var(--font-weight-semi);margin-bottom:var(--space-xs)}.checkout-success__sub{font-size:var(--font-size-sm);color:var(--color-text-muted)}.auth-gate{text-align:center;padding:var(--space-2xl) var(--space-lg);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-xs)}.auth-gate__logo{border-radius:var(--radius-pill);width:80px;height:80px;margin:0 auto var(--space-lg);border:3px solid var(--color-border)}.auth-gate p{color:var(--color-text-muted);margin-bottom:var(--space-lg)}@media (width>=768px){.checkout-panel{margin-top:var(--space-md)}}
