:root { color-scheme: light; --color-ink: #202124; --color-muted: #5f6368; --color-border: #d9dde3; --color-panel: #ffffff; --color-page: #f5f7fb; --color-primary: #256f6c; --color-primary-strong: #1b5654; --color-accent: #b54238; --color-success: #2f6f3e; --color-warning: #8a5a00; --shadow-panel: 0 18px 45px rgba(28, 39, 49, 0.12); } * { box-sizing: border-box; } body { margin: 0; min-height: 100vh; color: var(--color-ink); background: var(--color-page); font-family: Arial, "Microsoft YaHei", sans-serif; line-height: 1.5; } a { color: inherit; } .app-header { min-height: 64px; display: flex; align-items: center; justify-content: space-between; gap: 24px; padding: 0 32px; border-bottom: 1px solid var(--color-border); background: rgba(255, 255, 255, 0.96); } .brand { color: var(--color-primary-strong); font-weight: 700; text-decoration: none; } .top-nav { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; color: var(--color-muted); font-size: 14px; } .top-nav a { text-decoration: none; } .user-pill { max-width: 220px; padding: 6px 10px; overflow: hidden; color: var(--color-ink); border: 1px solid var(--color-border); border-radius: 6px; text-overflow: ellipsis; white-space: nowrap; } .auth-page { background: linear-gradient(rgba(245, 247, 251, 0.86), rgba(245, 247, 251, 0.92)), url("../images/library-login.svg") center / cover no-repeat; } .auth-shell, .page-shell { width: min(1120px, calc(100% - 32px)); margin: 0 auto; } .auth-shell { min-height: calc(100vh - 64px); display: grid; align-items: center; padding: 48px 0; } .login-panel, .notice-panel, .dashboard-hero, .workspace-card, .toolbar-panel, .table-panel, .form-panel { border: 1px solid var(--color-border); border-radius: 8px; background: var(--color-panel); box-shadow: var(--shadow-panel); } .login-panel { width: min(420px, 100%); padding: 32px; } .eyebrow { margin: 0 0 6px; color: var(--color-primary); font-size: 13px; font-weight: 700; letter-spacing: 0; text-transform: uppercase; } h1, h2, p { margin-top: 0; } h1 { margin-bottom: 18px; font-size: 32px; line-height: 1.15; } h2 { margin-bottom: 10px; font-size: 20px; } .login-form { display: grid; gap: 10px; } .login-form label { color: var(--color-muted); font-size: 14px; font-weight: 700; } .login-form input { width: 100%; min-height: 44px; padding: 10px 12px; border: 1px solid var(--color-border); border-radius: 6px; font: inherit; } .login-form input:focus { outline: 3px solid rgba(37, 111, 108, 0.18); border-color: var(--color-primary); } .button { display: inline-flex; min-height: 40px; align-items: center; justify-content: center; padding: 9px 14px; border: 1px solid transparent; border-radius: 6px; font: inherit; font-weight: 700; text-decoration: none; cursor: pointer; } .button-primary { margin-top: 12px; color: #ffffff; background: var(--color-primary); } .button-primary:hover { background: var(--color-primary-strong); } .button-secondary { color: var(--color-primary-strong); border-color: rgba(37, 111, 108, 0.35); background: #ffffff; } .button-danger { color: #ffffff; background: var(--color-accent); } .button-danger:hover { background: #8f3028; } .message { margin-bottom: 16px; padding: 10px 12px; border-radius: 6px; font-size: 14px; } .message-error { color: #7a211a; border: 1px solid rgba(181, 66, 56, 0.3); background: #fff0ee; } .message-success { color: #1f572e; border: 1px solid rgba(47, 111, 62, 0.3); background: #effaf1; } .page-shell { padding: 36px 0 56px; } .dashboard-hero { padding: 28px; margin-bottom: 24px; } .dashboard-hero p:last-child, .workspace-card p:last-child, .notice-panel p:last-child { margin-bottom: 0; } .card-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 18px; } .workspace-card { min-height: 190px; display: flex; flex-direction: column; align-items: flex-start; padding: 24px; } .workspace-card p { color: var(--color-muted); } .workspace-card .button { margin-top: auto; } .notice-panel { max-width: 680px; padding: 28px; } .role-actions { margin-top: 24px; } .catalog-hero { display: flex; align-items: flex-start; justify-content: space-between; gap: 18px; flex-wrap: wrap; } .catalog-hero .button { margin-top: 0; } .toolbar-panel, .table-panel, .form-panel { padding: 24px; margin-bottom: 24px; } .search-form { display: grid; grid-template-columns: repeat(4, minmax(120px, 1fr)) auto auto auto; gap: 10px; align-items: end; } .search-field { display: grid; gap: 6px; } .search-form label { color: var(--color-muted); font-size: 13px; font-weight: 700; } .search-form input, .search-form select, .book-form input, .book-form select, .reader-form input, .reader-form select { width: 100%; min-height: 42px; padding: 9px 11px; border: 1px solid var(--color-border); border-radius: 6px; background: #ffffff; font: inherit; } .search-form input:focus, .search-form select:focus, .book-form input:focus, .book-form select:focus, .reader-form input:focus, .reader-form select:focus { outline: 3px solid rgba(37, 111, 108, 0.18); border-color: var(--color-primary); } .table-scroll { width: 100%; overflow-x: auto; } .data-table { width: 100%; min-width: 760px; border-collapse: collapse; font-size: 14px; } .data-table th, .data-table td { padding: 12px 10px; text-align: left; border-bottom: 1px solid var(--color-border); vertical-align: middle; } .data-table th { color: var(--color-muted); font-size: 13px; font-weight: 700; background: #f8fafc; } .empty-state { margin-bottom: 0; color: var(--color-muted); } .status-pill { display: inline-flex; min-height: 28px; align-items: center; padding: 4px 9px; border-radius: 999px; font-size: 12px; font-weight: 700; } .status-available { color: var(--color-success); background: #edf8ef; } .status-unavailable { color: var(--color-warning); background: #fff7e5; } .status-archived { color: var(--color-muted); background: #eef1f5; } .status-active { color: var(--color-success); background: #edf8ef; } .status-suspended { color: var(--color-warning); background: #fff7e5; } .status-inactive { color: var(--color-muted); background: #eef1f5; } .table-actions { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; } .table-actions form { margin: 0; } .form-panel { max-width: 860px; } .book-form, .reader-form { display: grid; gap: 20px; } .form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; } .form-field { display: grid; gap: 6px; } .form-field label { color: var(--color-muted); font-size: 14px; font-weight: 700; } .field-error { color: #7a211a; font-size: 13px; } .form-actions { display: flex; gap: 10px; flex-wrap: wrap; } @media (max-width: 720px) { .app-header { align-items: flex-start; flex-direction: column; padding: 16px; } .top-nav { width: 100%; } h1 { font-size: 28px; } .login-panel, .notice-panel, .dashboard-hero, .workspace-card, .toolbar-panel, .table-panel, .form-panel { box-shadow: none; } .search-form, .form-grid { grid-template-columns: 1fr; } }