:root{color-scheme:light;--bg: #f5f5f5;--bg-elevated: #ffffff;--bg-hover: #e5e7eb;--accent: #4f46e5;--accent-soft: rgba(79, 70, 229, .12);--border-subtle: #e5e7eb;--text-main: #111827;--text-muted: #6b7280}*,*:before,*:after{box-sizing:border-box}input:focus,input:focus-visible,select:focus,select:focus-visible,textarea:focus,textarea:focus-visible{outline:none;box-shadow:none}html{height:100%;max-height:100vh;overflow:hidden}body{margin:0;font-family:system-ui,-apple-system,BlinkMacSystemFont,SF Pro Text,Segoe UI,sans-serif;background:var(--bg);color:var(--text-main);overflow:hidden;height:100%;max-height:100vh}#root{height:100%;background:var(--bg)}.app-shell{display:flex;height:100vh;max-height:100vh;overflow:hidden;box-sizing:border-box;background:var(--bg)}.auth-screen{display:flex;align-items:center;justify-content:center;height:100vh;background:var(--bg)}.auth-screen-inner{display:flex;flex-direction:column;align-items:center;gap:20px}.auth-screen-inner h1{margin:0;font-size:28px;font-weight:700;text-align:center}.sidebar{width:286px;background:var(--bg);border-right:1px solid #d1d5db;padding:18px 18px 24px;display:flex;flex-direction:column;gap:20px;max-height:100%;min-height:0;overflow:hidden;box-sizing:border-box;flex-shrink:0}.sidebar-header{display:flex;flex-direction:row;align-items:center;gap:2px;padding:0}.logo-text{display:block;text-align:left;margin:0;padding:0;font-weight:700;font-style:italic;letter-spacing:.08em}.menu{display:flex;flex-direction:column;gap:6px;margin-top:8px;flex:1;min-height:0}.menu-item{display:flex;align-items:center;gap:10px;padding:12px 10px;width:100%;border:none;background:transparent;color:var(--text-muted);font-size:1rem;font-weight:600;letter-spacing:.01em;cursor:pointer;transition:all .16s ease;text-align:left;text-decoration:none}.menu-item--active,.menu-item.active{background:var(--accent-soft);color:var(--text-main)}.menu-item:hover{background:var(--bg-hover);color:var(--text-main);box-shadow:none}.menu-item:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.menu-group{margin-top:16px}.menu-group:first-child{margin-top:0}.menu-group-title{padding:8px 10px 4px;color:var(--text-muted);font-size:.75rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase}.menu-item--nested{padding-left:20px}.app-sidebar-bottom{margin-top:auto;display:flex;flex-direction:column;gap:8px}.content{flex:1;background:var(--bg-elevated);padding:12px 32px;display:flex;flex-direction:column;gap:18px;min-height:0;overflow:hidden;height:100%;max-height:100%;box-sizing:border-box}.layout-workspace{flex:1;display:flex;flex-direction:column;min-height:0;max-height:100%;overflow:hidden;min-width:0}.layout-workspace>*{min-width:0;min-height:0;max-width:100%}.content-header{display:flex;align-items:center;padding-bottom:10px;margin-bottom:6px;border-bottom:1px solid #d1d5db;flex-shrink:0}.content-header h1{margin:0;font-size:1.6rem}.content-header p{margin:0;color:var(--text-muted);font-size:.95rem}.registry-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:12px;flex-shrink:0}.registry-toolbar-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.audience-create-overlay{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:#ffffffd1;z-index:40}.audience-create-form{width:min(36rem,90vw)}.audience-create-input{width:100%;border:none;background:transparent;padding:0;font-size:1.75rem;font-weight:500;line-height:1.3;text-align:center;color:var(--text-main)}.audience-create-input::placeholder{color:var(--text-muted)}.registry-search{position:relative;display:flex;flex:1;min-width:12rem}.registry-search input,.registry-search input.registry-search-input{flex:1;min-width:0;width:100%;border-radius:10px;border:1px solid #d1d5db;padding:8px 36px 8px 12px;font-size:.9rem;height:42px}.registry-search input[type=search]::-webkit-search-cancel-button,.registry-search input[type=search]::-webkit-search-decoration{-webkit-appearance:none;-moz-appearance:none;appearance:none}.registry-search-clear{position:absolute;right:8px;top:50%;transform:translateY(-50%);display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;padding:0;border:none;border-radius:4px;background:transparent;color:var(--text-muted);cursor:pointer}.registry-search-clear:hover{color:var(--text-main);background:transparent}.audit-filters-grid .registry-search,.sidebar-row .registry-search{width:100%;min-width:0;flex:none}.registry-sort{border:none;background:none;padding:0;color:inherit;font:inherit;font-weight:600;cursor:pointer;text-align:left}.registry-scroll{flex:1;min-height:0;overflow:auto}.registry-scroll .registry-table thead th{position:sticky;top:0;z-index:1}.registry-pager{display:flex;align-items:center;justify-content:flex-end;gap:8px;margin-top:0;padding-top:8px;flex-shrink:0;color:var(--text-muted);font-size:.8rem;background:var(--bg-elevated);border-top:1px solid #d1d5db}.registry-pager .app-btn{min-height:28px;padding:4px 10px;font-size:.8rem}.registry-filter-btn{min-width:36px;padding-left:10px;padding-right:10px}.status-badge{display:inline-flex;align-items:center;padding:2px 10px;border-radius:999px;border:1px solid transparent;font-size:.8rem;font-weight:500;line-height:1.4;white-space:nowrap}.status-badge--active{background:#dcfce7;border-color:#86efac;color:#166534}.status-badge--inactive{background:#fee2e2;border-color:#fca5a5;color:#991b1b}.status-badge--paused{background:#fef9c3;border-color:#fde047;color:#854d0e}.content-body{flex:1;display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;min-height:0;overflow:auto}.content-body:has(>.registry-scroll),.content-body:has(>.audit-journal),.content-body:has(>.program-structure){overflow:hidden}.content-body--fill{overflow:hidden}.app-btn{display:inline-flex;align-items:center;justify-content:center;min-height:36px;padding:8px 16px;border-radius:4px;border:1px solid transparent;background:#fff;color:#111827;font-size:.875rem;font-weight:500;line-height:1;cursor:pointer;transition:background-color .2s,color .2s,border-color .2s}.app-btn:disabled{opacity:.6;cursor:not-allowed}.app-btn--create,.app-btn--update{border-color:#2563eb;color:#2563eb}.app-btn--create:hover:not(:disabled),.app-btn--update:hover:not(:disabled){background-color:#2563eb;border-color:#2563eb;color:#fff}.app-btn--create:active:not(:disabled),.app-btn--update:active:not(:disabled){background-color:#1d4ed8;border-color:#1d4ed8;color:#fff}.app-btn--delete,.app-btn--danger{border-color:#fca5a5;color:#dc2626}.app-btn--delete:hover:not(:disabled),.app-btn--danger:hover:not(:disabled){background-color:#dc2626;border-color:#dc2626;color:#fff}.app-btn--delete:active:not(:disabled),.app-btn--danger:active:not(:disabled){background-color:#b91c1c;border-color:#b91c1c;color:#fff}.app-btn--cancel,.app-btn--neutral{border-color:#d1d5db;color:#111827;background:#fff}.app-btn--cancel:hover:not(:disabled),.app-btn--neutral:hover:not(:disabled){background-color:#f9fafb;border-color:#9ca3af}.app-btn--cancel:active:not(:disabled),.app-btn--neutral:active:not(:disabled){background-color:#f3f4f6}.app-btn-icon{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;border-radius:6px;border:1px solid transparent;background:#fff;font-size:1rem;font-weight:600;line-height:1;cursor:pointer;transition:background-color .2s,color .2s,border-color .2s}.app-btn-icon:disabled{opacity:.6;cursor:not-allowed}.app-btn-icon--create{border-color:#2563eb;color:#2563eb}.app-btn-icon--create:hover:not(:disabled){background-color:#2563eb;border-color:#2563eb;color:#fff}.app-btn-icon--create:active:not(:disabled){background-color:#1d4ed8;border-color:#1d4ed8;color:#fff}.app-btn-icon--delete{border-color:#fca5a5;color:#dc2626}.app-btn-icon--delete:hover:not(:disabled){background-color:#dc2626;border-color:#dc2626;color:#fff}.app-btn-icon--delete:active:not(:disabled){background-color:#b91c1c;border-color:#b91c1c;color:#fff}.app-btn-icon--rename{border-color:#d1d5db;color:#6b7280}.app-btn-icon--rename:hover:not(:disabled){background-color:#f3f4f6;border-color:#9ca3af;color:#111827}.app-btn-icon--rename:active:not(:disabled){background-color:#e5e7eb;border-color:#6b7280;color:#111827}.registry-table{width:100%;border-collapse:collapse}.registry-table th,.registry-table td{border-bottom:1px solid var(--border-subtle);padding:.65rem .75rem;text-align:left}.registry-table thead th{background:#e5e7eb;color:var(--text-main);font-weight:600}.registry-table__row{cursor:pointer}.registry-table__row:hover{background:var(--bg-hover)}.registry-table__row--static{cursor:default}.registry-table__row--static:hover{background:transparent}.audit-entity-id{display:flex;align-items:flex-start;gap:8px;font-size:.8rem}.audit-entity-id__value{min-width:0;word-break:break-all}.copy-text-btn{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;padding:0;flex-shrink:0;border:none;border-radius:0;background:transparent;color:var(--text-muted);cursor:pointer}.copy-text-btn:hover{background:transparent;color:var(--text-main)}.copy-text-btn--done{color:#16a34a}.audit-filters-grid{display:grid;grid-template-columns:max-content max-content minmax(12rem,1fr) minmax(12rem,1fr);gap:12px;margin-bottom:16px;flex-shrink:0}.audit-filters-grid__compact{width:11rem}.audit-journal{flex:1;min-height:0;display:flex;flex-direction:column}.audit-journal-scroll{flex:1;min-height:0;overflow:auto}.audit-journal-scroll .registry-table thead th{position:sticky;top:0;z-index:1}.audit-journal>.registry-pager{flex-shrink:0}.audit-filters-grid label{display:flex;flex-direction:column;gap:6px;font-size:.85rem;font-weight:500}.audit-filters-grid input{width:100%;height:42px;border-radius:10px;border:1px solid #d1d5db;background:#fff;color:#111827;font-size:.9rem;padding:8px 12px;font-family:inherit}.select-control-trigger{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;height:42px;padding:8px 10px 8px 12px;border:1px solid #d1d5db;border-radius:10px;background:#fff;color:#111827;font-size:.9rem;font-family:inherit;cursor:pointer}.select-control-trigger:focus,.select-control-trigger:focus-visible{outline:none;box-shadow:none}.select-control-value{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.select-control-chevron{flex-shrink:0;color:var(--text-muted)}.select-control-trigger[aria-expanded=true] .select-control-chevron{transform:rotate(180deg)}.select-control-trigger--fit{width:fit-content;max-width:100%}.select-control-trigger--fit .select-control-value{overflow:visible}.select-control-trigger:disabled{cursor:default;color:var(--text-muted);background:#f9fafb}.select-control-menu{position:fixed;z-index:45;padding:4px;background:#fff;border:1px solid #d1d5db;border-radius:10px;box-shadow:0 8px 24px #1118271f}.select-control-option{display:block;width:100%;padding:8px 10px;border:none;border-radius:6px;background:transparent;color:var(--text-main);font-size:.9rem;font-family:inherit;text-align:left;cursor:pointer}.select-control-option:hover{background:var(--bg-hover)}.select-control-option--selected{background:var(--accent-soft);color:var(--accent);font-weight:500}.select-control-option--selected:hover{background:var(--accent-soft)}.select-control-search{display:block;width:100%;height:36px;margin:0 0 4px;padding:6px 10px;border:1px solid #d1d5db;border-radius:8px;background:#fff;color:#111827;font-size:.9rem;font-family:inherit}.select-control-search:focus,.select-control-search:focus-visible{outline:none;box-shadow:none}.select-control-empty{margin:0;padding:8px 10px;color:var(--text-muted);font-size:.85rem}.select-control-combobox{display:flex;align-items:center;gap:8px;width:100%;height:42px;padding:0 10px 0 12px;border:1px solid #d1d5db;border-radius:10px;background:#fff}.select-control-combobox-input{flex:1;min-width:0;height:100%;padding:0;border:none;border-radius:0;background:transparent;color:#111827;font-size:.9rem;font-family:inherit}.select-control-combobox-input:focus,.select-control-combobox-input:focus-visible{outline:none;box-shadow:none}.select-control-combobox-toggle{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:none;background:transparent;color:var(--text-muted);cursor:pointer}.select-control-combobox-toggle:focus,.select-control-combobox-toggle:focus-visible{outline:none;box-shadow:none}.constructor-inline{display:flex;flex-wrap:wrap;gap:16px 20px;align-items:end}.constructor-field--fit{width:fit-content;max-width:100%}.constructor-form .constructor-field--fit input[type=number]{width:5.5rem}.constructor-assign-tree-wrap .registry-tree-header,.audience-tree-row.constructor-assign-row{grid-template-columns:minmax(0,1fr) 11.5rem}.constructor-assign-header-deadline{width:11.5rem}.constructor-assign-item input[type=checkbox]{width:16px;height:16px;margin:0;padding:0;flex-shrink:0;accent-color:var(--accent);cursor:pointer}.constructor-assign-deadline-spacer{width:11.5rem}.constructor-assign-users{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.constructor-assign-user{display:flex;flex-wrap:wrap;align-items:center;gap:12px}.constructor-assign-user span{flex:1;min-width:8rem}.constructor-section-title{margin:8px 0 0;font-size:.95rem;font-weight:600}.constructor-question-list{display:flex;flex-direction:column;gap:8px;font-size:.85rem;font-weight:500}.constructor-question-list ul{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:8px}.constructor-form .constructor-question-item{display:flex;flex-direction:row;align-items:center;gap:10px;width:100%;min-height:42px;margin:0;padding:8px 12px;border:1px solid #d1d5db;border-radius:10px;background:#fff;font-weight:400;font-size:.9rem}.constructor-question-item input[type=checkbox]{width:16px;height:16px;margin:0;padding:0;flex-shrink:0;align-self:center;accent-color:var(--accent);cursor:pointer}.constructor-question-item input[type=checkbox]:disabled{cursor:default}.constructor-question-item span{flex:1;min-width:0;line-height:1.35}.constructor-form input:not([type=checkbox]):disabled{color:var(--text-muted);background:#f9fafb}.audit-snapshot-row td{background:#f9fafb}.audit-snapshot{display:grid;grid-template-columns:minmax(10rem,16rem) 1fr;gap:8px 16px;margin:0}.audit-snapshot-row-item{display:contents}.audit-snapshot dt{margin:0;color:var(--text-muted);font-weight:500}.audit-snapshot dd{margin:0;word-break:break-word}.registry-layout{display:inline-flex;border:1px solid #d1d5db;border-radius:6px;overflow:hidden}.registry-layout-btn{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border:none;background:#fff;color:var(--text-muted);cursor:pointer}.registry-layout-btn+.registry-layout-btn{border-left:1px solid #d1d5db}.registry-layout-btn--active{background:#e5e7eb;color:var(--text-main)}.registry-tiles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px 12px}.registry-tile-item{display:flex;flex-direction:column;gap:8px;width:100%;min-width:0;margin:0;padding:0;border:none;background:transparent;cursor:pointer;color:inherit;font:inherit}div.registry-tile-item{cursor:default}.registry-tile{position:relative;display:block;width:100%;aspect-ratio:5 / 3;border:1px solid #d1d5db;border-radius:10px;overflow:hidden;background:#fff}.registry-tile-logo{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover}.registry-tile-logo--empty{background:#f3f4f6}.registry-tile-status{position:absolute;top:8px;right:8px;z-index:1}.registry-tile-title{display:block;min-width:0;font-weight:600;text-align:center}.group-readonly{margin:0;padding:8px 12px;border:1px solid var(--border-subtle);border-radius:8px}.sidebar-row input:read-only{background:#f9fafb;color:var(--text-main)}.sidebar-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a40;display:flex;justify-content:flex-end;z-index:40}.sidebar-content{width:100%;max-width:560px;background:#fff;height:100vh;box-shadow:-10px 0 25px #94a3b873;display:flex;flex-direction:column;overflow:auto}.sidebar-panel-header{display:flex;justify-content:space-between;align-items:center;padding:18px 22px 12px}.sidebar-panel-header h2{margin:0;font-size:1.2rem}.sidebar-close{background:none;border:none;font-size:2rem;color:var(--text-muted);cursor:pointer;width:40px;height:40px}.sidebar-form{display:flex;flex-direction:column;flex:1;min-height:0}.sidebar-body{display:flex;flex-direction:column;gap:16px;padding:8px 22px 20px;min-height:0;overflow:auto}.sidebar-row{display:flex;flex-direction:column;gap:16px}.sidebar-row label{display:flex;flex-direction:column;gap:6px;font-size:.85rem;font-weight:500}.sidebar-row input,.sidebar-row select{border-radius:10px;border:1px solid #d1d5db;background:#fff;color:#111827;font-size:.9rem;padding:8px 12px;height:42px}.sidebar-row textarea{border-radius:10px;border:1px solid #d1d5db;background:#fff;color:#111827;font-size:.9rem;padding:8px 12px;min-height:6rem;resize:vertical;font-family:inherit}.group-check{flex-direction:row!important;align-items:center;gap:8px}.group-check input{width:auto;height:auto}.sidebar-actions{display:flex;justify-content:flex-end;gap:12px;padding:14px 22px 20px;margin-top:auto}.sidebar-tabs{display:flex;gap:4px;padding:0 22px;border-bottom:2px solid var(--border-subtle)}.sidebar-tab{padding:10px 16px;font-size:.9rem;font-weight:500;color:var(--text-muted);background:transparent;border:none;border-bottom:2px solid transparent;cursor:pointer}.sidebar-tab--active{color:var(--text-main);border-bottom-color:var(--accent)}.registry-tree{width:100%}.registry-tree-header{display:grid;grid-template-columns:minmax(0,1fr) 7.5rem 20%;align-items:center;column-gap:8px;background:#e5e7eb;color:var(--text-main);font-weight:600;padding:.65rem .75rem;border-bottom:1px solid var(--border-subtle)}.registry-tree-header-users,.audience-tree-count{text-align:right}.audience-tree{list-style:none;margin:0;padding:0}.audience-tree-node{font-size:.95rem}.audience-tree-row{display:grid;grid-template-columns:minmax(0,1fr) 7.5rem 20%;align-items:center;column-gap:8px;padding:.5rem .75rem;border-bottom:1px solid var(--border-subtle)}.audience-tree-main{display:flex;align-items:center;gap:8px;min-width:0;padding-left:calc(var(--tree-depth, 0) * 20px)}.audience-tree-toggle,.audience-tree-toggle-spacer{flex:0 0 28px;width:28px;height:28px}.audience-tree-toggle{display:inline-flex;align-items:center;justify-content:center;padding:0;border:none;background:transparent;color:#111827;cursor:pointer}.audience-tree-toggle-icon{display:block;width:16.5px;height:16.5px}.audience-tree-toggle--open .audience-tree-toggle-icon{transform:rotate(90deg)}.audience-tree-name{flex:1;min-width:0}.audience-tree-actions{display:flex;flex-shrink:0;align-items:center;justify-content:flex-end;gap:6px}.tree-context{display:inline-flex;position:relative}.tree-context-trigger{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:none;border-radius:6px;background:transparent;color:var(--text-muted);cursor:pointer}.tree-context-trigger:hover:not(:disabled),.tree-context-trigger[aria-expanded=true]{background:var(--bg-hover);color:var(--text-main)}.tree-context-trigger:disabled{opacity:.6;cursor:not-allowed}.tree-context-menu{position:fixed;z-index:30;min-width:10.5rem;padding:4px 0;background:#fff;border:1px solid #d1d5db;border-radius:8px;box-shadow:0 8px 24px #1118271f}.tree-context-item{display:block;width:100%;padding:8px 12px;border:none;background:transparent;color:var(--text-main);font-size:.9rem;text-align:left;cursor:pointer}.tree-context-item:hover:not(:disabled){background:var(--bg-hover)}.tree-context-item--danger{color:#dc2626}.tree-context-item:disabled{opacity:.6;cursor:not-allowed}.constructor-meta{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:16px}.constructor-meta .registry-search{flex:1;min-width:16rem}.constructor-tabs{display:flex;align-items:center;gap:12px;margin-bottom:16px;border-bottom:2px solid var(--border-subtle);flex-shrink:0}.constructor-tabs-list{display:flex;flex:1;min-width:0;gap:4px}.constructor-tabs-actions{display:flex;flex-shrink:0;align-items:center;gap:8px;padding-bottom:6px}.constructor-tab{padding:10px 16px;font-size:.9rem;font-weight:500;color:var(--text-muted);background:transparent;border:none;border-bottom:2px solid transparent;cursor:pointer}.constructor-tab--active{color:var(--text-main);border-bottom-color:var(--accent)}.constructor-form{display:flex;flex-direction:column;gap:16px;width:100%}.constructor-form label,.constructor-logo{display:flex;flex-direction:column;gap:6px;font-size:.85rem;font-weight:500}.constructor-status{display:flex;flex-direction:column;align-items:flex-start;gap:6px;width:fit-content;max-width:100%;font-size:.85rem;font-weight:500}.constructor-form input:not([type=file]):not([type=checkbox]):not(.select-control-combobox-input):not(.date-field-native),.constructor-form textarea{width:100%;border-radius:10px;border:1px solid #d1d5db;background:#fff;color:#111827;font-size:.9rem;padding:8px 12px;font-family:inherit}.constructor-form input:not([type=file]):not([type=checkbox]):not(.select-control-combobox-input):not(.date-field-native){height:42px}.constructor-form textarea{min-height:6rem;resize:vertical}.constructor-form .constructor-assign-item{display:flex;flex-direction:row;align-items:center;gap:8px;margin:0;min-width:0;flex:1;font-weight:400}.date-field{position:relative;display:inline-flex;align-items:center;gap:8px;width:11.5rem;min-width:11.5rem;height:36px;padding:0 10px;border:1px solid #d1d5db;border-radius:10px;background:#fff;color:var(--text-main);box-sizing:border-box}.date-field-text{flex:1;min-width:0;font-size:.9rem;font-weight:400;line-height:1;white-space:nowrap}.date-field--empty .date-field-text{color:var(--text-muted)}.date-field-icon{flex-shrink:0;color:var(--text-muted)}.date-field-native{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;margin:0;padding:0;border:none;opacity:0;cursor:pointer}.date-field-native:focus,.date-field-native:focus-visible{outline:none;box-shadow:none}.logo-upload-input{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.logo-upload{width:10vh;height:10vh;padding:0;border:1px solid #d1d5db;border-radius:10px;background:#fff;overflow:hidden;cursor:pointer;display:inline-flex;align-items:center;justify-content:center}.logo-upload img{width:100%;height:100%;object-fit:cover}.logo-upload-placeholder{font-size:.8rem;color:var(--text-muted)}.constructor-video-file{display:flex;flex-direction:column;align-items:flex-start;gap:6px;font-size:.85rem;font-weight:500}.constructor-file-hint,.constructor-file-meta{margin:0;font-size:.8rem;font-weight:400;color:var(--text-muted)}.constructor-video-preview{width:100%;max-width:40rem;aspect-ratio:16 / 9;background:#111827;border-radius:10px}.constructor-video-error{color:#7f1d1d;margin:0}.html-constructor{display:flex;flex-direction:column;gap:12px;width:100%}.longread-constructor{flex:1;min-height:0;overflow:hidden}.longread-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:2px;padding:6px 8px;background:#f3f4f6;border:1px solid #e5e7eb;border-radius:10px;flex-shrink:0}.longread-editor-scroll{flex:1;min-height:0;overflow:auto;border:1px solid #d1d5db;border-radius:10px;background:#fff}.longread-tool{display:inline-flex;align-items:center;justify-content:center;min-width:32px;height:32px;padding:0 6px;border:none;border-radius:6px;background:transparent;color:#6b7280;cursor:pointer}.longread-tool:hover:not(:disabled){background:#e5e7eb;color:#374151}.longread-tool.is-active{background:#e8e7f5;color:#4f46e5}.longread-tool:disabled{opacity:.4;cursor:default}.longread-tool:focus,.longread-tool:focus-visible{outline:none;box-shadow:none}.longread-tool--menu{gap:2px;padding:0 4px 0 6px}.longread-tool--wide{gap:6px;padding:0 10px;font-size:.875rem}.longread-toolbar svg,.longread-tool-option svg{width:16px;height:16px;flex-shrink:0}.longread-toolbar svg *,.longread-tool-option svg *{fill:none;stroke:currentColor;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}.longread-tool-chevron{width:12px;height:12px;color:currentColor}.longread-tool--menu[aria-expanded=true] .longread-tool-chevron{transform:rotate(180deg)}.longread-tool-sep{width:1px;height:18px;margin:0 6px;background:#d1d5db}.longread-tool-menu{position:fixed;z-index:30;padding:4px;background:#fff;border:1px solid #d1d5db;border-radius:10px;box-shadow:0 8px 24px #1118271f}.longread-tool-option{display:flex;align-items:center;gap:8px;width:100%;padding:8px 10px;border:none;border-radius:6px;background:transparent;color:var(--text-main);font-size:.9rem;font-family:inherit;text-align:left;cursor:pointer}.longread-tool-option:hover{background:var(--bg-hover)}.longread-tool-option.is-active{background:var(--accent-soft);color:var(--accent)}.longread-tool-option:focus,.longread-tool-option:focus-visible{outline:none;box-shadow:none}.longread-tool-link{display:flex;flex-direction:column;gap:8px;padding:6px}.longread-tool-link input{width:100%;height:36px;padding:8px 10px;border:1px solid #d1d5db;border-radius:8px;font-size:.9rem;font-family:inherit}.longread-tool-link input:focus,.longread-tool-link input:focus-visible{outline:none;box-shadow:none}.longread-tool-link-actions{display:flex;gap:6px}.longread-editor{min-height:100%;padding:12px 14px;border:none;background:transparent;line-height:1.6}.longread-editor:focus,.longread-editor:focus-visible,.longread-editor.ProseMirror:focus,.longread-editor.ProseMirror:focus-visible{outline:none;box-shadow:none}.longread-editor p.is-editor-empty:first-child:before,.longread-editor p.is-empty:first-child:before{content:attr(data-placeholder);float:left;height:0;color:var(--text-muted);pointer-events:none}.longread-editor h1,.longread-editor h2,.longread-editor h3{margin:.8em 0 .4em;line-height:1.25}.longread-editor ul,.longread-editor ol{padding-left:1.4rem}.longread-editor ul[data-type=taskList]{list-style:none;padding-left:0}.longread-editor ul[data-type=taskList] li,.longread-editor .longread-task-item{display:grid;grid-template-columns:1.15em minmax(0,1fr);column-gap:8px;align-items:start;list-style:none}.longread-editor ul[data-type=taskList] li>label,.longread-editor .longread-task-item>label{grid-column:1;grid-row:1;display:flex;align-items:center;justify-content:center;width:1.15em;height:1.6em;margin:0;padding:0;-webkit-user-select:none;user-select:none}.longread-editor ul[data-type=taskList] li>div,.longread-editor .longread-task-item>div{grid-column:2;grid-row:1;min-width:0}.longread-editor ul[data-type=taskList] li p,.longread-editor .longread-task-item p{margin:0;line-height:1.6}.longread-editor ul[data-type=taskList] input[type=checkbox]{margin:0;width:1em;height:1em}.longread-editor ul[data-type=taskList] input[type=checkbox]:focus,.longread-editor ul[data-type=taskList] input[type=checkbox]:focus-visible{outline:none;box-shadow:none}.longread-editor mark{border-radius:4px;background:#fef9c3}.longread-editor [style*="text-align: center"]{text-align:center}.longread-editor [style*="text-align: right"]{text-align:right}.longread-editor [style*="text-align: justify"]{text-align:justify}.longread-editor blockquote{margin:.8em 0;padding:0 0 0 12px;border-left:3px solid #d1d5db;color:var(--text-muted)}.longread-editor pre{margin:.8em 0;padding:12px 14px;border-radius:8px;background:#f3f4f6;overflow:auto;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.9rem}.longread-editor .longread-image,.longread-editor img{max-width:100%;height:auto;border-radius:8px}.longread-link{color:var(--accent);text-decoration:underline}.material-tree{list-style:none;margin:0;padding:0}.material-tree-node{font-size:.95rem}.material-tree-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(8rem,18rem) 4.5rem;align-items:center;column-gap:8px;padding:.5rem .75rem;border-bottom:1px solid var(--border-subtle)}.material-tree-main{display:flex;align-items:center;gap:8px;min-width:0;padding-left:calc(var(--tree-depth, 0) * 20px)}.material-tree-text{min-width:0}.material-tree-flag{font-size:.8rem;color:#166534;text-align:right;min-width:0;overflow-wrap:anywhere}.material-tree-actions{display:flex;flex-shrink:0;align-items:center;justify-content:flex-end;gap:6px}.program-structure{position:relative;display:flex;flex-direction:column;flex:1;min-height:0;width:100%}.program-structure-palette{position:absolute;left:12px;top:50%;z-index:5;display:flex;flex-direction:column;gap:4px;width:76px;padding:8px;background:#fff;border:1px solid #d1d5db;border-radius:16px;box-shadow:0 10px 30px #11182714;transform:translateY(-50%)}.program-palette-tool{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;width:100%;min-height:58px;padding:8px 4px;border:none;border-radius:12px;background:transparent;color:#111827;font-family:inherit;font-size:.72rem;font-weight:500;line-height:1.2;cursor:pointer}.program-palette-tool:hover:not(:disabled){background:#f3f4f6}.program-palette-tool--active{background:var(--accent-soft);color:var(--accent)}.program-palette-tool:focus,.program-palette-tool:focus-visible{outline:none;box-shadow:none}.program-palette-tool:disabled{opacity:.45;cursor:not-allowed}.program-palette-split{height:1px;margin:4px 8px;background:#e5e7eb}.program-palette-color{width:100%}.program-palette-tool .program-canvas-color-trigger{pointer-events:none}.program-structure-stage{display:flex;flex:1;flex-direction:column;min-width:0;min-height:0;padding-left:100px}.program-structure-boards{flex:1;min-height:0;overflow:auto;display:flex;flex-direction:column;align-items:stretch;gap:20px}.program-structure--place-lesson .program-module-canvas,.program-structure--place-block .program-lesson-canvas{cursor:copy;box-shadow:0 0 0 2px var(--accent)}.program-structure--paint .program-structure-stage{cursor:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%3e%3cpath%20d='m9.06%2011.9%208.07-8.06a2.85%202.85%200%201%201%204.03%204.03l-8.06%208.08'%20stroke='%23ffffff'%20stroke-width='3.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M7.07%2014.94c-1.66%200-3%201.35-3%203.02%200%201.33-2.5%201.52-2%202.02%201.08%201.1%202.49%202.02%204%202.02%202.2%200%204-1.8%204-4.04a3.01%203.01%200%200%200-3-3.02z'%20stroke='%23ffffff'%20stroke-width='3.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='m9.06%2011.9%208.07-8.06a2.85%202.85%200%201%201%204.03%204.03l-8.06%208.08'%20stroke='%23111827'%20stroke-width='1.75'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M7.07%2014.94c-1.66%200-3%201.35-3%203.02%200%201.33-2.5%201.52-2%202.02%201.08%201.1%202.49%202.02%204%202.02%202.2%200%204-1.8%204-4.04a3.01%203.01%200%200%200-3-3.02z'%20stroke='%23111827'%20stroke-width='1.75'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3c/svg%3e") 5 20,pointer}.program-structure--paint .program-structure-stage *{cursor:inherit}.program-structure--paint .program-structure-stage input,.program-structure--paint .program-structure-stage textarea{cursor:text}.program-structure--move .program-module-canvas{display:flex;flex-direction:column;padding-left:28px;cursor:default}.program-structure--move .program-module-canvas>.program-canvas-grip{position:absolute;left:0;top:50%;transform:translateY(-50%)}.program-structure--move .program-lesson-canvas,.program-structure--move .program-block-card{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:start;column-gap:8px;padding-left:0;cursor:default}.program-structure--move .program-lesson-canvas>.program-canvas-grip,.program-structure--move .program-block-card>.program-canvas-grip{grid-column:1;grid-row:1 / -1;align-self:center}.program-structure--move .program-lesson-canvas>:not(.program-canvas-grip),.program-structure--move .program-block-card>:not(.program-canvas-grip){grid-column:2}.program-structure--move .program-lesson-canvas--expanded{grid-template-rows:auto minmax(0,1fr)}.program-structure--move .program-canvas--dragging{cursor:grabbing;opacity:.45}.program-structure--move .program-canvas--drop-before,.program-structure--move .program-canvas--drop-after{background:#f3f4f6}.program-module-canvas{position:relative;display:flex;flex-direction:column;flex:0 0 auto;gap:16px;width:100%;min-height:0;padding:16px;background:#fff;border:2px solid #d1d5db;border-radius:12px}.program-module-canvas--expanded{flex:0 0 auto;max-height:75vh;overflow:hidden}.program-module-canvas--collapsed{gap:0;padding:12px 16px}.program-lesson-canvas{position:relative;display:flex;flex-direction:column;gap:12px;width:100%;flex:0 0 auto;min-height:0;padding:16px;background:#fff;border:1px solid #d1d5db;border-radius:12px}.program-lesson-canvas--expanded{flex:0 0 auto;min-height:12rem}.program-lesson-canvas--collapsed{gap:0;padding:12px 16px}.program-canvas-corner{position:absolute;top:10px;right:10px;z-index:1}.program-canvas-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.program-canvas-bar{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-shrink:0}.program-canvas-bar-main{display:flex;align-items:flex-start;gap:4px;min-width:0;flex:1}.program-canvas-bar-main .audience-tree-toggle{flex-shrink:0;margin-top:2px}.program-canvas-grip{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:22px;height:28px;border:1px solid #d1d5db;border-left:0;border-radius:0 6px 6px 0;background:#fff;color:#9ca3af;cursor:grab;-webkit-user-select:none;user-select:none;-webkit-user-drag:element;z-index:2}.program-canvas-grip svg{transform:rotate(90deg);pointer-events:none}.program-canvas-grip:active{cursor:grabbing}.program-canvas-heading{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}.program-canvas-title{margin:0;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:1.15rem;font-weight:600;line-height:1.3}.program-canvas-bar>.program-canvas-title{flex:1}.program-canvas-hint{position:fixed;z-index:40;max-width:min(22rem,calc(100vw - 16px));padding:8px 12px;border:1px solid #d1d5db;border-radius:8px;background:#fff;color:#111827;font-size:.85rem;font-weight:400;line-height:1.4;overflow-wrap:anywhere;box-shadow:0 8px 24px #1118271f;pointer-events:none}.program-canvas-meta{margin:0;font-size:.8rem;font-weight:400;line-height:1.3;color:var(--text-muted)}.program-canvas-bar .app-btn-icon{border-radius:50%}.program-canvas-bar-actions{display:flex;align-items:center;flex-shrink:0;gap:6px}.program-canvas-kicker{margin:0;font-size:.75rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--text-muted)}.program-canvas-fields{display:flex;flex-direction:column;gap:12px;min-width:0}.program-canvas-fields--compact{gap:8px}.program-canvas-field{display:flex;flex-direction:column;gap:6px;min-width:0;font-size:.85rem;font-weight:500}.program-canvas-field input,.program-canvas-field textarea{width:100%;border-radius:10px;border:1px solid #d1d5db;background:#fff;color:#111827;font-size:.9rem;padding:8px 12px;font-family:inherit}.program-canvas-field input{height:42px}.program-canvas-field textarea{min-height:4.5rem;resize:vertical}.program-canvas-fields--compact .program-canvas-field textarea{min-height:3.5rem}.program-canvas-children{display:flex;flex-direction:column;align-items:flex-start;gap:12px;width:100%;flex:1;min-height:0}.program-module-lessons{display:flex;flex-direction:column;align-items:stretch;gap:12px;width:100%;flex:1 1 auto;min-height:0;overflow:auto}.program-lesson-blocks{display:flex;flex-direction:column;flex:1;min-height:0;width:100%}.program-lesson-blocks--filled{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,max(20rem,calc((100% - 36px)/4))),1fr));justify-content:start;align-items:stretch;gap:12px}.program-lesson-blocks--filled .program-block-card{min-width:min(100%,20rem);width:100%;max-width:min(100%,calc((100% - 36px)/4))}.program-block-card{display:flex;flex-direction:column;gap:8px;width:100%;min-width:0;box-sizing:border-box;padding:12px;border:1px solid #d1d5db;background:#fff;border-radius:10px}.program-canvas--bg-yellow{background:#fef9c3}.program-canvas--bg-green{background:#dcfce7}.program-canvas--bg-red{background:#fee2e2}.program-canvas--bg-blue{background:#e0f2fe}.program-canvas--bg-white{background:#fff}.program-canvas-color-trigger,.program-canvas-color-swatch{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;padding:0;border:1px solid #d1d5db;border-radius:50%;-webkit-appearance:none;-moz-appearance:none;appearance:none;outline:none;cursor:pointer;flex-shrink:0}.program-canvas-color-trigger{background:#dcfce7}.program-canvas-color-menu{position:fixed;z-index:50;display:flex;flex-direction:row;flex-wrap:nowrap;align-items:center;gap:8px;padding:6px 8px;border:1px solid #d1d5db;border-radius:999px;background:#fff;box-shadow:0 8px 24px #1118271f}.program-canvas-color-swatch--yellow{background:#fef9c3}.program-canvas-color-swatch--green{background:#dcfce7}.program-canvas-color-swatch--red{background:#fee2e2}.program-canvas-color-swatch--blue{background:#e0f2fe}.program-canvas-color-swatch--white{background:#fff}.program-canvas-color-swatch--selected{box-shadow:0 0 0 2px #111827}.program-block-attach{display:inline-flex;align-items:center;gap:8px;max-width:100%;min-height:28px;margin:0;padding:4px 8px 4px 6px;border:1px solid #d1d5db;border-radius:8px;background:#fff;color:#6b7280;font-family:inherit;text-align:left;cursor:pointer}.program-block-attach-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.8rem;font-weight:400;line-height:1.3}.program-block-attach--on{color:var(--accent);border-color:var(--accent)}.program-block-attach--on .program-block-attach-name{color:#111827}.program-block-attach:hover:not(:disabled){background:#f3f4f6}.program-block-attach:focus,.program-block-attach:focus-visible{outline:none;box-shadow:none}.program-block-attach:disabled{opacity:.6;cursor:not-allowed}.program-block-description{display:block;width:100%;min-height:32px;margin:0;padding:6px 8px;overflow:hidden;border:1px solid #d1d5db;border-radius:8px;background:#fff;color:var(--text-muted);font-family:inherit;font-size:.8rem;font-weight:400;line-height:1.3;text-align:left;cursor:pointer}.program-block-description--filled{color:#111827}.program-block-description-html{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;pointer-events:none}.program-block-description-html p,.program-block-description-html h1,.program-block-description-html h2,.program-block-description-html h3{display:inline;margin:0;font-size:inherit;font-weight:inherit}.program-block-description-html br{display:none}.program-block-description:hover:not(:disabled){background:#f3f4f6}.program-block-description:focus,.program-block-description:focus-visible{outline:none;box-shadow:none}.program-block-description:disabled{opacity:.6;cursor:not-allowed}.program-block-description-form .program-block-description-editor,.program-block-description-editor.ProseMirror{width:100%;min-height:4.5rem;border:none;background:transparent;color:var(--text-main);font-family:inherit;font-size:1.75rem;font-weight:500;line-height:1.3;text-align:center}.program-block-description-editor:focus,.program-block-description-editor:focus-visible,.program-block-description-editor.ProseMirror:focus,.program-block-description-editor.ProseMirror:focus-visible{outline:none;box-shadow:none}.program-block-description-editor p.is-editor-empty:first-child:before,.program-block-description-editor p.is-empty:first-child:before{content:attr(data-placeholder);float:left;height:0;color:var(--text-muted);pointer-events:none}.program-block-description-editor a{color:var(--accent)}.program-material-modal{display:flex;flex-direction:column;width:min(32rem,90vw);max-height:min(36rem,80vh);overflow:hidden;background:#fff;border:1px solid #d1d5db;border-radius:12px;box-shadow:0 10px 30px #11182714}.program-material-modal--with-settings{width:min(56rem,94vw);max-height:min(40rem,88vh)}.program-material-modal-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px 10px;border-bottom:1px solid #d1d5db}.program-material-modal-head h2{margin:0;font-size:1.05rem;font-weight:600}.program-material-modal-body{display:flex;min-height:0;flex:1}.program-material-modal-main{display:flex;flex-direction:column;min-width:0;flex:1 1 0}.program-material-modal-toolbar{padding:12px 16px 0}.program-material-modal-list{display:flex;flex-direction:column;flex:1;min-height:0;overflow:auto;padding:8px 8px 12px}.program-material-option{display:flex;align-items:baseline;justify-content:space-between;gap:12px;width:100%;margin:0;padding:10px 12px;border:none;border-radius:8px;background:transparent;color:#111827;font-family:inherit;font-size:.9rem;text-align:left;cursor:pointer}.program-material-option:hover{background:#f3f4f6}.program-material-option--selected{background:var(--accent-soft)}.program-material-option-title{min-width:0;overflow-wrap:anywhere}.program-material-option-type{flex-shrink:0;font-size:.75rem;color:var(--text-muted)}.program-material-settings{display:flex;flex-direction:column;flex:0 0 20rem;width:20rem;min-height:0;overflow:auto;padding:12px 16px 16px;border-left:1px solid #d1d5db}.program-material-modal-foot{display:flex;justify-content:flex-end;margin-top:auto;padding-top:16px}.program-material-option:focus,.program-material-option:focus-visible{outline:none;box-shadow:none}.api-error-toast{position:fixed;right:20px;bottom:20px;z-index:50;max-width:22rem;padding:12px 16px;border-radius:8px;background:#fee2e2;color:#111827;font-size:.9rem;line-height:1.4}
