html,body{margin:0;font-family:Segoe UI,system-ui,sans-serif;background:#f4f6f8;color:#263238}.loading-screen{display:flex;justify-content:center;align-items:center;height:100vh;font-size:1.2rem;color:#546e7a}.login-container{display:flex;justify-content:center;align-items:center;height:100vh}.login-box{background:#fff;padding:2.5rem;border-radius:8px;box-shadow:0 2px 10px #0000001a;width:320px}.login-box h1{font-size:1.4rem;color:#546e7a;margin-top:0;margin-bottom:1.5rem;text-align:center}.form-group{margin-bottom:1rem}.form-group label{display:block;margin-bottom:.3rem;font-size:.9rem;color:#546e7a}.form-control{width:100%;padding:.5rem;border:1px solid #cfd8dc;border-radius:4px;box-sizing:border-box;font-size:1rem}.btn-primary{width:100%;padding:.6rem;background:#c62828;color:#fff;border:none;border-radius:4px;font-size:1rem;cursor:pointer;margin-top:.5rem}.btn-primary:disabled{opacity:.6;cursor:default}.error-message{background:#ffebee;color:#c62828;padding:.6rem;border-radius:4px;margin-bottom:1rem;font-size:.9rem}.portal-switch-link{text-align:center;margin-top:1rem;font-size:.85rem}.portal-switch-link a{color:#546e7a}.student-sidebar{background:#00695c}.success-message{background:#e8f5e9;color:#2e7d32;padding:.6rem;border-radius:4px;margin-bottom:1rem;font-size:.9rem}.list-actions{margin-bottom:1rem}.list-actions .btn-primary{display:inline-block;width:auto;padding:.5rem 1rem;text-decoration:none;margin-right:.5rem}.form-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:1rem;max-width:800px}.form-grid .full-width{grid-column:1 / -1}.form-actions{margin-top:1.5rem;display:flex;gap:.6rem}.form-actions button{width:auto;padding:.5rem 1.2rem}.btn-secondary{background:#eceff1;color:#263238;border:none;border-radius:4px;cursor:pointer}.btn-print{background:#546e7a;color:#fff;border:none;border-radius:4px;cursor:pointer}.line-editor{margin-bottom:.8rem}.line-editor .qty-input{width:90px}.btn-remove-line{background:#ffebee;color:#c62828;border:none;border-radius:4px;width:28px;height:28px;cursor:pointer}.invoice-totals{margin:1rem 0;text-align:right;max-width:800px}.invoice-totals div{padding:.2rem 0}.hint-text{font-size:.85rem;color:#78909c;margin-bottom:.6rem}.metric-cards{display:flex;flex-wrap:wrap;gap:1rem;margin:1.5rem 0}.metric-card{background:#fff;padding:1.2rem;border-radius:8px;box-shadow:0 1px 4px #00000014;min-width:160px}.metric-label{font-size:.8rem;color:#78909c;text-transform:uppercase;letter-spacing:.03em;margin-bottom:.3rem}.metric-value{font-size:1.6rem;font-weight:700;color:#263238}.dashboard-panels{display:flex;flex-wrap:wrap;gap:1.5rem}.dashboard-panel{background:#fff;padding:1.2rem;border-radius:8px;box-shadow:0 1px 4px #00000014;min-width:300px;flex:1}.dashboard-panel h3{margin-top:0;color:#546e7a}.reconciliation-columns{display:grid;grid-template-columns:1fr 1fr;gap:1.5rem;margin:1rem 0}.reconciliation-columns h4{color:#546e7a;margin-bottom:.4rem}.reconciliation-columns tr{cursor:pointer}.row-selected{background:#e3f2fd}.letter-preview{background:#fff;border:1px solid #cfd8dc;border-radius:4px;padding:1.5rem;margin:1rem 0;max-width:700px}.letter-preview pre{white-space:pre-wrap;font-family:Segoe UI,system-ui,sans-serif;font-size:.9rem;margin:0}.details-table{border-collapse:collapse;background:#fff;box-shadow:0 1px 4px #00000014;max-width:600px}.details-table th,.details-table td{text-align:left;padding:.5rem 1rem;border-bottom:1px solid #eceff1}.details-table th{width:180px;color:#546e7a;font-weight:600}.chart-panel{background:#fff;border:1px solid #eceff1;border-radius:6px;padding:1rem;margin:1rem 0;max-width:560px}.chart-title{font-weight:700;color:#37474f;margin-bottom:.75rem}.chart-body{display:flex;align-items:center;gap:1.5rem;flex-wrap:wrap}.chart-legend{display:flex;flex-direction:column;gap:.4rem;font-size:.85rem}.chart-legend-item{display:flex;align-items:center;gap:.4rem}.chart-legend-swatch{display:inline-block;width:12px;height:12px;border-radius:2px}.upload-row{display:flex;align-items:center;gap:.8rem;padding:.6rem 0;border-bottom:1px solid #eceff1}.upload-row label{width:160px;font-weight:600;color:#37474f}.camera-capture{background:#263238;border-radius:6px;padding:1rem;margin:.5rem 0;max-width:400px}.camera-capture video{width:100%;border-radius:4px}.camera-capture div{margin-top:.6rem;display:flex;gap:.5rem}.balance-ok{color:#2e7d32;font-weight:700}.balance-off{color:#c62828;font-weight:700}#print-root{display:none}@media print{@page{margin:.5in}body>*:not(#print-root){display:none!important}#print-root{display:block}}.pr-page{font-family:Segoe UI,Arial,sans-serif;color:#000;font-size:10pt}.pr-letterhead{display:flex;align-items:center;gap:12px;margin-bottom:6px}.pr-logo{width:55px;height:55px;object-fit:contain;flex-shrink:0}.pr-letterhead-lg .pr-logo{width:60px;height:60px}.pr-company{font-size:14pt;font-weight:700}.pr-letterhead-lg .pr-company{font-size:18pt}.pr-address{font-size:9pt}.pr-title{font-size:12pt;font-weight:700;margin:4px 0 0}.pr-subtitle{font-size:9pt;margin:2px 0 0}.pr-rule{border:none;border-top:1px solid #000;margin:8px 0}.pr-table{width:100%;border-collapse:collapse}.pr-table th,.pr-table td{padding:4px 6px;font-size:9pt;vertical-align:top}.pr-table thead th{font-weight:700;border-bottom:1px solid #666;text-align:left}.pr-table tfoot td{border-top:1px solid #000;font-weight:700}.pr-left{text-align:left}.pr-right{text-align:right}.pr-center{text-align:center}.pr-empty{text-align:left;color:#666;font-style:italic}.pr-total,.pr-fieldvalue td.pr-field{font-weight:700}.pr-fieldvalue td.pr-section{font-weight:700;padding-top:10px;color:#546e7a}.pr-footer{margin-top:12px;font-size:8pt;color:#666}.pr-invoice-head{display:flex;justify-content:space-between;align-items:flex-start}.pr-doc-meta{text-align:right;font-size:10pt}.pr-doc-title{font-size:18pt;font-weight:700}.pr-bill-to{margin:10px 0 14px;font-size:10pt}.pr-bill-to .pr-label{font-weight:700}.pr-invoice-table thead tr{background:#e6e6e6}.pr-totals{margin-top:14px;margin-left:auto;width:260px}.pr-totals>div{display:flex;justify-content:space-between;padding:3px 0;font-size:10pt}.pr-thankyou{margin-top:20px;color:#666;font-size:10pt}.pr-letter-body{font-family:Times New Roman,Times,serif;font-size:11pt;white-space:pre-wrap}.page{display:flex;min-height:100vh}.sidebar{width:220px;background:#546e7a;color:#fff;display:flex;flex-direction:column;padding:1rem 0}.brand{font-weight:700;font-size:1.1rem;padding:0 1rem 1rem;border-bottom:1px solid rgba(255,255,255,.2)}.nav-menu{display:flex;flex-direction:column;padding:1rem 0;flex-grow:1}.nav-menu a{color:#fff;text-decoration:none;padding:.6rem 1rem}.nav-menu a:hover{background:#ffffff1a}.nav-group-label{font-size:.7rem;text-transform:uppercase;letter-spacing:.05em;opacity:.6;padding:.8rem 1rem .2rem}.user-status{padding:1rem;border-top:1px solid rgba(255,255,255,.2);font-size:.85rem}.role-label{opacity:.75;margin-bottom:.5rem}.logout-btn{background:transparent;border:1px solid rgba(255,255,255,.4);color:#fff;padding:.3rem .6rem;border-radius:4px;cursor:pointer;width:100%}main{flex:1}.content{padding:2rem}.app-shell{display:flex;flex-direction:column;min-height:100vh}.top-menu-bar{display:flex;align-items:center;background:linear-gradient(to bottom,#e0a3a3,#546e7a 55%);color:#fff;padding:0 1rem;box-shadow:0 2px 4px #00000026;position:relative;z-index:10}.top-menu-bar .brand{display:flex;align-items:center;gap:.6rem;font-weight:700;font-size:1.1rem;padding:.9rem 1.5rem .9rem 0;border-bottom:none;white-space:nowrap}.brand-mark{flex-shrink:0;filter:drop-shadow(0 1px 2px rgba(0,0,0,.25))}.menu-list{display:flex;align-items:stretch;flex-wrap:wrap;list-style:none;margin:0;padding:0;flex:1}.menu-item{position:relative;display:flex;align-items:center}.menu-item>a,.menu-item>span{display:block;padding:.9rem .7rem;color:#fff;text-decoration:none;font-size:.85rem;cursor:pointer;white-space:nowrap}.menu-item>a:hover,.menu-item:hover>span{background:#ffffff26}.menu-item .dropdown{display:none;position:absolute;top:100%;left:0;background:#fff;color:#263238;list-style:none;margin:0;padding:.3rem 0;min-width:240px;box-shadow:0 4px 10px #0003;border-radius:0 0 4px 4px;z-index:100}.menu-item:hover .dropdown{display:block}.menu-item .dropdown li a{display:block;padding:.5rem 1rem;color:#263238;text-decoration:none;font-size:.9rem}.menu-item .dropdown li a:hover{background:#eceff1}.top-menu-bar .user-status{display:flex;align-items:center;gap:.7rem;padding:0;border-top:none;font-size:.85rem;white-space:nowrap}.top-menu-bar .user-role{opacity:.8}.top-menu-bar .logout-btn{width:auto;padding:.35rem .7rem}.app-content{flex:1}.tab-control{margin-top:.5rem}.tab-headers{display:flex;border-bottom:2px solid #cfd8dc;margin-bottom:1rem}.tab-header{padding:.6rem 1.2rem;cursor:pointer;color:#546e7a;font-size:.9rem;border-bottom:2px solid transparent;margin-bottom:-2px}.tab-header:hover{background:#eceff1}.tab-header.active{color:#263238;font-weight:700;border-bottom-color:#546e7a}.dashboard-cards{display:flex;gap:1rem;margin-top:1.5rem}.dashboard-card{background:#fff;padding:1.5rem;border-radius:8px;box-shadow:0 1px 4px #00000014;text-decoration:none;color:#263238;width:220px}.dashboard-card h3{margin-top:0;color:#546e7a}.note{margin-top:2rem;font-size:.85rem;color:#78909c}.data-table{width:100%;border-collapse:collapse;background:#fff;box-shadow:0 1px 4px #00000014}.data-table th,.data-table td{text-align:left;padding:.6rem 1rem;border-bottom:1px solid #eceff1}.data-table th{background:#eceff1;color:#546e7a}#blazor-error-ui{background:#ffffe0;bottom:0;box-shadow:0 -1px 2px #0003;display:none;left:0;padding:.6rem 1.25rem .7rem;position:fixed;width:100%;z-index:1000}#blazor-error-ui .dismiss{cursor:pointer;position:absolute;right:.75rem;top:.5rem}.login-brand{display:flex;flex-direction:column;align-items:center;gap:.6rem;margin-bottom:1.5rem}.login-brand-logo{width:96px;height:96px;border-radius:16px;object-fit:cover;box-shadow:0 8px 18px -6px #5e10208c,0 0 0 1px #5e10201f}.login-box .login-brand h1{margin:0;font-size:1.6rem;letter-spacing:.24em;text-indent:.24em;text-transform:uppercase;color:#6f1626}.brand-logo{flex-shrink:0;width:36px;height:36px;border-radius:8px;object-fit:cover;box-shadow:0 2px 6px #00000059,0 0 0 1.5px #ffffffd9}.brand-title{font-size:1.2rem;letter-spacing:.2em;text-transform:uppercase;font-weight:800}
