:root{--bs-ink: #2c2419;--bs-ink-muted: #6b5f52;--bs-paper: #f7f3ee;--bs-panel: #ffffff;--bs-line: #e0d6ca;--bs-accent: #b85c38;--bs-accent-hover: #9a4a2b;--bs-accent-soft: #f5e8e0;--bs-sidebar: #2c2419;--bs-sidebar-text: #d8cfc4;--bs-sidebar-active: #ffffff;--bs-radius: 6px;--bs-font: "Segoe UI", "PT Sans", "Helvetica Neue", sans-serif;--bs-sidebar-width: 240px}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;padding:0;min-height:100%;font-family:var(--bs-font);color:var(--bs-ink);background:var(--bs-paper);line-height:1.45}a{color:var(--bs-accent);text-decoration:none}a:hover{color:var(--bs-accent-hover);text-decoration:underline}#app{min-height:100vh}.cabinet-shell{display:flex;min-height:100vh}.cabinet-sidebar{width:var(--bs-sidebar-width);flex-shrink:0;background:var(--bs-sidebar);color:var(--bs-sidebar-text);display:flex;flex-direction:column;padding:1.25rem 0 1rem}.cabinet-brand{padding:0 1.25rem 1.5rem;border-bottom:1px solid rgba(255,255,255,.08);margin-bottom:.75rem}.cabinet-brand__name{display:block;font-size:1.05rem;font-weight:650;color:var(--bs-sidebar-active);letter-spacing:-.02em}.cabinet-brand__tag{display:block;margin-top:.2rem;font-size:.75rem;opacity:.65}.cabinet-nav{list-style:none;margin:0;padding:.5rem .65rem;flex:1}.cabinet-nav a{display:block;padding:.55rem .75rem;border-radius:var(--bs-radius);color:var(--bs-sidebar-text);text-decoration:none;font-size:.92rem;margin-bottom:.15rem}.cabinet-nav a:hover{background:#ffffff0f;color:var(--bs-sidebar-active);text-decoration:none}.cabinet-nav a.router-link-exact-active{background:var(--bs-accent);color:#fff}.cabinet-nav__soon{float:right;font-size:.65rem;text-transform:uppercase;opacity:.75;letter-spacing:.04em}.cabinet-sidebar__foot{padding:.75rem 1.25rem 0;font-size:.7rem;opacity:.55}.cabinet-main{flex:1;display:flex;flex-direction:column;min-width:0}.cabinet-topbar{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1rem 1.5rem;background:var(--bs-panel);border-bottom:1px solid var(--bs-line)}.cabinet-topbar__title{margin:0;font-size:1.15rem;font-weight:650}.cabinet-topbar__user{display:flex;align-items:center;gap:.75rem}.cabinet-topbar__meta{font-size:.9rem;color:var(--bs-ink-muted)}.cabinet-logout{padding:.4rem .75rem;border:1px solid var(--bs-line);border-radius:var(--bs-radius);background:var(--bs-panel);font:inherit;font-size:.85rem;cursor:pointer}.cabinet-logout:hover{border-color:var(--bs-accent);color:var(--bs-accent)}.cabinet-content{flex:1;padding:1.5rem}.stub-card{background:var(--bs-panel);border:1px solid var(--bs-line);border-radius:var(--bs-radius);padding:1.5rem 1.75rem;max-width:40rem}.stub-card h2{margin:0 0 .5rem;font-size:1.25rem}.stub-card p{margin:0 0 .75rem;color:var(--bs-ink-muted)}.stub-badge{display:inline-block;padding:.2rem .55rem;background:var(--bs-accent-soft);color:var(--bs-accent);border-radius:4px;font-size:.75rem;font-weight:600}.auth-screen{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:1.5rem;background:linear-gradient(145deg,var(--bs-paper) 0%,#ebe3d9 100%)}.auth-card{width:100%;max-width:22rem;background:var(--bs-panel);border:1px solid var(--bs-line);border-radius:var(--bs-radius);padding:1.75rem;box-shadow:0 8px 24px #2c241914}.auth-brand{margin-bottom:1.25rem}.auth-brand__name{display:block;font-size:1.2rem;font-weight:650;color:var(--bs-ink)}.auth-brand__tag{display:block;margin-top:.25rem;font-size:.85rem;color:var(--bs-ink-muted)}.auth-field{display:block;margin-bottom:1rem}.auth-field span{display:block;margin-bottom:.35rem;font-size:.85rem;font-weight:600}.auth-field input{width:100%;padding:.55rem .65rem;border:1px solid var(--bs-line);border-radius:var(--bs-radius);font:inherit}.auth-field input:focus{outline:2px solid var(--bs-accent-soft);border-color:var(--bs-accent)}.auth-submit{width:100%;margin-top:.25rem;padding:.65rem;border:none;border-radius:var(--bs-radius);background:var(--bs-accent);color:#fff;font:inherit;font-weight:600;cursor:pointer}.auth-submit:hover:not(:disabled){background:var(--bs-accent-hover)}.auth-submit:disabled{opacity:.65;cursor:wait}.auth-error{margin:0 0 1rem;padding:.55rem .65rem;background:#fde8e8;border:1px solid #f0b8b8;border-radius:var(--bs-radius);color:#8b2e2e;font-size:.88rem}.auth-foot{margin:1.25rem 0 0;font-size:.8rem;color:var(--bs-ink-muted);text-align:center}.editor-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.75rem;margin-bottom:1rem}.editor-head__actions{display:flex;flex-wrap:wrap;gap:.5rem}.editor-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);gap:1.25rem;align-items:start}.editor-form{background:var(--bs-panel);border:1px solid var(--bs-line);border-radius:var(--bs-radius);padding:1.25rem}.editor-fieldset{margin:0 0 1.25rem;padding:.85rem 1rem .25rem;border:1px solid var(--bs-line);border-radius:var(--bs-radius)}.editor-fieldset legend{padding:0 .35rem;font-size:.85rem;font-weight:650}.editor-form textarea{width:100%;padding:.55rem .65rem;border:1px solid var(--bs-line);border-radius:var(--bs-radius);font:inherit;resize:vertical}.editor-upload{display:flex;flex-wrap:wrap;align-items:center;gap:.75rem;margin-bottom:.85rem}.editor-thumb{width:4.5rem;height:4.5rem;object-fit:cover;border-radius:var(--bs-radius);border:1px solid var(--bs-line);background:#f3ece4}.editor-album{list-style:none;margin:0 0 .75rem;padding:0;display:flex;flex-wrap:wrap;gap:.75rem}.editor-album li{display:flex;flex-direction:column;align-items:flex-start;gap:.35rem}.editor-preview{position:sticky;top:1rem;background:var(--bs-panel);border:1px solid var(--bs-line);border-radius:var(--bs-radius);padding:.75rem;min-height:24rem}.editor-preview__label{margin:0 0 .5rem;font-size:.8rem;font-weight:650;color:var(--bs-ink-muted);text-transform:uppercase;letter-spacing:.04em}.editor-preview__frame{width:100%;height:min(70vh,40rem);border:1px solid var(--bs-line);border-radius:var(--bs-radius);background:#fff}.editor-coords{display:grid;grid-template-columns:1fr 1fr auto;gap:.5rem;align-items:end;margin-bottom:.85rem}.editor-coords .auth-field{margin-bottom:0}.editor-check{display:flex;align-items:center;gap:.5rem;margin-bottom:.85rem;font-size:.9rem;font-weight:600}.editor-program-row{display:grid;grid-template-columns:5.5rem 1fr auto;gap:.4rem;margin-bottom:.45rem}.editor-program-row input{padding:.45rem .55rem;border:1px solid var(--bs-line);border-radius:var(--bs-radius);font:inherit}@media(max-width:960px){.editor-grid{grid-template-columns:1fr}.editor-preview{position:static}.editor-coords{grid-template-columns:1fr}.editor-program-row{grid-template-columns:1fr auto}.editor-program-row input:first-child{grid-column:1 / -1}}.invites-head{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:1rem;margin-bottom:1rem}.invites-subtitle{margin:0;color:var(--bs-ink-muted);font-size:.92rem}.invites-actions{display:flex;flex-wrap:wrap;gap:.5rem}.invites-filters{margin-bottom:1rem}.invites-filters label{display:inline-flex;align-items:center;gap:.5rem;font-size:.88rem;font-weight:600}.invites-filters select,.auth-field select{padding:.4rem .55rem;border:1px solid var(--bs-line);border-radius:var(--bs-radius);font:inherit;background:var(--bs-panel)}.invites-btn{padding:.45rem .85rem;border:1px solid var(--bs-line);border-radius:var(--bs-radius);background:var(--bs-panel);font:inherit;font-size:.88rem;cursor:pointer}.invites-btn:hover:not(:disabled){border-color:var(--bs-accent);color:var(--bs-accent)}.invites-btn:disabled{opacity:.6;cursor:wait}.invites-btn--primary{background:var(--bs-accent);border-color:var(--bs-accent);color:#fff}.invites-btn--primary:hover:not(:disabled){background:var(--bs-accent-hover);border-color:var(--bs-accent-hover);color:#fff}.invites-btn--ghost{background:transparent}.invites-btn--small{padding:.3rem .55rem;font-size:.78rem}.invites-notice{margin:0 0 1rem;padding:.55rem .75rem;background:var(--bs-accent-soft);border:1px solid #e8cfc0;border-radius:var(--bs-radius);color:var(--bs-accent-hover);font-size:.9rem}.invites-empty{padding:2rem 1rem;text-align:center;color:var(--bs-ink-muted);background:var(--bs-panel);border:1px dashed var(--bs-line);border-radius:var(--bs-radius)}.invites-table-wrap{overflow-x:auto;background:var(--bs-panel);border:1px solid var(--bs-line);border-radius:var(--bs-radius)}.invites-table{width:100%;border-collapse:collapse;font-size:.9rem}.invites-table th,.invites-table td{padding:.7rem .85rem;text-align:left;border-bottom:1px solid var(--bs-line);vertical-align:middle}.invites-table th{font-size:.75rem;text-transform:uppercase;letter-spacing:.04em;color:var(--bs-ink-muted);background:#faf7f3}.invites-table tr:last-child td{border-bottom:none}.invites-table code{font-size:.82rem;background:#f3ece4;padding:.1rem .35rem;border-radius:3px}.invites-link{margin-left:.5rem;font-size:.82rem}.invites-status{display:inline-block;padding:.15rem .45rem;border-radius:4px;font-size:.78rem;font-weight:600;background:#eee8e0;color:var(--bs-ink-muted)}.invites-status[data-status=draft]{background:#eef0f4;color:#4a5568}.invites-status[data-status=published]{background:#e4f2e8;color:#2d6a3e}.invites-status[data-status=archived]{background:#f0e8e0;color:#7a5a3a}.invites-row-actions{white-space:nowrap;display:flex;flex-wrap:wrap;gap:.35rem;justify-content:flex-end}.invites-modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;display:flex;align-items:center;justify-content:center;padding:1rem}.invites-modal__backdrop{position:absolute;top:0;right:0;bottom:0;left:0;background:#2c241973}.invites-modal__card{position:relative;width:100%;max-width:24rem;background:var(--bs-panel);border:1px solid var(--bs-line);border-radius:var(--bs-radius);padding:1.5rem;box-shadow:0 12px 32px #2c24192e}.invites-modal__card h2{margin:0 0 1rem;font-size:1.15rem}.invites-modal__actions{display:flex;justify-content:flex-end;gap:.5rem;margin-top:.5rem}@media(max-width:720px){.cabinet-shell{flex-direction:column}.cabinet-sidebar{width:100%;padding-bottom:.5rem}.cabinet-nav{display:flex;flex-wrap:wrap;gap:.25rem;padding:.5rem .75rem 0}.cabinet-nav li{flex:1 1 auto}.cabinet-nav__soon,.cabinet-sidebar__foot{display:none}.cabinet-topbar{flex-wrap:wrap;padding:.85rem 1rem}.cabinet-content{padding:1rem}.invites-row-actions{justify-content:flex-start}}
