.portal-auth-shell{min-height:100vh;display:flex;flex-direction:column;justify-content:center;padding:20px;box-sizing:border-box;background:var(--portal-auth-shell-bg)}.portal-auth-shell--muted{background:var(--portal-auth-shell-muted-bg)}.portal-auth-inner{width:100%;max-width:400px;margin:0 auto}.portal-auth-logo{width:120px;height:120px;display:block;margin:0 auto 15px;object-fit:contain}.portal-auth-title{font-size:28px;font-weight:700;text-align:center;margin:0 0 30px;color:var(--portal-text)}.portal-auth-section-heading{font-size:1.125rem;font-weight:650;text-align:center;margin:-12px 0 10px;color:var(--portal-text);letter-spacing:.01em}.portal-auth-lede{font-size:15px;color:var(--portal-auth-subtitle);text-align:center;margin:0 0 22px;line-height:1.45}.portal-auth-subtitle{font-size:16px;color:var(--portal-auth-subtitle);text-align:center;margin:-18px 0 24px;line-height:1.4}.portal-auth-input{display:block;width:100%;box-sizing:border-box;height:40px;border:1px solid var(--portal-auth-input-border);border-radius:5px;margin-bottom:10px;padding:10px;font-size:16px;background:var(--portal-auth-input-bg);color:var(--portal-auth-input-text)}.portal-auth-input::placeholder{color:var(--portal-auth-placeholder)}.portal-auth-input--error{border-color:var(--portal-error)}.portal-auth-input--tall{height:auto;min-height:48px;padding:12px 15px;border-radius:10px;margin-bottom:15px}.portal-auth-btn{width:100%;padding:12px 16px;margin-top:4px;font-size:16px;font-weight:700;color:var(--portal-primary-contrast);background:var(--portal-primary);border:none;border-radius:5px;cursor:pointer}.portal-auth-btn:disabled{opacity:.6;cursor:not-allowed}.portal-auth-btn--pill{border-radius:10px;padding:15px;font-size:18px}.portal-auth-btn-row{margin-top:8px}.portal-auth-error{margin-top:10px;color:var(--portal-error);font-size:14px}.portal-auth-link{display:block;margin-top:10px;text-align:center;color:var(--portal-primary);font-size:14px;text-decoration:none;background:none;border:none;cursor:pointer;font-family:inherit}.portal-auth-link:hover{text-decoration:underline;filter:brightness(1.05)}.portal-auth-hint{margin-top:20px;text-align:center;font-size:14px;color:var(--portal-text-muted);line-height:1.4}.portal-auth-dev-banner{margin-top:16px;padding:12px;background:var(--portal-auth-dev-bg);color:var(--portal-auth-dev-text);border-radius:8px;font-size:12px;word-break:break-all;border:1px solid var(--portal-border)}.portal-auth-dev-banner a{color:var(--portal-auth-dev-link)}.portal-auth-oauth-wrap{width:100%;margin-top:24px}.portal-auth-oauth-divider{text-align:center;margin:0 0 12px;font-size:13px;color:var(--portal-text-muted)}.portal-auth-oauth-btn{display:flex;flex-direction:row;align-items:center;justify-content:center;width:100%;box-sizing:border-box;border-radius:8px;border-width:1px;border-style:solid;padding:10px 14px;margin-bottom:10px;font-size:15px;font-weight:600;text-decoration:none;cursor:pointer;font-family:inherit}.portal-auth-oauth-btn--google{background:#fff;border-color:#dadce0;color:#1f1f1f}.portal-auth-oauth-btn--discord{background:#5865f2;border-color:#5865f2;color:#fff}.portal-auth-oauth-icon{width:22px;height:22px;margin-right:10px;object-fit:contain;flex-shrink:0}.portal-auth-oauth-label{line-height:1.2}.react-flow{direction:ltr}.react-flow__container{position:absolute;width:100%;height:100%;top:0;left:0}.react-flow__pane{z-index:1;cursor:-webkit-grab;cursor:grab}.react-flow__pane.selection{cursor:pointer}.react-flow__pane.dragging{cursor:-webkit-grabbing;cursor:grabbing}.react-flow__viewport{transform-origin:0 0;z-index:2;pointer-events:none}.react-flow__renderer{z-index:4}.react-flow__selection{z-index:6}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible{outline:none}.react-flow .react-flow__edges{pointer-events:none;overflow:visible}.react-flow__edge-path,.react-flow__connection-path{stroke:#b1b1b7;stroke-width:1;fill:none}.react-flow__edge{pointer-events:visibleStroke;cursor:pointer}.react-flow__edge.animated path{stroke-dasharray:5;-webkit-animation:dashdraw .5s linear infinite;animation:dashdraw .5s linear infinite}.react-flow__edge.animated path.react-flow__edge-interaction{stroke-dasharray:none;-webkit-animation:none;animation:none}.react-flow__edge.inactive{pointer-events:none}.react-flow__edge.selected,.react-flow__edge:focus,.react-flow__edge:focus-visible{outline:none}.react-flow__edge.selected .react-flow__edge-path,.react-flow__edge:focus .react-flow__edge-path,.react-flow__edge:focus-visible .react-flow__edge-path{stroke:#555}.react-flow__edge-textwrapper{pointer-events:all}.react-flow__edge-textbg{fill:#fff}.react-flow__edge .react-flow__edge-text{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__connection{pointer-events:none}.react-flow__connection .animated{stroke-dasharray:5;-webkit-animation:dashdraw .5s linear infinite;animation:dashdraw .5s linear infinite}.react-flow__connectionline{z-index:1001}.react-flow__nodes{pointer-events:none;transform-origin:0 0}.react-flow__node{position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:-webkit-grab;cursor:grab}.react-flow__node.dragging{cursor:-webkit-grabbing;cursor:grabbing}.react-flow__nodesselection{z-index:3;transform-origin:left top;pointer-events:none}.react-flow__nodesselection-rect{position:absolute;pointer-events:all;cursor:-webkit-grab;cursor:grab}.react-flow__handle{position:absolute;pointer-events:none;min-width:5px;min-height:5px;width:6px;height:6px;background:#1a192b;border:1px solid white;border-radius:100%}.react-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.react-flow__handle-bottom{top:auto;left:50%;bottom:-4px;transform:translate(-50%)}.react-flow__handle-top{left:50%;top:-4px;transform:translate(-50%)}.react-flow__handle-left{top:50%;left:-4px;transform:translateY(-50%)}.react-flow__handle-right{right:-4px;top:50%;transform:translateY(-50%)}.react-flow__edgeupdater{cursor:move;pointer-events:all}.react-flow__panel{position:absolute;z-index:5;margin:15px}.react-flow__panel.top{top:0}.react-flow__panel.bottom{bottom:0}.react-flow__panel.left{left:0}.react-flow__panel.right{right:0}.react-flow__panel.center{left:50%;transform:translate(-50%)}.react-flow__attribution{font-size:10px;background:#ffffff80;padding:2px 3px;margin:0}.react-flow__attribution a{text-decoration:none;color:#999}@-webkit-keyframes dashdraw{0%{stroke-dashoffset:10}}@keyframes dashdraw{0%{stroke-dashoffset:10}}.react-flow__edgelabel-renderer{position:absolute;width:100%;height:100%;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__edge.updating .react-flow__edge-path{stroke:#777}.react-flow__edge-text{font-size:10px}.react-flow__node.selectable:focus,.react-flow__node.selectable:focus-visible{outline:none}.react-flow__node-default,.react-flow__node-input,.react-flow__node-output,.react-flow__node-group{padding:10px;border-radius:3px;width:150px;font-size:12px;color:#222;text-align:center;border-width:1px;border-style:solid;border-color:#1a192b;background-color:#fff}.react-flow__node-default.selectable:hover,.react-flow__node-input.selectable:hover,.react-flow__node-output.selectable:hover,.react-flow__node-group.selectable:hover{box-shadow:0 1px 4px 1px #00000014}.react-flow__node-default.selectable.selected,.react-flow__node-default.selectable:focus,.react-flow__node-default.selectable:focus-visible,.react-flow__node-input.selectable.selected,.react-flow__node-input.selectable:focus,.react-flow__node-input.selectable:focus-visible,.react-flow__node-output.selectable.selected,.react-flow__node-output.selectable:focus,.react-flow__node-output.selectable:focus-visible,.react-flow__node-group.selectable.selected,.react-flow__node-group.selectable:focus,.react-flow__node-group.selectable:focus-visible{box-shadow:0 0 0 .5px #1a192b}.react-flow__node-group{background-color:#f0f0f040}.react-flow__nodesselection-rect,.react-flow__selection{background:#0059dc14;border:1px dotted rgba(0,89,220,.8)}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible,.react-flow__selection:focus,.react-flow__selection:focus-visible{outline:none}.react-flow__controls{box-shadow:0 0 2px 1px #00000014}.react-flow__controls-button{border:none;background:#fefefe;border-bottom:1px solid #eee;box-sizing:content-box;display:flex;justify-content:center;align-items:center;width:16px;height:16px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;padding:5px}.react-flow__controls-button:hover{background:#f4f4f4}.react-flow__controls-button svg{width:100%;max-width:12px;max-height:12px}.react-flow__controls-button:disabled{pointer-events:none}.react-flow__controls-button:disabled svg{fill-opacity:.4}.react-flow__minimap{background-color:#fff}.react-flow__minimap svg{display:block}.react-flow__resize-control{position:absolute}.react-flow__resize-control.left,.react-flow__resize-control.right{cursor:ew-resize}.react-flow__resize-control.top,.react-flow__resize-control.bottom{cursor:ns-resize}.react-flow__resize-control.top.left,.react-flow__resize-control.bottom.right{cursor:nwse-resize}.react-flow__resize-control.bottom.left,.react-flow__resize-control.top.right{cursor:nesw-resize}.react-flow__resize-control.handle{width:4px;height:4px;border:1px solid #fff;border-radius:1px;background-color:#3367d9;transform:translate(-50%,-50%)}.react-flow__resize-control.handle.left{left:0;top:50%}.react-flow__resize-control.handle.right{left:100%;top:50%}.react-flow__resize-control.handle.top{left:50%;top:0}.react-flow__resize-control.handle.bottom{left:50%;top:100%}.react-flow__resize-control.handle.top.left,.react-flow__resize-control.handle.bottom.left{left:0}.react-flow__resize-control.handle.top.right,.react-flow__resize-control.handle.bottom.right{left:100%}.react-flow__resize-control.line{border-color:#3367d9;border-width:0;border-style:solid}.react-flow__resize-control.line.left,.react-flow__resize-control.line.right{width:1px;transform:translate(-50%);top:0;height:100%}.react-flow__resize-control.line.left{left:0;border-left-width:1px}.react-flow__resize-control.line.right{left:100%;border-right-width:1px}.react-flow__resize-control.line.top,.react-flow__resize-control.line.bottom{height:1px;transform:translateY(-50%);left:0;width:100%}.react-flow__resize-control.line.top{top:0;border-top-width:1px}.react-flow__resize-control.line.bottom{border-bottom-width:1px;top:100%}*{box-sizing:border-box}:root{color-scheme:dark;--bg-primary: #08080f;--bg-surface: #0f0f1a;--bg-elevated: #151525;--bg-overlay: #1a1a2e;--gold-primary: #c9a84c;--gold-bright: #e8c96a;--gold-dim: #7a6330;--gold-text: #d4a843;--text-primary: #f0e8d0;--text-secondary: #a89880;--text-muted: #5a5040;--text-inverse: #08080f;--player: #0d1b2a;--danger: #8b1a1a;--success: #1a2e1a;--warning: #7a4a00;--border-gold: #c9a84c;--border-subtle: #1e1e30;--border-dim: #2a2040;--portal-primary: #c9a84c;--portal-primary-contrast: #08080f;--portal-bg: #0f0f1a;--portal-bg-elevated: #151525;--portal-text: #f0e8d0;--portal-text-muted: #5a5040;--portal-border: #1e1e30;--portal-link: #e8c96a;--portal-link-hover: #d4a843;--portal-sidebar-bg: #0f0f1a;--portal-sidebar-border: #1e1e30;--portal-sidebar-link: #a89880;--portal-sidebar-active-bg: #1a1a2e;--portal-sidebar-active-text: #e8c96a;--portal-sidebar-active-border: #c9a84c;--portal-main-bg: #08080f;--portal-table-bg: #0f0f1a;--portal-table-header-bg: #1a1a2e;--portal-table-border: #1e1e30;--portal-table-row-hover: #151525;--portal-error: #f87171;--portal-success: #6bcb77;--portal-success-banner-bg: #0d2818;--portal-success-banner-text: #a7f3d0;--portal-auth-shell-bg: #0f0f1a;--portal-auth-shell-muted-bg: #08080f;--portal-auth-input-bg: #151525;--portal-auth-input-text: #f0e8d0;--portal-auth-input-border: #1e1e30;--portal-auth-placeholder: #5a5040;--portal-auth-subtitle: #a89880;--portal-auth-dev-bg: #1a1a2e;--portal-auth-dev-text: #f0e8d0;--portal-auth-dev-link: #e8c96a;--portal-json-panel-bg: #151525;--portal-json-panel-border: #1e1e30;--portal-json-btn-border: #2a2040;--portal-json-btn-bg: #0f0f1a;--portal-json-btn-text: #f0e8d0;--portal-card-border: #1e1e30;--portal-card-bg: #0f0f1a;--portal-card-meta: #5a5040;--portal-card-placeholder-bg: #1a1a2e;--portal-card-placeholder-text: #5a5040;--portal-json-toolbar-gap: 8px;--portal-warning-bg: color-mix(in srgb, #7a4a00 28%, #0f0f1a);--portal-warning-border: #7a4a00;--portal-warning-text: #fde68a;--severity-low-fg: #c9a84c;--severity-medium-fg: #7a4a00;--severity-high-fg: #8b1a1a;--status-muted-fg: #94a3b8;--portal-shadow-modal: 0 16px 48px rgba(0, 0, 0, .25)}html{color-scheme:dark light}body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background-color:var(--bg-primary);color:var(--text-primary)}a{color:var(--portal-link)}a:hover{color:var(--portal-link-hover)}.app-shell{min-height:100vh;display:flex;background:var(--bg-primary);color:var(--text-primary)}.portal-sidebar{width:220px;flex-shrink:0;display:flex;flex-direction:column;min-height:100vh;background:var(--portal-sidebar-bg);padding:16px;border-right:1px solid var(--portal-sidebar-border);transition:width .2s ease,padding .2s ease}@media (prefers-reduced-motion: reduce){.portal-sidebar{transition:none}}.portal-sidebar--collapsed{width:58px;padding:12px 8px;align-items:center}.portal-sidebar__main{flex:1;min-height:0}.portal-sidebar__footer{padding-top:16px;margin-top:auto;border-top:1px solid var(--portal-sidebar-border)}.portal-sidebar__footer-actions{display:flex;flex-direction:column;gap:8px}.portal-sidebar__theme-btn{width:100%;padding:10px 12px;border-radius:8px;border:1px solid var(--border-subtle);background:var(--bg-elevated);color:var(--gold-primary);font-size:20px;line-height:1;cursor:pointer}.portal-sidebar--collapsed .portal-sidebar__theme-btn{padding:10px 6px;display:flex;align-items:center;justify-content:center}.portal-sidebar__theme-btn:hover{background:var(--bg-overlay)}.portal-sidebar__theme-btn:focus-visible{outline:2px solid var(--gold-primary);outline-offset:2px}.portal-sidebar__logout-btn{display:flex;align-items:center;justify-content:flex-start;gap:10px;width:100%;padding:10px 12px;border-radius:8px;border:1px solid var(--border-subtle);background:var(--bg-elevated);color:var(--text-secondary);font-size:14px;font-weight:600;line-height:1.2;cursor:pointer;font-family:inherit}.portal-sidebar__logout-btn-icon{display:flex;flex-shrink:0;color:var(--text-secondary)}.portal-sidebar__logout-btn-icon svg{display:block}.portal-sidebar__logout-btn-label{min-width:0}.portal-sidebar--collapsed .portal-sidebar__logout-btn{padding:10px 6px;justify-content:center}.portal-sidebar__logout-btn:hover{background:var(--bg-overlay);color:var(--portal-error)}.portal-sidebar__logout-btn:hover .portal-sidebar__logout-btn-icon{color:var(--portal-error)}.portal-sidebar__logout-btn:focus-visible{outline:2px solid var(--gold-primary);outline-offset:2px}.portal-sidebar__header{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;margin-bottom:12px}.portal-sidebar--collapsed .portal-sidebar__header{flex-direction:column;align-items:center;margin-bottom:10px}.portal-sidebar__brand{flex:1;min-width:0;font-weight:800;color:var(--text-primary);line-height:1.2}.portal-sidebar__brand-text{display:block}.portal-sidebar__brand-compact{display:flex;align-items:center;justify-content:center;width:36px;height:36px;margin:0 auto;border-radius:8px;background:color-mix(in srgb,var(--gold-primary) 22%,transparent);color:var(--gold-primary);font-weight:800;font-size:15px}.portal-sidebar__collapse-toggle{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border:1px solid var(--border-subtle);border-radius:8px;background:var(--bg-elevated);color:var(--gold-primary);cursor:pointer}.portal-sidebar__collapse-toggle:hover{background:var(--bg-overlay)}.portal-sidebar__collapse-toggle:focus-visible{outline:2px solid var(--gold-primary);outline-offset:2px}.portal-sidebar--collapsed .portal-sidebar__collapse-toggle{width:100%;max-width:42px}.portal-sidebar__nav,.portal-sidebar__accordion{display:flex;flex-direction:column}.portal-sidebar__accordion+.portal-sidebar__section-label,.portal-sidebar__accordion+.portal-sidebar__accordion{margin-top:10px}.portal-sidebar__accordion-toggle{display:flex;align-items:center;justify-content:space-between;width:100%;gap:8px;padding:8px 12px;margin-bottom:2px;border:1px solid transparent;border-radius:6px;background:transparent;color:var(--text-muted);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;cursor:pointer;text-align:left;font-family:inherit}.portal-sidebar__accordion-toggle:hover{background:var(--portal-table-row-hover);color:var(--text-secondary)}.portal-sidebar__accordion-toggle:focus-visible{outline:2px solid var(--gold-primary);outline-offset:2px}.portal-sidebar__accordion-title{flex:1;min-width:0}.portal-sidebar__accordion-chevron{display:inline-flex;flex-shrink:0;align-items:center;justify-content:center;color:var(--portal-sidebar-link);transition:transform .2s ease}.portal-sidebar__accordion-chevron--open{transform:rotate(180deg)}@media (prefers-reduced-motion: reduce){.portal-sidebar__accordion-chevron{transition:none}}.portal-sidebar__accordion-panel{display:flex;flex-direction:column}.portal-sidebar__accordion-panel[hidden]{display:none!important}.portal-sidebar__accordion-stack{display:flex;flex-direction:column}.portal-sidebar__section-label{margin:16px 0 8px;font-size:11px;color:var(--text-muted);text-transform:uppercase}.portal-sidebar__section-label--collapsed{margin:14px 0 10px;display:flex;justify-content:center;align-items:center;font-size:0;line-height:0;text-transform:none;color:var(--text-muted)}.portal-sidebar__section-label--collapsed svg{opacity:.88}.portal-sidebar__link{display:flex;align-items:center;gap:10px;padding:8px 12px;border-radius:6px;color:var(--portal-sidebar-link);text-decoration:none;margin-bottom:4px;font-weight:500}.portal-sidebar__link-icon{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;opacity:.92}.portal-sidebar--collapsed .portal-sidebar__link{justify-content:center;padding:10px 6px}.portal-sidebar--collapsed .portal-sidebar__link-label{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.portal-sidebar__link:hover{background:var(--portal-table-row-hover)}.portal-sidebar__link--active{background:var(--portal-sidebar-active-bg);color:var(--portal-sidebar-active-text);font-weight:700;box-shadow:inset 3px 0 0 var(--portal-sidebar-active-border)}main.portal-main{flex:1;padding:24px;overflow:auto;background:var(--bg-primary);color:var(--text-primary)}table{width:100%;border-collapse:collapse;background:var(--portal-table-bg);border-radius:8px;overflow:hidden;border:1px solid var(--portal-table-border)}th,td{padding:10px 12px;text-align:left;border-bottom:1px solid var(--portal-table-border)}th{background:var(--portal-table-header-bg);font-size:13px}tr:hover td{background:var(--portal-table-row-hover)}button{cursor:pointer}input,textarea,select{font:inherit}.portal-text-error{color:var(--portal-error)}.portal-text-muted{color:var(--portal-text-muted)}.portal-text-success{color:var(--portal-success)}.portal-banner-success{margin:0 0 16px;padding:12px;border-radius:8px;background:var(--portal-success-banner-bg);color:var(--portal-success-banner-text);font-size:14px}.portal-callout-warning{margin-bottom:16px;padding:12px;border-radius:8px;background:var(--portal-warning-bg);border:1px solid var(--portal-warning-border);color:var(--portal-warning-text);font-size:14px}.portal-callout-info{margin-bottom:16px;padding:12px;border-radius:8px;font-size:14px;line-height:1.55;background:color-mix(in srgb,var(--gold-primary) 14%,transparent);border:1px solid color-mix(in srgb,var(--gold-primary) 45%,transparent);color:var(--text-primary)}.portal-create-campaign__h2{margin:0 0 12px;font-size:16px;font-weight:700}.portal-field{display:block;margin-bottom:14px}.portal-field__label{display:block;font-size:13px;font-weight:600;margin-bottom:6px}.portal-field__input{display:block;width:100%;padding:10px 12px;border-radius:8px;border:1px solid var(--portal-border);background:var(--portal-bg-elevated);color:var(--portal-text)}.portal-field__input--code{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:13px}.portal-field__hint{display:block;font-size:12px;color:var(--portal-text-muted);margin-top:6px}.portal-fieldset{border:none;padding:0;margin:0 0 16px}.portal-fieldset__legend{font-size:13px;font-weight:600;margin-bottom:10px;padding:0}.portal-radio{display:flex;align-items:center;gap:8px;margin-bottom:8px;font-size:14px;cursor:pointer}.portal-btn-primary{padding:12px 20px;border-radius:8px;border:none;background:var(--portal-primary);color:var(--portal-primary-contrast);font-weight:700;font-size:15px}.portal-btn-primary:hover:not(:disabled){filter:brightness(1.06)}.portal-btn-primary:disabled{opacity:.65;cursor:not-allowed}.portal-card{border:1px solid var(--portal-card-border);border-radius:8px;padding:12px 14px;background:var(--portal-card-bg);margin-bottom:10px}.portal-card__meta{font-size:12px;color:var(--portal-card-meta);margin-top:4px}.portal-json-toolbar{display:flex;gap:var(--portal-json-toolbar-gap);margin-bottom:10px;flex-wrap:wrap;align-items:center}.portal-json-btn{padding:6px 12px;border-radius:6px;border:1px solid var(--portal-json-btn-border);background:var(--portal-json-btn-bg);color:var(--portal-json-btn-text);cursor:pointer;font-weight:500;font-family:inherit;font-size:14px}.portal-json-btn--active{background:var(--portal-sidebar-active-bg);color:var(--portal-sidebar-active-text);font-weight:700;border-color:transparent}.portal-json-panel{max-height:480px;overflow:auto;background:var(--portal-json-panel-bg);padding:12px;border:1px solid var(--portal-json-panel-border);border-radius:6px;font-size:13px}.portal-json-pre{max-height:480px;overflow:auto;background:var(--portal-json-panel-bg);padding:12px;border:1px solid var(--portal-json-panel-border);border-radius:6px;margin:0;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:12px;line-height:1.45;white-space:pre;color:var(--portal-text)}.portal-pack-card{text-align:left;border:1px solid var(--portal-card-border);border-radius:8px;padding:0;overflow:hidden;background:var(--portal-card-bg);color:var(--portal-text);max-width:320px}.portal-pack-card__placeholder{height:120px;background:var(--portal-card-placeholder-bg);display:flex;align-items:center;justify-content:center;font-size:32px;font-weight:800;color:var(--portal-card-placeholder-text)}.portal-pack-card__body{padding:10px}.portal-pack-card__title{font-weight:700}.portal-library{max-width:1200px}.portal-library__toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:20px}.portal-library__select{min-width:280px;padding:8px 10px;border-radius:6px;border:1px solid var(--portal-border);background:var(--portal-auth-input-bg);color:var(--portal-text);font:inherit}.portal-library__layout{display:flex;gap:16px;align-items:flex-start}.portal-library__nav{width:280px;flex-shrink:0;border:1px solid var(--portal-border);border-radius:8px;padding:12px;background:var(--portal-table-bg);max-height:min(70vh,600px);overflow-x:hidden;overflow-y:auto}.portal-library__nav h3{margin:0 0 8px;font-size:12px;text-transform:uppercase;color:var(--portal-text-muted);font-weight:600}.portal-library__nav button{display:block;width:100%;min-width:0;text-align:left;padding:8px 10px;margin-bottom:4px;border-radius:6px;border:1px solid transparent;background:transparent;color:var(--portal-text);font:inherit;cursor:pointer;overflow-wrap:break-word}.portal-library__nav button:hover{background:var(--portal-table-row-hover)}.portal-library__nav button.portal-library__nav--active{background:var(--portal-sidebar-active-bg);color:var(--portal-sidebar-active-text);font-weight:600}.portal-library__nav button.portal-library__scene{font-size:13px;padding:8px 10px 8px 14px;border-left:2px solid var(--portal-border)}.portal-library__main{flex:1;min-width:0}.portal-library__section{margin-bottom:20px}.portal-library__section h3{margin:0 0 8px;font-size:14px;text-transform:uppercase;letter-spacing:.04em;color:var(--portal-text-muted)}.portal-library__meta{display:flex;flex-wrap:wrap;gap:8px 16px;font-size:14px;color:var(--portal-text-muted);margin-bottom:12px}.portal-library__desc{line-height:1.5;margin:0 0 12px;white-space:pre-wrap}.portal-library__table-wrap{overflow:auto;border:1px solid var(--portal-border);border-radius:8px}.portal-library__table-wrap table{border:none;margin:0}.portal-library__kicker{font-size:12px;color:var(--portal-text-muted);margin-bottom:4px}details.portal-library__details{border:1px solid var(--portal-border);border-radius:8px;padding:8px 12px;margin-bottom:8px;background:var(--portal-table-bg)}details.portal-library__details summary{cursor:pointer;font-weight:600}.portal-create-campaign--wide{max-width:1120px}.portal-campaign-editor__meta{display:flex;flex-wrap:wrap;gap:16px 24px;margin-bottom:20px;padding:12px;border:1px solid var(--portal-border);border-radius:8px;background:var(--portal-table-bg)}.portal-act-card{border:1px solid var(--portal-border);border-radius:10px;padding:16px;margin-bottom:20px;background:var(--portal-card-bg)}.portal-act-card__head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px}.portal-act-card__title{margin:0;font-size:18px}.portal-scene-card{border:1px solid var(--portal-border);border-radius:8px;margin-bottom:12px;background:var(--portal-bg-elevated)}.portal-scene-card__head{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:10px 12px;border-bottom:1px solid var(--portal-border)}.portal-scene-card__title{flex:1;min-width:180px;font-weight:700}.portal-scene-card__body{padding:14px}.portal-scene-meta{display:grid;grid-template-columns:1fr 1fr minmax(140px,180px);gap:12px;margin-bottom:12px}@media (max-width: 720px){.portal-scene-meta{grid-template-columns:1fr}}.portal-subcard{border:1px dashed var(--portal-border);border-radius:8px;padding:12px;margin-bottom:14px;background:var(--portal-main-bg)}.portal-subcard__head{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:10px}.portal-item-row{display:grid;grid-template-columns:minmax(120px,1.5fr) 110px 52px minmax(100px,1fr) auto;gap:8px;margin-bottom:8px;align-items:center}@media (max-width: 900px){.portal-item-row{grid-template-columns:1fr 1fr}}.portal-field__input--narrow{max-width:120px}.portal-field__input--qty{max-width:56px}.portal-field__input--grow{min-width:0}.portal-field__input--tiny{max-width:72px;display:inline-block}.portal-field__input--inline{flex:1;min-width:140px}.portal-field__input--role{max-width:140px}.portal-btn-small{padding:4px 10px;border-radius:6px;border:1px solid var(--portal-json-btn-border);background:var(--portal-json-btn-bg);color:var(--portal-json-btn-text);font-size:13px;font-weight:500;cursor:pointer;font-family:inherit;white-space:nowrap}.portal-btn-small:hover{filter:brightness(.97)}.portal-btn-danger{color:var(--portal-error)!important;border-color:color-mix(in srgb,var(--danger) 40%,transparent)}.portal-npc-card{border:1px solid var(--portal-border);border-radius:8px;margin-bottom:10px;background:var(--portal-card-bg)}.portal-npc-card__bar{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:8px 10px}.portal-npc-card__toggle{border:none;background:transparent;cursor:pointer;font-size:14px;padding:4px;color:var(--portal-text-muted)}.portal-npc-card__body{padding:12px;border-top:1px solid var(--portal-border);background:var(--portal-main-bg)}.portal-npc-quick{display:flex;flex-wrap:wrap;gap:10px;align-items:center;font-size:13px}.portal-npc-quick label{display:flex;align-items:center;gap:4px}.portal-npc-grid{display:grid;grid-template-columns:1fr 1fr minmax(100px,140px);gap:12px}@media (max-width: 720px){.portal-npc-grid{grid-template-columns:1fr}}.portal-ai-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(152px,1fr));gap:12px;margin-top:10px}.portal-ai-slider{display:flex;flex-direction:column;gap:4px;font-size:12px}.portal-ai-slider input[type=range]{width:100%}.portal-ai-slider__val{font-variant-numeric:tabular-nums;color:var(--portal-text-muted);font-size:11px}.portal-details{margin:10px 0}.portal-details summary{cursor:pointer;font-weight:600;font-size:14px}.portal-details--boxed{border:1px solid var(--portal-border);border-radius:8px;padding:10px 12px;background:var(--portal-table-bg)}.portal-details--boxed summary{margin:0}.portal-objective-row{display:flex;gap:8px;margin-bottom:6px;align-items:center}.portal-objective-row .portal-field__input{flex:1}.portal-clue-block{margin-bottom:12px;padding-bottom:12px;border-bottom:1px solid var(--portal-border)}.portal-clue-block:last-child{border-bottom:none;padding-bottom:0}.portal-clue-meta{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-top:8px}.portal-container-block{margin-bottom:14px;padding:12px;border-radius:8px;background:var(--portal-json-panel-bg);border:1px solid var(--portal-json-panel-border)}.portal-container-block__head{display:flex;gap:8px;align-items:flex-start;margin-bottom:8px}.portal-container-block__head .portal-field__input{flex:1}.portal-rewards-row{margin-bottom:10px}.portal-scene-list{margin-top:8px}.portal-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;display:flex;align-items:flex-start;justify-content:center;padding:48px 16px;background:color-mix(in srgb,var(--bg-primary) 72%,transparent);overflow-y:auto}.portal-modal{width:100%;max-width:520px;background:var(--portal-card-bg);border:1px solid var(--portal-border);border-radius:12px;padding:16px 18px 20px;box-shadow:var(--portal-shadow-modal)}.portal-modal__head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:8px}.portal-monster-picker-list{list-style:none;margin:0;padding:0;max-height:min(52vh,420px);overflow-y:auto;border:1px solid var(--portal-border);border-radius:8px}.portal-monster-picker-list li+li{border-top:1px solid var(--portal-border)}.portal-monster-picker-row{display:flex;flex-direction:column;align-items:flex-start;gap:2px;width:100%;padding:10px 12px;margin:0;border:none;background:transparent;color:var(--portal-text);text-align:left;cursor:pointer;font:inherit}.portal-monster-picker-row:hover{background:var(--portal-table-row-hover)}.portal-monster-picker-row__name{font-weight:600}.portal-monster-picker-row__meta{font-size:12px}.portal-create-campaign__h3{margin:0 0 8px;font-size:15px;font-weight:600}.portal-ruleset-grid-wrap{margin-top:4px}.portal-ruleset-grid__warn{font-size:13px;margin:0 0 8px}.portal-ruleset-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:12px}.portal-ruleset-card{display:flex;flex-direction:column;align-items:stretch;padding:0;margin:0;border-radius:10px;border:1px solid var(--portal-border);background:var(--portal-bg-elevated);color:var(--portal-text);cursor:pointer;text-align:left;overflow:hidden;font:inherit;transition:border-color .15s,box-shadow .15s}.portal-ruleset-card:hover:not(:disabled){border-color:color-mix(in srgb,var(--portal-primary) 55%,var(--portal-border))}.portal-ruleset-card:disabled{opacity:.55;cursor:not-allowed}.portal-ruleset-card--selected{border-color:var(--portal-primary);box-shadow:0 0 0 1px color-mix(in srgb,var(--portal-primary) 70%,transparent)}.portal-ruleset-card__visual{aspect-ratio:16 / 10;background:var(--portal-card-placeholder-bg);display:flex;align-items:center;justify-content:center;overflow:hidden}.portal-ruleset-card__img{width:100%;height:100%;object-fit:cover;display:block}.portal-ruleset-card__placeholder{font-size:22px;color:var(--portal-text-muted)}.portal-ruleset-card__label{padding:8px 10px 4px;font-size:13px;line-height:1.35;font-weight:600}.portal-ruleset-card__publisher{padding:0 10px 10px;font-size:11px;color:var(--portal-text-muted);line-height:1.3}.portal-ruleset-grid__publisher-hint{margin-bottom:10px}.portal-ruleset-grid__publisher-hint code{font-size:11px}.portal-official-rulesets__code{font-size:12px}.portal-official-rulesets__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:14px;margin-top:12px}.portal-official-rulesets__card{border:1px solid var(--portal-border);border-radius:10px;overflow:hidden;background:var(--portal-bg-elevated)}.portal-official-rulesets__visual{aspect-ratio:16 / 10;background:var(--portal-card-placeholder-bg)}.portal-official-rulesets__img{width:100%;height:100%;object-fit:cover;display:block}.portal-official-rulesets__placeholder{display:flex;align-items:center;justify-content:center;height:100%;font-size:14px;color:var(--portal-text-muted);text-transform:uppercase}.portal-official-rulesets__body{padding:10px 12px 12px}.portal-official-rulesets__title{font-weight:700;font-size:14px;margin-bottom:6px}.portal-official-rulesets__meta{display:flex;flex-wrap:wrap;align-items:center;gap:8px;font-size:12px;color:var(--portal-text-muted)}.portal-official-rulesets__badge{display:inline-block;padding:2px 8px;border-radius:999px;border:1px solid var(--portal-border);font-size:11px;text-transform:lowercase}.portal-official-rulesets__publisher{margin-top:8px;font-size:12px;color:var(--portal-text-muted)}.portal-publishers__code{font-size:12px}.portal-publishers__pack-thumb{width:40px;height:40px;object-fit:cover;border-radius:6px;border:1px solid var(--portal-border);display:block}.portal-publishers__toolbar .portal-field__input{max-width:min(100%,520px)}.portal-publishers__meta{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:12px 20px;margin:16px 0 0;padding:0}.portal-publishers__meta dt{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--portal-text-muted);margin:0 0 4px}.portal-publishers__meta dd{margin:0;font-size:14px}.portal-publishers__section{margin-bottom:28px}.portal-publishers__section-lede{margin-top:-6px;margin-bottom:10px;font-size:14px}.portal-publishers__pack-table{width:100%;margin-top:8px;border-collapse:collapse;font-size:14px}.portal-publishers__pack-table th,.portal-publishers__pack-table td{padding:8px 10px;text-align:left;border-bottom:1px solid var(--portal-table-border);vertical-align:middle}.portal-publishers__pack-table thead th{background:var(--portal-table-header-bg);font-weight:600;font-size:12px}.portal-publishers__pack-table-thumb{width:48px}.portal-pack-image-row{margin-bottom:16px}.portal-pack-image-row__head{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:4px}.portal-pack-image-row__hint{margin-top:0}.portal-pack-image-row__err{margin:6px 0 0;font-size:13px}.portal-pack-image-row__preview{margin-top:8px;max-width:360px;border-radius:8px;overflow:hidden;border:1px solid var(--portal-border)}.portal-pack-image-row__preview img{display:block;width:100%;height:auto;vertical-align:middle}.portal-dash-thumb-cell{width:56px;vertical-align:middle}.portal-dash-thumb{width:48px;height:48px;object-fit:cover;border-radius:8px;border:1px solid var(--portal-border);display:block}.portal-dash-thumb--empty{display:flex;align-items:center;justify-content:center;font-size:12px;color:var(--portal-text-muted);background:var(--portal-card-placeholder-bg)}.portal-pack-detail__hero{display:flex;flex-direction:column;gap:10px}.portal-pack-detail__cover{width:100%;max-width:560px;max-height:220px;object-fit:cover;border-radius:10px;border:1px solid var(--portal-border)}.portal-pack-detail__thumb-row{display:flex;flex-wrap:wrap;gap:10px;align-items:center}.portal-pack-detail__logo{width:72px;height:72px;object-fit:cover;border-radius:8px;border:1px solid var(--portal-border)}.portal-pack-detail__banner{max-width:100%;max-height:80px;object-fit:cover;border-radius:8px;border:1px solid var(--portal-border)}
