:root{--bg: #f5f6f8;--surface: #ffffff;--surface-2: #f0f2f5;--text: #1c2230;--muted: #5d6677;--border: #dde1e8;--primary: #4f46e5;--primary-text: #ffffff;--allow: #15803d;--allow-bg: #dcfce7;--deny: #b91c1c;--deny-bg: #fee2e2;--inherit: #475569;--inherit-bg: #e2e8f0;--code-bg: #111827;--code-text: #e5e7eb;--radius: 10px;--shadow: 0 1px 2px rgb(0 0 0 / 6%), 0 2px 8px rgb(0 0 0 / 4%);color-scheme:light}@media(prefers-color-scheme:dark){:root{--bg: #0f131a;--surface: #171c25;--surface-2: #1f2531;--text: #e6e9ef;--muted: #9aa3b2;--border: #2b3240;--primary: #818cf8;--primary-text: #0f131a;--allow: #4ade80;--allow-bg: #14361f;--deny: #f87171;--deny-bg: #3d1717;--inherit: #cbd5e1;--inherit-bg: #2b3240;--code-bg: #0b0e13;--shadow: none;color-scheme:dark}}*{box-sizing:border-box}html,body{margin:0}body{background:var(--bg);color:var(--text);font:15px/1.5 system-ui,-apple-system,Segoe UI,Roboto,sans-serif}a{color:var(--primary);text-decoration:none}a:hover{text-decoration:underline}h1{font-size:1.6rem;margin:0 0 .25rem}h2{font-size:1.25rem;margin-top:0}h3{font-size:1.05rem;margin:1.25rem 0 .5rem}.card h3:first-child{margin-top:0}code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.9em;background:var(--surface-2);padding:.1em .35em;border-radius:4px}.muted{color:var(--muted)}.small{font-size:.85rem}.hint{display:block;font-size:.78rem;color:var(--muted)}.shell{display:grid;grid-template-columns:250px 1fr;min-height:100vh}.sidebar{background:var(--surface);border-right:1px solid var(--border);padding:1.25rem 1rem}.brand{font-weight:700;font-size:1.05rem;margin-bottom:1.5rem}.brand small{color:var(--muted);font-weight:500}.logo{color:var(--primary)}.sidebar nav{display:flex;flex-direction:column;gap:2px}.sidebar nav a{color:var(--text);padding:.5rem .75rem;border-radius:8px}.sidebar nav a:hover{background:var(--surface-2);text-decoration:none}.sidebar nav a.active{background:var(--primary);color:var(--primary-text)}.nav-section{font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:1rem .75rem .25rem}.main{min-width:0;display:flex;flex-direction:column}.topbar{display:flex;justify-content:flex-end;align-items:center;gap:1rem;padding:.75rem 1.5rem;background:var(--surface);border-bottom:1px solid var(--border)}.who{display:flex;flex-direction:column;text-align:right;line-height:1.2}.who .muted{font-size:.8rem}.content{padding:1.5rem;max-width:1100px;width:100%}@media(max-width:760px){.shell{grid-template-columns:1fr}.sidebar{border-right:0;border-bottom:1px solid var(--border);padding:1rem}.brand{margin-bottom:.5rem}.sidebar nav{flex-direction:row;flex-wrap:wrap}.nav-section{display:none}.content{padding:1rem}.topbar{padding:.5rem 1rem}}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1.25rem;margin:1rem 0;box-shadow:var(--shadow)}.card.locked{opacity:.65;border-style:dashed}.card.center{text-align:center;max-width:520px;margin:3rem auto}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:1rem}.grid .card{margin:0}.row-between{display:flex;justify-content:space-between;align-items:center;gap:1rem;flex-wrap:wrap}.btn{display:inline-block;border:1px solid transparent;border-radius:8px;padding:.5rem 1rem;font:inherit;font-weight:600;cursor:pointer;background:var(--surface-2);color:var(--text)}.btn:hover{text-decoration:none;filter:brightness(.97)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.primary{background:var(--primary);color:var(--primary-text)}.btn.ghost{background:transparent;border-color:var(--border)}.btn.danger{background:var(--deny-bg);color:var(--deny)}.btn.sm{padding:.25rem .6rem;font-size:.82rem}input,select{font:inherit;color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:.5rem .65rem;width:100%}input:focus,select:focus,button:focus-visible{outline:2px solid var(--primary);outline-offset:1px}input[type=checkbox]{width:auto}label{display:flex;flex-direction:column;gap:.3rem;font-weight:600;font-size:.88rem}label.check,label.switch{flex-direction:row;align-items:center;gap:.5rem;font-weight:500}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:.9rem 1rem;align-items:end}.span-all{grid-column:1/-1}@media(max-width:640px){.form-grid{grid-template-columns:1fr}}.inline-form{display:flex;gap:.75rem;flex-wrap:wrap}.inline-form input{flex:1 1 220px;width:auto}.search{max-width:280px}.table{width:100%;border-collapse:collapse}.card:has(.table){overflow-x:auto}.table th,.table td{text-align:left;padding:.6rem .5rem;border-bottom:1px solid var(--border);vertical-align:middle}.table th{font-size:.78rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}.table tr:last-child td{border-bottom:0}.actions{white-space:nowrap;text-align:right}.actions .btn+.btn{margin-left:.4rem}.badge{display:inline-block;padding:.1rem .55rem;border-radius:999px;font-size:.8rem;font-weight:600}.badge.on{background:var(--allow-bg);color:var(--allow)}.badge.off{background:var(--deny-bg);color:var(--deny)}.alert{padding:.65rem .9rem;border-radius:8px;background:var(--surface-2);border:1px solid var(--border)}.alert.error{background:var(--deny-bg);color:var(--deny);border-color:transparent}h1 .key{font-size:.9rem;vertical-align:middle}.segmented{display:inline-flex;border:1px solid var(--border);border-radius:8px;overflow:hidden}.seg{border:0;background:var(--surface);color:var(--muted);padding:.35rem .7rem;font:inherit;font-size:.82rem;font-weight:600;cursor:pointer}.seg+.seg{border-left:1px solid var(--border)}.seg:disabled{cursor:wait}.seg.allow.selected{background:var(--allow-bg);color:var(--allow)}.seg.deny.selected{background:var(--deny-bg);color:var(--deny)}.seg.inherit.selected{background:var(--inherit-bg);color:var(--inherit)}.login-wrap{min-height:100vh;display:grid;place-items:center;padding:1rem}.login{width:100%;max-width:400px;display:flex;flex-direction:column;gap:.9rem}.gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:1rem}.photo{margin:0;padding:0;overflow:hidden}.photo img{width:100%;height:auto;display:block;background:var(--surface-2)}.photo figcaption{padding:.6rem .8rem;font-weight:600}.tabs{display:flex;gap:.25rem;border-bottom:1px solid var(--border);margin-top:1rem;flex-wrap:wrap}.tabs button{border:0;background:none;color:var(--muted);font:inherit;font-weight:600;padding:.6rem .9rem;cursor:pointer;border-bottom:2px solid transparent}.tabs button.active{color:var(--primary);border-bottom-color:var(--primary)}.code{margin:.75rem 0;border-radius:var(--radius);overflow:hidden;border:1px solid var(--border)}.code figcaption{display:flex;justify-content:space-between;align-items:center;padding:.35rem .75rem;background:var(--surface-2);font-size:.82rem;font-weight:600}.code pre{margin:0;padding:1rem;background:var(--code-bg);color:var(--code-text);overflow-x:auto;font-size:.84rem;line-height:1.55}.code pre code{background:none;padding:0;color:inherit}.pyramid{display:flex;align-items:stretch;gap:.5rem;margin:1rem 0;flex-wrap:wrap}.tier{flex:1 1 160px;padding:.9rem;border-radius:var(--radius);font-weight:700;text-align:center;display:flex;flex-direction:column;justify-content:center}.tier small{font-weight:500;color:var(--muted)}.tier.t1{background:var(--primary);color:var(--primary-text)}.tier.t1 small{color:inherit;opacity:.85}.tier.t2{background:var(--surface-2);border:2px solid var(--primary)}.tier.t3{background:var(--surface-2);border:1px dashed var(--border)}.gt{align-self:center;font-size:1.5rem;font-weight:700;color:var(--muted)}.flow{display:flex;flex-direction:column;align-items:stretch;max-width:560px}.flow-step{display:flex;gap:.9rem;padding:.9rem 1rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);transition:opacity .2s,border-color .2s}.flow-step>div{flex:1}.flow-step p{margin:.1rem 0 .5rem}.flow-step.decided{border:2px solid var(--primary)}.flow-step.skipped{opacity:1}.flow-step:not(.decided):not(.skipped){opacity:.45}.step-n{flex:none;width:28px;height:28px;border-radius:50%;display:grid;place-items:center;background:var(--surface-2);font-weight:700}.flow-step.decided .step-n{background:var(--primary);color:var(--primary-text)}.flow-arrow{text-align:center;color:var(--muted);font-size:.8rem;padding:.3rem 0}.result{margin-top:1rem;padding:.8rem 1rem;border-radius:var(--radius)}.result.on{background:var(--allow-bg);color:var(--allow)}.result.off{background:var(--deny-bg);color:var(--deny)}
