:root{color-scheme:light dark;--color-bg: #f5f7fa;--color-surface: #ffffff;--color-surface-alt: #eef1f6;--color-border: #dde3ea;--color-border-strong: #c2cbd6;--color-text: #182432;--color-text-muted: #5b6a7c;--color-text-faint: #8894a3;--color-accent: #2b5490;--color-accent-hover: #1f4172;--color-accent-soft: #e8eef8;--color-accent-contrast: #ffffff;--color-success: #1c7a4e;--color-success-soft: #e5f4ec;--color-success-border: #b9e2c9;--color-danger: #b23327;--color-danger-soft: #fbe9e7;--color-danger-border: #f0c4bd;--color-danger-contrast: #ffffff;--color-warning: #93590a;--color-warning-soft: #fdf1dc;--color-warning-border: #f0dba6;--color-info-soft: #eef1f6;--color-info-border: #d7dee7;--shadow-sm: 0 1px 2px rgba(20, 30, 45, .06);--shadow-md: 0 4px 16px rgba(20, 30, 45, .08);--font-sans: -apple-system, BlinkMacSystemFont, "Apple SD Gothic Neo", "Malgun Gothic", "Segoe UI", Roboto, sans-serif;--font-mono: ui-monospace, "SF Mono", SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;--sp-1: .25rem;--sp-2: .5rem;--sp-3: .75rem;--sp-4: 1rem;--sp-5: 1.5rem;--sp-6: 2rem;--sp-7: 3rem;--sp-8: 4rem;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 14px;--content-max: 1180px}@media(prefers-color-scheme:dark){:root{--color-bg: #10151b;--color-surface: #1a212a;--color-surface-alt: #212a34;--color-border: #2b3542;--color-border-strong: #3c4757;--color-text: #e7ecf2;--color-text-muted: #9aa7b8;--color-text-faint: #6d7889;--color-accent: #6f9ce0;--color-accent-hover: #8bb2e8;--color-accent-soft: #1f2c3e;--color-accent-contrast: #0b1118;--color-success: #55c98a;--color-success-soft: #16301f;--color-success-border: #235238;--color-danger: #f19188;--color-danger-soft: #3a1f1c;--color-danger-border: #5c2e28;--color-danger-contrast: #2a0f0c;--color-warning: #e3ab48;--color-warning-soft: #382a10;--color-warning-border: #57431c;--color-info-soft: #1c2430;--color-info-border: #313d4c;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .35);--shadow-md: 0 8px 24px rgba(0, 0, 0, .45)}.btn--primary{background:#3f6bab;color:#f5f8fc}.btn--primary:hover:not(:disabled){background:#4a79bc}}*,*:before,*:after{box-sizing:border-box}html{font-size:100%}body{margin:0;background:var(--color-bg);color:var(--color-text);font-family:var(--font-sans);font-size:.9375rem;line-height:1.6;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}h1,h2,h3,h4,p,ul,ol,fieldset{margin:0;padding:0}ul{list-style:none}fieldset{border:none}button,input{font:inherit;color:inherit}a{color:var(--color-accent)}code{font-family:var(--font-mono);font-size:.875em}:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px;border-radius:4px}#root{min-height:100vh}.app-shell{min-height:100vh;display:flex;flex-direction:column}.top-bar{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-4);padding:var(--sp-4) var(--sp-6);background:var(--color-surface);border-bottom:1px solid var(--color-border)}.brand-title{font-size:1.15rem;font-weight:700;letter-spacing:-.01em;color:var(--color-text)}.user-info{display:flex;align-items:center;gap:var(--sp-3)}.user-name{font-size:.875rem;color:var(--color-text-muted)}.container{width:100%;max-width:var(--content-max);margin:0 auto;padding:var(--sp-6) var(--sp-5) var(--sp-8);display:flex;flex-direction:column;gap:var(--sp-5)}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--sp-5);box-shadow:var(--shadow-sm);display:flex;flex-direction:column;gap:var(--sp-4)}.section-title{font-size:1.05rem;font-weight:700;color:var(--color-text)}.subsection-title{font-size:.9rem;font-weight:700;color:var(--color-text);text-transform:none}.panel-divider{border:none;border-top:1px solid var(--color-border);margin:var(--sp-2) 0}.loading-text,.empty-text{color:var(--color-text-muted);font-size:.875rem}.screen-message{color:var(--color-text-muted);font-size:.9375rem}#root>.screen-message{display:flex;min-height:100vh;align-items:center;justify-content:center;padding:var(--sp-5);text-align:center}.btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid transparent;border-radius:var(--radius-sm);padding:.5rem 1rem;font-size:.875rem;font-weight:600;letter-spacing:.01em;cursor:pointer;transition:background-color .15s ease,border-color .15s ease,color .15s ease,transform .05s ease;display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-2)}.btn:active:not(:disabled){transform:translateY(1px)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn--primary{background:var(--color-accent);color:var(--color-accent-contrast)}.btn--primary:hover:not(:disabled){background:var(--color-accent-hover)}a.btn{text-decoration:none}.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.btn--ghost{background:transparent;color:var(--color-text-muted);border-color:var(--color-border-strong)}.btn--ghost:hover:not(:disabled){background:var(--color-surface-alt);color:var(--color-text)}.btn--danger{background:transparent;color:var(--color-danger);border-color:var(--color-danger-border)}.btn--danger:hover:not(:disabled){background:var(--color-danger);color:var(--color-danger-contrast);border-color:var(--color-danger)}.btn--sm{padding:.3125rem .75rem;font-size:.8125rem}.btn--lg{padding:.7rem 1.75rem;font-size:.9375rem}.banner{display:block;padding:var(--sp-3) var(--sp-4);border-radius:var(--radius-md);border:1px solid;font-size:.875rem;line-height:1.55}.banner--error{background:var(--color-danger-soft);border-color:var(--color-danger-border);color:var(--color-danger)}.banner--info{background:var(--color-info-soft);border-color:var(--color-info-border);color:var(--color-text-muted)}.login-screen{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:var(--sp-5)}.login-card{width:100%;max-width:360px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);padding:var(--sp-7) var(--sp-6);display:flex;flex-direction:column;align-items:center;text-align:center;gap:var(--sp-5)}.login-card .brand-title{font-size:1.5rem}.brand-subtitle{color:var(--color-text-muted);font-size:.875rem;margin-top:calc(-1 * var(--sp-3))}.service-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:var(--sp-3)}.service-tile{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface-alt);transition:border-color .15s ease,background-color .15s ease,transform .1s ease}.service-tile:hover{border-color:var(--color-accent);background:var(--color-accent-soft);transform:translateY(-1px)}.service-tile__link{display:flex;flex-direction:column;gap:var(--sp-1);padding:var(--sp-4);text-decoration:none;color:inherit}.service-tile__name{font-weight:700;color:var(--color-text);font-size:.9375rem}.service-tile__external{margin-left:.35em;font-size:.8em;color:var(--color-text-muted);transition:color .15s ease}.service-tile__link:hover .service-tile__external{color:var(--color-accent)}.service-tile__desc{color:var(--color-text-muted);font-size:.8125rem;line-height:1.5}.service-tile--pending{background:transparent;border-style:dashed}.service-tile--pending:hover{border-color:var(--color-border);background:transparent;transform:none}.service-tile--pending .service-tile__link{cursor:default}.service-tile--pending .service-tile__name,.service-tile--pending .service-tile__desc{color:var(--color-text-muted)}.service-tile__badge{align-self:flex-start;margin-top:var(--sp-1);padding:0 var(--sp-2);border:1px solid var(--color-border);border-radius:var(--radius-sm);color:var(--color-text-muted);font-size:.6875rem;line-height:1.6}.guest-panel{gap:var(--sp-5)}.issue-form-section,.guest-list-section,.form{display:flex;flex-direction:column;gap:var(--sp-4)}.form-field{display:flex;flex-direction:column;gap:var(--sp-2);max-width:420px}.field-label{display:flex;flex-direction:column;gap:var(--sp-2);font-size:.8125rem;font-weight:600;color:var(--color-text-muted)}.input{font-size:.9375rem;color:var(--color-text);background:var(--color-surface);border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);padding:.55rem .7rem;transition:border-color .15s ease,box-shadow .15s ease}.input:focus-visible{border-color:var(--color-accent);box-shadow:0 0 0 3px var(--color-accent-soft);outline:none}.field-hint{font-size:.8125rem;color:var(--color-text-muted);font-weight:400;line-height:1.5}.role-fieldset{display:flex;flex-direction:column;gap:var(--sp-3);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--sp-4)}.role-fieldset legend{font-size:.8125rem;font-weight:700;color:var(--color-text-muted);padding:0 var(--sp-1)}.role-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:var(--sp-2)}.role-checkbox{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface-alt);font-size:.8125rem;cursor:pointer}.role-checkbox input{accent-color:var(--color-accent);width:16px;height:16px;flex-shrink:0}.role-checkbox__text code{color:var(--color-text)}.role-checkbox__badge{display:inline-block;margin-left:var(--sp-2);padding:0 6px;border:1px solid var(--color-danger);border-radius:4px;color:var(--color-danger);font-size:.75rem;font-weight:700;white-space:nowrap}.datetime-row{display:flex;flex-wrap:wrap;gap:var(--sp-2)}.preset-row{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2);margin-top:var(--sp-2)}.preset-row__label{font-size:.8125rem;color:var(--color-text-muted);min-width:2.5rem}.form-actions{display:flex;align-items:center;gap:var(--sp-3)}.password-reveal{display:flex;flex-direction:column;gap:var(--sp-3);border:2px solid var(--color-warning-border);background:var(--color-warning-soft);border-radius:var(--radius-md);padding:var(--sp-4)}.password-reveal__status{color:var(--color-success);font-size:.875rem}.password-reveal__row{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-3)}.password-reveal__label{font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--color-warning)}.password-reveal__value{font-family:var(--font-mono);font-size:.9375rem;font-weight:600;background:var(--color-surface);border:1px solid var(--color-warning-border);border-radius:var(--radius-sm);padding:.3rem .6rem;color:var(--color-text);-webkit-user-select:all;user-select:all}.password-reveal__warning{font-size:.8125rem;color:var(--color-text-muted);line-height:1.55}.table-wrapper{overflow-x:auto;border:1px solid var(--color-border);border-radius:var(--radius-md)}.data-table{width:100%;border-collapse:collapse;font-size:.8125rem}.data-table th,.data-table td{padding:var(--sp-3) var(--sp-4);text-align:left;vertical-align:middle}.data-table th{white-space:nowrap}.data-table td{white-space:normal;overflow-wrap:anywhere}.data-table td.nowrap-cell{white-space:nowrap}.table-actions{display:flex;flex-wrap:wrap;gap:var(--sp-2)}.data-table th{background:var(--color-surface-alt);color:var(--color-text-muted);font-weight:700;font-size:.75rem;text-transform:uppercase;letter-spacing:.03em;border-bottom:1px solid var(--color-border)}.data-table tbody tr{border-bottom:1px solid var(--color-border)}.data-table tbody tr:last-child{border-bottom:none}.data-table tbody tr:hover{background:var(--color-surface-alt)}.mono-cell{font-family:var(--font-mono);font-size:.78125rem}.status-badge{display:inline-flex;align-items:center;padding:.2rem .6rem;border-radius:999px;font-size:.75rem;font-weight:600;white-space:nowrap;border:1px solid}.status-badge--active{color:var(--color-success);background:var(--color-success-soft);border-color:var(--color-success-border)}.status-badge--expired{color:var(--color-warning);background:var(--color-warning-soft);border-color:var(--color-warning-border)}.status-badge--revoked{color:var(--color-text-muted);background:var(--color-surface-alt);border-color:var(--color-border)}@media(max-width:640px){.top-bar{padding:var(--sp-3) var(--sp-4)}.container{padding:var(--sp-4) var(--sp-3) var(--sp-6)}.service-grid,.role-grid{grid-template-columns:1fr}.user-info{gap:var(--sp-2)}.user-name{display:none}}
