:root{--bg:#f6f7f9;--panel:#fff;--text:#16181d;--muted:#69707d;--border:#e2e5e9;--dark:#171a20;--danger:#b42318;--ok:#067647;--sidebar:280px}*{box-sizing:border-box}html,body{margin:0;min-height:100%;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;background:var(--bg);color:var(--text)}a{color:inherit;text-decoration:none}button,input{font:inherit}.app-shell{min-height:100vh;display:grid;grid-template-columns:var(--sidebar) minmax(0,1fr)}.sidebar{height:100vh;position:sticky;top:0;background:var(--panel);border-right:1px solid var(--border);padding:20px;display:flex;flex-direction:column;gap:20px}.brand{display:flex;flex-direction:column;padding-bottom:18px;border-bottom:1px solid var(--border)}.brand strong{font-size:20px}.brand span,.sidebar-bottom small{color:var(--muted);font-size:13px}.side-nav{display:flex;flex-direction:column;gap:6px;overflow:auto}.nav-item{display:flex;align-items:center;gap:9px;padding:10px 12px;border-radius:11px}.nav-item:hover{background:#f1f3f5}.nav-item.active{background:var(--dark);color:#fff}.nav-bullet{font-size:22px;line-height:1}.nav-empty{color:var(--muted);font-size:14px}.status-dot{margin-left:auto;font-size:10px;opacity:.72}.sidebar-bottom{margin-top:auto;border-top:1px solid var(--border);padding-top:14px;display:flex;gap:10px;align-items:center;justify-content:space-between}.auth-form{margin:0}.link-button{appearance:none;border:0;background:transparent;padding:0;color:var(--muted);cursor:pointer;font-size:13px}.link-button:hover{text-decoration:underline}.main{min-width:0}.topbar{height:58px;background:rgba(255,255,255,.94);border-bottom:1px solid var(--border);display:flex;align-items:center;padding:0 28px;position:sticky;top:0;z-index:10}.breadcrumbs{display:flex;gap:8px;align-items:center;color:var(--muted);font-size:13px;white-space:nowrap;overflow:auto}.breadcrumbs a:hover{text-decoration:underline}.menu-toggle{display:none;border:1px solid var(--border);background:#fff;border-radius:9px;padding:6px 9px;margin-right:12px}.page{padding:42px clamp(22px,5vw,72px);max-width:1250px;margin:0 auto}.hero{margin-bottom:28px}.hero h1{font-size:clamp(32px,5vw,54px);letter-spacing:-.035em;margin:8px 0 10px}.hero>p:last-child{color:var(--muted);font-size:18px;max-width:720px}.eyebrow{text-transform:uppercase;letter-spacing:.12em;font-weight:700;color:var(--muted);font-size:11px}.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:16px}.node-card{min-height:150px;background:#fff;border:1px solid var(--border);border-radius:18px;padding:20px;display:flex;flex-direction:column;gap:12px;transition:.15s ease}.node-card:hover{transform:translateY(-2px);box-shadow:0 14px 35px rgba(20,24,32,.07)}.node-card strong{font-size:20px}.card-meta{font-size:12px;color:var(--muted)}.card-arrow{margin-top:auto;font-size:20px}.empty-state,.notice,.login-card,.utility-card{background:#fff;border:1px solid var(--border);border-radius:18px;padding:24px}.empty-state{grid-column:1/-1}.empty-state h1,.empty-state h2{margin-top:4px}.empty-state p{color:var(--muted);max-width:700px}.notice{margin:0 0 22px;color:#344054}.badge{display:inline-block;background:#f2f4f7;border-radius:999px;padding:6px 9px;color:#475467;font-size:12px}.login-card{width:min(480px,100%);margin:38px auto}.login-card h1{margin-top:6px}.stack{display:flex;flex-direction:column;gap:16px}.stack label{font-size:13px;font-weight:650;display:flex;flex-direction:column;gap:7px}.stack input[type=text],.stack input[type=password],.stack input:not([type]){width:100%;border:1px solid #cfd4dc;border-radius:10px;padding:11px 12px;background:#fff}.check-row{flex-direction:row!important;align-items:flex-start;font-weight:500!important}.primary-button{border:0;background:var(--dark);color:#fff;border-radius:10px;padding:11px 16px;font-weight:700;cursor:pointer;text-align:center}.primary-button.inline{display:inline-block;margin-top:8px}.error-box,.success-box{padding:12px 14px;border-radius:10px;margin:12px 0 18px}.error-box{background:#fef3f2;color:var(--danger);border:1px solid #fecdca}.success-box{background:#ecfdf3;color:var(--ok);border:1px solid #abefc6}.install-shell,.utility-card{width:min(900px,calc(100% - 32px));margin:40px auto}.utility-card{max-width:640px}code{background:#f2f4f7;padding:2px 5px;border-radius:5px}@media(max-width:800px){.app-shell{display:block}.sidebar{position:fixed;left:-290px;width:280px;z-index:30;transition:left .18s ease;box-shadow:18px 0 50px rgba(0,0,0,.12)}body.menu-open .sidebar{left:0}.menu-toggle{display:inline-block}.topbar{padding:0 16px}.page{padding:28px 18px}.hero h1{font-size:36px}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}

/* DocuMod Alfa · base modular */
.upgrade-banner{background:#fff7d6;border-bottom:1px solid #eadb9d;padding:10px 18px;text-align:center;font-size:13px;color:#5d4b00}.upgrade-banner a{text-decoration:underline;font-weight:700}.nav-branch{display:block}.nav-children{margin-left:14px;padding-left:8px;border-left:1px solid var(--border);display:flex;flex-direction:column;gap:3px}.nav-children .nav-item{padding-top:8px;padding-bottom:8px;font-size:13px}.module-list{display:flex;flex-direction:column;gap:18px}.module-item{position:relative}.module-section,.module-link{max-width:720px}.module-item .node-card{width:100%}.text-module{background:#fff;border:1px solid var(--border);border-radius:18px;padding:24px}.text-module.standalone{max-width:900px}.text-module-header{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;border-bottom:1px solid var(--border);padding-bottom:14px;margin-bottom:18px}.text-module-header h2{margin:4px 0 0;font-size:24px}.rich-text{line-height:1.72;color:#2f3540}.rich-text p{margin:0 0 1em}.rich-text p:last-child{margin-bottom:0}.text-empty{color:var(--muted);font-style:italic}.card-icon{font-size:24px;line-height:1}.admin-toolbar{display:flex;gap:10px;align-items:center;margin:0 0 18px}.primary-button.compact,.secondary-button{display:inline-flex;align-items:center;justify-content:center;border-radius:10px;padding:9px 13px;font-weight:700;font-size:13px}.secondary-button{background:#fff;border:1px solid var(--border);color:var(--text)}.secondary-button:hover{background:#f7f8fa}.node-admin-controls{display:flex;gap:5px;align-items:center;margin:0 0 6px;font-size:12px}.node-admin-controls a,.node-admin-controls button{border:1px solid var(--border);background:#fff;border-radius:7px;padding:5px 8px;color:var(--muted);font:inherit;cursor:pointer}.node-admin-controls form{margin:0}.node-admin-controls .danger-link{color:var(--danger)}.admin-editor{background:#fff;border:1px solid var(--border);border-radius:18px;padding:26px;max-width:860px}.admin-editor h1{margin-top:5px}.admin-node-form select,.admin-node-form textarea,.admin-node-form input[type=url]{width:100%;border:1px solid #cfd4dc;border-radius:10px;padding:11px 12px;background:#fff;font:inherit}.admin-node-form textarea{resize:vertical;min-height:180px}.admin-node-form small{font-weight:400;color:var(--muted)}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.form-actions{display:flex;gap:10px;align-items:center}.danger-button{border:0;background:#b42318;color:#fff;border-radius:10px;padding:11px 16px;font-weight:700;cursor:pointer}.warning-box{padding:12px 14px;border-radius:10px;margin:12px 0 18px;background:#fffaeb;color:#7a2e0e;border:1px solid #fedf89}.flash-message{margin:0 0 20px}.module-link .link-card{border-style:dashed}
@media(max-width:650px){.form-grid{grid-template-columns:1fr}.node-admin-controls{flex-wrap:wrap}.admin-editor{padding:18px}.text-module{padding:18px}}

/* Fase C · visor HTML */
.html-viewer-page{display:flex;flex-direction:column;gap:1rem;min-height:calc(100vh - 7rem)}
.viewer-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem}.viewer-heading h1{margin:.15rem 0}.viewer-meta,.file-current{color:var(--muted,#64748b);font-size:.9rem}
.html-viewer-stage{position:relative;flex:1;min-height:65vh;border:1px solid var(--border,#dbe2ea);border-radius:14px;overflow:hidden;background:#fff}
.html-viewer-frame{display:block;width:100%;height:72vh;border:0;background:#fff}.html-viewer-loading{position:absolute;inset:0;display:grid;place-items:center;background:#fff;z-index:1;color:var(--muted,#64748b)}.html-viewer-loading[hidden]{display:none}
.html-card .module-icon{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.file-current{margin:.4rem 0 0}
@media (max-width:720px){.viewer-heading{flex-direction:column}.html-viewer-frame{height:68vh}.html-viewer-stage{min-height:60vh}}


/* Fase D · visor PDF */
.pdf-viewer-page{display:flex;flex-direction:column;gap:1rem;min-height:calc(100vh - 7rem)}
.pdf-viewer-stage{position:relative;flex:1;min-height:68vh;border:1px solid var(--border,#dbe2ea);border-radius:14px;overflow:hidden;background:#525659}
.pdf-viewer-frame{display:block;width:100%;height:76vh;border:0;background:#525659}
.pdf-card .module-icon{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.78rem;font-weight:800}
@media (max-width:720px){.pdf-viewer-frame{height:70vh}.pdf-viewer-stage{min-height:62vh}}
