.layout{min-height:100vh;display:flex;flex-direction:column}.layout-header{background:var(--color-white);border-bottom:1px solid var(--color-border);padding:0 var(--space-lg);height:64px;display:flex;align-items:center}.layout-header-inner{width:100%;max-width:1120px;margin:0 auto;display:flex;align-items:center;justify-content:space-between}.layout-logo{display:flex;align-items:center;gap:var(--space-sm);text-decoration:none}.layout-logo:hover{text-decoration:none}.layout-logo-text{font-family:var(--font-heading);font-weight:var(--weight-bold);font-size:1.15rem;color:var(--color-dark)}.layout-nav{display:flex;align-items:center;gap:var(--space-lg)}.layout-user{font-size:var(--text-supporting);color:var(--color-supporting)}.btn-sm{padding:.4rem 1rem;font-size:var(--text-supporting)}.layout-main{flex:1;width:100%;max-width:1120px;margin:0 auto;padding:var(--space-xl) var(--space-lg)}.auth-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:var(--space-xl) var(--space-lg);background:var(--color-background)}.auth-card{width:100%;max-width:420px}.auth-logo{display:flex;align-items:center;gap:var(--space-sm);margin-bottom:var(--space-xs)}.auth-logo-text{font-family:var(--font-heading);font-weight:var(--weight-bold);font-size:var(--text-h2);color:var(--color-dark)}.auth-tagline{font-family:var(--font-body);font-weight:var(--weight-light);font-size:var(--text-tagline);color:var(--color-primary);letter-spacing:.025em;margin-bottom:var(--space-xl)}.auth-card h1{font-size:var(--text-h2);margin-bottom:var(--space-lg)}.auth-form{display:flex;flex-direction:column;gap:var(--space-md)}.auth-field label{display:block;font-weight:var(--weight-medium);font-size:var(--text-supporting);color:var(--color-neutral);margin-bottom:var(--space-xs)}.auth-form .btn{width:100%;margin-top:var(--space-sm)}.auth-footer{margin-top:var(--space-lg);font-size:var(--text-supporting);color:var(--color-supporting);text-align:center}.auth-footer a{font-weight:var(--weight-medium)}.auth-message{font-size:var(--text-supporting);padding:.65rem .85rem;border-radius:var(--radius-button);line-height:1.5}.auth-message-error{background-color:var(--status-expired-bg);color:var(--status-expired-text)}.auth-message-success{background-color:var(--status-valid-bg);color:var(--status-valid-text)}.btn:disabled{opacity:.6;cursor:not-allowed}:root{--color-primary: #0B7A75;--color-dark: #065550;--color-light: #E6F7F5;--color-neutral: #1E2D3C;--color-background: #F7F9F9;--color-white: #FFFFFF;--color-border: #E2EEEE;--color-supporting: #6B7280;--color-section-label: #6B9E9A;--status-valid-bg: #D1FAE5;--status-valid-text: #065F46;--status-due-soon-bg: #FEF3C7;--status-due-soon-text: #92400E;--status-expired-bg: #FEE2E2;--status-expired-text: #991B1B;--color-danger: #DC2626;--font-heading: "Fraunces", Georgia, serif;--font-body: "Plus Jakarta Sans", system-ui, sans-serif;--weight-light: 300;--weight-regular: 400;--weight-medium: 500;--weight-semibold: 600;--weight-bold: 700;--text-hero: 2.4rem;--text-h1: 1.75rem;--text-h2: 1.25rem;--text-tagline: 1.1rem;--text-body: 1rem;--text-ui-label: .8rem;--text-supporting: .85rem;--text-section-label: .7rem;--text-button: .9rem;--text-stat: 2rem;--text-badge: .72rem;--space-xs: .25rem;--space-sm: .5rem;--space-md: 1rem;--space-lg: 1.5rem;--space-xl: 2rem;--space-2xl: 3rem;--space-3xl: 4rem;--radius-button: 8px;--radius-card: 12px;--radius-badge: 99px;--shadow-card: 0 1px 3px rgba(30, 45, 60, .06)}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html{font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:var(--font-body);font-weight:var(--weight-regular);font-size:var(--text-body);line-height:1.7;color:var(--color-neutral);background-color:var(--color-background)}h1,h2,h3{font-family:var(--font-heading);font-weight:var(--weight-bold);color:var(--color-dark);line-height:1.3}h1{font-size:var(--text-h1)}h2{font-size:var(--text-h2)}a{color:var(--color-primary);text-decoration:none}a:hover{text-decoration:underline}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-sm);font-family:var(--font-body);font-weight:var(--weight-semibold);font-size:var(--text-button);padding:.75rem 1.75rem;border-radius:var(--radius-button);border:none;cursor:pointer;transition:opacity .15s ease,transform .1s ease;line-height:1}.btn:hover{opacity:.9}.btn:active{transform:scale(.98)}.btn-primary{background-color:var(--color-primary);color:var(--color-white)}.btn-secondary{background-color:transparent;color:var(--color-primary);border:2px solid var(--color-primary)}.btn-ghost{background-color:var(--color-light);color:var(--color-dark)}.btn-danger{background-color:var(--color-danger);color:var(--color-white)}.card{background:var(--color-white);border:1px solid var(--color-border);border-radius:var(--radius-card);padding:1.25rem;box-shadow:var(--shadow-card)}.badge{display:inline-block;font-size:var(--text-badge);font-weight:var(--weight-semibold);padding:.2rem .6rem;border-radius:var(--radius-badge);line-height:1.4}.badge-valid{background-color:var(--status-valid-bg);color:var(--status-valid-text)}.badge-due-soon{background-color:var(--status-due-soon-bg);color:var(--status-due-soon-text)}.badge-expired{background-color:var(--status-expired-bg);color:var(--status-expired-text)}.ui-label{font-family:var(--font-body);font-weight:var(--weight-semibold);font-size:var(--text-ui-label);color:var(--color-neutral);text-transform:uppercase;letter-spacing:.05em}.section-label{font-family:var(--font-body);font-weight:var(--weight-semibold);font-size:var(--text-section-label);color:var(--color-section-label);text-transform:uppercase;letter-spacing:.12em}.supporting-text{font-size:var(--text-supporting);color:var(--color-supporting)}input[type=text],input[type=email],input[type=password],input[type=date],input[type=tel],select,textarea{font-family:var(--font-body);font-size:var(--text-body);color:var(--color-neutral);background:var(--color-white);border:1px solid var(--color-border);border-radius:var(--radius-button);padding:.65rem .85rem;width:100%;transition:border-color .15s ease}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px #0b7a751f}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
