:root{font-family:system-ui,Segoe UI,Tahoma,sans-serif;color:#0f172a;background:#f1f5f9}body{margin:0}.page{max-width:1200px;margin:0 auto;padding:1.25rem 1.5rem 2rem}.app-header{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:1rem;margin-bottom:.5rem}header h1,header h2{margin:0 0 .25rem}.muted{color:#64748b;margin-top:0}.card{background:#fff;border-radius:12px;padding:1rem 1.25rem;margin:1rem 0;box-shadow:0 1px 3px #0f172a14}label{display:block;margin:.75rem 0}input,select{width:100%;margin-top:.35rem;padding:.5rem;box-sizing:border-box}.check{display:flex;align-items:center;gap:.5rem}.check input{width:auto;margin:0}button{margin-top:.75rem;padding:.5rem 1rem;cursor:pointer;border:1px solid #cbd5e1;border-radius:8px;background:#fff}button:hover{background:#f8fafc}.row{display:flex;gap:.5rem;flex-wrap:wrap}.err{color:#b91c1c}.ok{color:#15803d}.tab-nav{display:flex;gap:.35rem;flex-wrap:wrap}.tab-btn{margin:0;font-weight:600;border-radius:999px;padding:.45rem 1rem}.tab-btn--active{background:#0f172a;color:#fff;border-color:#0f172a}.platform-tree-page h2,.platform-tree-page h3{margin-top:0}.tree-header{display:flex;flex-wrap:wrap;justify-content:space-between;gap:1rem;align-items:flex-start}.tree-stats{display:flex;flex-wrap:wrap;gap:.4rem}.stat-pill{font-size:.85rem;padding:.25rem .65rem;border-radius:999px;background:#e2e8f0}.stat-pill--done{background:#dcfce7;color:#166534}.stat-pill--partial{background:#fef9c3;color:#854d0e}.stat-pill--planned{background:#e0e7ff;color:#3730a3}.infra-bar h3{margin-bottom:.5rem}.infra-grid{display:flex;gap:2rem;flex-wrap:wrap}.infra-label{display:block;font-size:.8rem;color:#64748b}.tree-layout{display:grid;grid-template-columns:1fr 1fr;gap:1rem}@media (max-width: 900px){.tree-layout{grid-template-columns:1fr}}.tree-panel{max-height:70vh;overflow:auto}.tree-toolbar{display:flex;flex-wrap:wrap;gap:.5rem;align-items:flex-end;margin-bottom:.75rem}.tree-toolbar label{margin:0;flex:1;min-width:140px}.tree-toolbar button{margin:0}.tree-root,.tree-children{list-style:none;margin:0;padding:0}.tree-row{display:flex;align-items:center;gap:.25rem;border-radius:8px;margin:1px 0}.tree-row--selected{background:#e0f2fe}.tree-toggle{width:1.5rem;height:1.5rem;padding:0;margin:0;border:none;background:transparent;font-size:.65rem;color:#64748b;flex-shrink:0}.tree-toggle--leaf{display:inline-block}.tree-label-btn{flex:1;display:flex;flex-wrap:wrap;align-items:center;gap:.35rem .5rem;margin:0;padding:.35rem .5rem;text-align:right;border:none;background:transparent}.tree-label-btn:hover{background:#f1f5f9}.tree-label{flex:1;min-width:120px;font-size:.9rem}.tree-phase{font-size:.7rem;color:#64748b;background:#f1f5f9;padding:.1rem .4rem;border-radius:4px}.tree-status{font-size:.72rem;padding:.1rem .45rem;border-radius:999px;font-weight:600}.tree-status--done{background:#dcfce7;color:#166534}.tree-status--partial{background:#fef9c3;color:#854d0e}.tree-status--planned{background:#e0e7ff;color:#3730a3}.tree-status--blocked{background:#fee2e2;color:#991b1b}.tree-status--future{background:#f1f5f9;color:#475569}.tree-detail{min-height:320px}.detail-meta{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:.75rem}.detail-phase,.detail-layer{font-size:.85rem;color:#475569}.path-list{margin:.25rem 0 0;padding-inline-start:1.25rem}.path-list code{font-size:.85rem;background:#f1f5f9;padding:.1rem .35rem;border-radius:4px}.mini-table{width:100%;border-collapse:collapse;font-size:.9rem;margin-top:.5rem}.mini-table th,.mini-table td{border-bottom:1px solid #e2e8f0;padding:.4rem .5rem;text-align:right}.link-btn{margin:0;padding:0;border:none;background:none;color:#0369a1;text-decoration:underline;cursor:pointer}.execution-order .exec-list,.demo-panel .exec-list{margin:0;padding-inline-start:1.25rem}.exec-list li{margin:.35rem 0}.exec-week{display:inline-block;min-width:4.5rem;font-size:.8rem;color:#64748b}.exec-phase{display:inline-block;min-width:3.5rem;font-weight:700;color:#0f172a;margin-inline-end:.5rem}.arch-diagram{background:#0f172a;color:#e2e8f0;padding:1rem;border-radius:8px;overflow-x:auto;font-size:.78rem;line-height:1.45;direction:ltr;text-align:left}.demo-banner{border-inline-start:4px solid #f59e0b}.demo-banner--shadow{border-inline-start-color:#6366f1;background:#eef2ff}.demo-error{border-inline-start:4px solid #dc2626;color:#991b1b}.demo-dl{display:grid;grid-template-columns:auto 1fr;gap:.35rem 1rem;margin:0 0 1rem}.demo-dl dt{font-weight:600;color:#475569}.demo-actions{display:flex;flex-wrap:wrap;gap:.5rem}.demo-toolbar{display:flex;flex-wrap:wrap;gap:.75rem;align-items:flex-end}.demo-summary{font-size:1.05rem;line-height:1.5;margin:.75rem 0}.demo-loading{text-align:center}.audit-pre{background:#0f172a;color:#e2e8f0;padding:1rem;border-radius:8px;overflow-x:auto;font-size:.8rem;direction:ltr;text-align:left}.clickable-row{cursor:pointer}.clickable-row:hover{background:#f8fafc}.card--highlight{border:1px solid #93c5fd;background:linear-gradient(135deg,#eff6ff,#fff)}.ok-box{margin-top:1rem;padding:.75rem 1rem;background:#ecfdf5;border-radius:8px;border:1px solid #6ee7b7}.data-table{width:100%;border-collapse:collapse;font-size:.9rem}.data-table th,.data-table td{padding:.5rem .75rem;border-bottom:1px solid #e2e8f0;text-align:right}.b2c-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:1rem}.b2c-card{border:1px solid #e2e8f0;border-radius:10px;padding:.75rem 1rem;background:#f8fafc}.b2c-card header{display:flex;justify-content:space-between;align-items:flex-start;gap:.5rem;margin-bottom:.5rem}.b2c-card h4{margin:0;font-size:1rem}.status-pill{font-size:.75rem;padding:.15rem .5rem;border-radius:999px;white-space:nowrap}.status-pill--done{background:#dcfce7;color:#166534}.status-pill--planned{background:#fef9c3;color:#854d0e}.login-page{min-height:70vh;display:flex;align-items:center;justify-content:center}.login-card{width:min(420px,100%)}.login-card h1{margin-top:0;font-size:1.35rem}.login-error{margin-bottom:.5rem}.login-divider{text-align:center;color:#94a3b8;margin:1rem 0}.google-btn{display:block;text-align:center;padding:.65rem 1rem;border-radius:8px;border:1px solid #cbd5e1;background:#fff;color:#0f172a;text-decoration:none;font-weight:600}.google-btn:hover{background:#f8fafc}.macro-chart-toolbar{display:flex;flex-wrap:wrap;gap:.75rem;align-items:flex-end}.macro-chart-toolbar label{margin:0;min-width:140px}.macro-chart-toolbar button{margin:0}.macro-chart-wrap{padding:.5rem .25rem 0}.macro-chart-meta{display:flex;flex-wrap:wrap;gap:1.25rem;font-size:.95rem}.macro-dot{display:inline-block;width:10px;height:10px;border-radius:50%;margin-inline-end:.35rem;vertical-align:middle}
