*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}body{color:#d8dee5;background:#0f1216;font-family:Segoe UI,system-ui,sans-serif;overflow:hidden}.app{flex-direction:column;height:100%;display:flex}.topbar{background:#171c22;border-bottom:1px solid #262d36;justify-content:space-between;align-items:center;gap:16px;padding:10px 16px;display:flex}.brand{align-items:baseline;gap:10px;display:flex}.brand-name{color:#f3a712;letter-spacing:.5px;font-size:20px;font-weight:700}.brand-sub{color:#8a95a3;font-size:12px}.disclaimer{color:#6b7683;text-align:right;max-width:480px;font-size:11px}.main{flex:1;min-height:0;display:flex}.viewport-wrap{flex:1;min-width:0;position:relative}.legend{color:#a8b2bd;pointer-events:none;background:#0f1216cc;border:1px solid #262d36;border-radius:6px;gap:14px;padding:6px 12px;font-size:11px;display:flex;position:absolute;bottom:12px;left:12px}.legend span{align-items:center;gap:5px;display:flex}.legend i{border-radius:2px;width:14px;height:5px;display:inline-block}.sidebar{background:#171c22;flex-direction:column;width:380px;min-height:0;display:flex}.sidebar.left{border-right:1px solid #262d36;width:340px}.sidebar.right{border-left:1px solid #262d36}.panel-head{color:#f3a712;text-transform:uppercase;letter-spacing:.5px;background:#131a22;border-bottom:1px solid #262d36;justify-content:space-between;align-items:center;padding:8px 12px;font-size:12px;font-weight:700;display:flex}.collapse-btn{color:#9aa8b8;cursor:pointer;background:#1b222b;border:1px solid #2c3542;border-radius:5px;width:24px;height:22px;font-size:13px;line-height:1}.collapse-btn:hover{filter:brightness(1.3)}.sidebar-collapsed{color:#8a95a3;cursor:pointer;background:#171c22;border:none;flex-direction:column;flex-shrink:0;align-items:center;gap:10px;width:30px;padding-top:12px;display:flex}.sidebar-collapsed:hover{color:#c7d2de;background:#1c232b}.sidebar-collapsed.left{border-right:1px solid #262d36}.sidebar-collapsed.right{border-left:1px solid #262d36}.vertical-label{writing-mode:vertical-rl;letter-spacing:1px;text-transform:uppercase;font-size:11px;font-weight:700}.status-dot{border-radius:50%;flex-shrink:0;width:9px;height:9px}.status-dot.good{background:#4ade80}.status-dot.bad{background:#e5484d}.score-strip{text-align:left;border:none;border-bottom:1px solid #262d36;padding:9px 12px;font-size:13px;font-weight:600}.score-strip.good{color:#4ade80;background:#10281a}.score-strip.bad{color:#ff8a8e;background:#2f1417}.mass-strip{color:#c7d2de;background:#131a22;border-bottom:1px solid #262d36;flex-direction:column;gap:2px;padding:7px 12px;font-size:12px;display:flex}.mass-strip .mass-detail{color:#7d8aa0;font-size:11px}.continuity{border-top:1px dashed #2c3542;margin-top:6px;padding-top:6px}.section-title.small{opacity:.85;font-size:11px}button.mini{color:#9aa8b8;cursor:pointer;background:#232b35;border:1px solid #2c3542;border-radius:4px;margin-left:4px;padding:1px 6px;font-size:10px}.viewport-toolbar{z-index:5;gap:6px;display:flex;position:absolute;top:10px;left:10px}.viewport-toolbar .toggle{color:#9aa8b8;cursor:pointer;background:#1b222b;border:1px solid #2c3542;border-radius:6px;padding:4px 10px;font-size:12px}.viewport-toolbar .toggle:hover{filter:brightness(1.25)}.viewport-toolbar .toggle.active{color:#aecdf0;background:#24384d;border-color:#3e5b7d}.node-label.anchor{color:#ffd7ab;border:1px solid #fb923c}.tabs{border-bottom:1px solid #262d36;display:flex}.tabs button{color:#8a95a3;cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;flex:1;padding:10px;font-size:13px}.tabs button.active{color:#f3a712;border-bottom-color:#f3a712}.rule-panel{flex:1;overflow-y:auto}.score{background:#1a2028;border-bottom:1px solid #262d36;padding:12px 14px;font-size:14px}.score-good{color:#4ade80;font-weight:700}.score-bad{color:#e5484d;font-weight:700}.score-fail-count{color:#e5484d}.rule-list{list-style:none}.rule-item{cursor:pointer;border-bottom:1px solid #21272f;padding:10px 14px}.rule-item:hover{background:#1c232b}.rule-item.active{background:#1e2836;box-shadow:inset 3px 0 #3b82f6}.rule-head{align-items:center;gap:8px;margin-bottom:3px;display:flex}.rule-id{color:#8a95a3;font-family:Consolas,monospace;font-size:11px}.badge{letter-spacing:.5px;border-radius:3px;padding:2px 6px;font-size:10px;font-weight:700}.badge.pass{color:#4ade80;background:#14351f}.badge.fail{color:#ff8a8e;background:#3b1519}.badge.warn{color:#fbbf24;background:#3a2c0d}.badge.manual{color:#93b4f0;background:#1e2836}.rule-title{font-size:13px;line-height:1.35}.rule-detail{color:#8a95a3;margin-top:3px;font-size:11px}.rule-limit{color:#6b7683}.rule-note{color:#b08a3e;margin-top:3px;font-size:11px;font-style:italic}.inspector{flex:1;padding:0 0 8px;overflow-y:auto}.subtabs{z-index:3;background:#171c22;border-bottom:1px solid #262d36;flex-wrap:wrap;gap:4px;padding:8px 10px;display:flex;position:sticky;top:0}.subtabs button{color:#9aa8b8;cursor:pointer;background:#1b222b;border:1px solid #2c3542;border-radius:999px;align-items:center;gap:5px;padding:4px 10px;font-size:11px;font-weight:600;display:flex}.subtabs button:hover{filter:brightness(1.25)}.subtabs button.active{color:#f3a712;background:#3a2f10;border-color:#f3a712}.sel-dot{background:#3b82f6;border-radius:50%;width:6px;height:6px;display:inline-block}.section{border-bottom:1px solid #21272f;padding:10px 14px}.section-title{color:#f3a712;text-transform:uppercase;letter-spacing:.5px;margin-bottom:8px;font-size:12px;font-weight:700}.section.muted{color:#6b7683;font-size:13px}.num-field{color:#a8b2bd;justify-content:space-between;align-items:center;margin-bottom:6px;font-size:12px;display:flex}.num-field input{color:#d8dee5;background:#0f1216;border:1px solid #2a323c;border-radius:4px;width:110px;padding:4px 8px;font-size:13px}.num-field input:focus{border-color:#3b82f6;outline:none}.check-field{color:#a8b2bd;align-items:center;gap:8px;margin-top:4px;font-size:12px;display:flex}.actions{flex-direction:column;gap:8px;display:flex}.actions button,.file-btn{color:#d8dee5;cursor:pointer;text-align:center;background:#212a34;border:1px solid #2f3945;border-radius:5px;padding:8px;font-size:13px}.actions button:hover,.file-btn:hover{background:#28323e}.actions button.danger{color:#ff8a8e}.type-select{color:#d8dee5;background:#0f1216;border:1px solid #2a323c;border-radius:4px;width:100%;margin-bottom:8px;padding:5px 8px;font-size:12px}.type-select.small{width:220px;margin-bottom:0}.add-row{gap:8px;display:flex}.add-row button{color:#d8dee5;cursor:pointer;background:#212a34;border:1px solid #2f3945;border-radius:5px;flex:1;padding:7px;font-size:12px}.add-row button:hover{background:#28323e}.pending-box{background:#1e2836;border:1px solid #3b82f6;border-radius:5px;flex-direction:column;gap:8px;padding:8px;font-size:12px;display:flex}.pending-box button{color:#d8dee5;cursor:pointer;background:#212a34;border:1px solid #2f3945;border-radius:4px;padding:5px}.member-info{color:#a8b2bd;margin:6px 0;font-size:12px}.removal-ok{color:#2dd4bf;background:#10322e;border-radius:4px;margin:6px 0;padding:7px 9px;font-size:12px;line-height:1.4}.removal-bad{color:#ff8a8e;background:#33181b;border-radius:4px;margin:6px 0;padding:7px 9px;font-family:Consolas,monospace;font-size:12px;line-height:1.4}button.full{cursor:pointer;background:#212a34;border:1px solid #2f3945;border-radius:5px;width:100%;margin-top:4px;padding:7px;font-size:12px}button.full:disabled{opacity:.45;cursor:not-allowed}.node-label.free{color:#8a95a3;font-weight:400}button.primary{color:#f3a712!important;background:#3a2f10!important;border-color:#f3a712!important}button.primary:hover{background:#4a3c15!important}.wizard{flex:1;overflow-y:auto}.wizard-progress{gap:6px;padding:12px 14px 4px;display:flex}.wizard-dot{background:#2a323c;border-radius:2px;flex:1;height:4px}.wizard-dot.current{background:#f3a712}.wizard-dot.done{background:#4ade80}.wizard-guide{color:#a8b2bd;background:#1a2028;border-left:3px solid #f3a712;border-radius:4px;margin-bottom:10px;padding:8px 10px;font-size:12px;line-height:1.45}.wizard-nav .add-row button{padding:9px;font-size:13px}.section-toggle{cursor:pointer;width:100%;color:inherit;text-align:left;background:0 0;border:none;justify-content:space-between;align-items:center;padding:0;display:flex}.section-toggle:hover .chevron{color:#f3a712}.chevron{color:#8a95a3;font-size:12px}.anchor-list{flex-direction:column;gap:3px;display:flex}.anchor-row{color:#a8b2bd;cursor:pointer;text-align:left;background:#1a2028;border:1px solid #0000;border-radius:4px;justify-content:space-between;align-items:center;gap:8px;padding:5px 8px;font-size:11px;display:flex}.anchor-row:hover{background:#1e2630}.anchor-row.active{color:#d8dee5;border-color:#3b82f6}.anchor-ok{color:#4ade80;font-weight:700}.anchor-bad{color:#ff8a8e;font-family:Consolas,monospace;font-weight:700}.node-label{color:#cfe1ff;white-space:nowrap;background:#0f1216bf;border-radius:3px;padding:1px 5px;font-size:11px;font-weight:700;transform:translate(10px,-10px)}.account{flex-shrink:0;align-items:center;gap:8px;display:flex}.account-btn{color:#c6d0db;cursor:pointer;white-space:nowrap;background:#1b222b;border:1px solid #2c3542;border-radius:6px;padding:5px 12px;font-size:12.5px}.account-btn:hover{filter:brightness(1.25)}.account-btn.primary{color:#1a1408;background:#f3a712;border-color:#f3a712;font-weight:600}.account-btn.danger{color:#ff8a8e}.account-btn:disabled{opacity:.6;cursor:default}.project-chip{color:#aecdf0;white-space:nowrap;background:#24384d;border:1px solid #3e5b7d;border-radius:999px;padding:3px 10px;font-size:12px}.account-flash{color:#f3a712;max-width:260px;font-size:12px}.account-user{position:relative}.account-dropdown{z-index:40;background:#171c22;border:1px solid #2c3542;border-radius:6px;flex-direction:column;min-width:180px;display:flex;position:absolute;top:calc(100% + 6px);right:0;overflow:hidden}.account-dropdown button{color:#c6d0db;text-align:left;cursor:pointer;background:0 0;border:none;padding:9px 14px;font-size:13px}.account-dropdown button:hover{background:#212a34}.modal-overlay{z-index:200;z-index:50;background:#06080ba6;justify-content:center;align-items:flex-start;padding:8vh 16px;display:flex;position:fixed;inset:0}.modal{background:#171c22;border:1px solid #2c3542;border-radius:8px;flex-direction:column;width:100%;max-width:560px;max-height:82vh;display:flex;overflow:hidden}.modal-head{color:#e8edf3;border-bottom:1px solid #262d36;justify-content:space-between;align-items:center;padding:12px 16px;font-weight:600;display:flex}.modal-body{flex-direction:column;gap:12px;padding:16px;display:flex;overflow-y:auto}.modal-note{color:#8a95a3;font-size:12px;line-height:1.5}.modal-err{color:#ff8a8e;font-size:12.5px}.modal-section{text-transform:uppercase;letter-spacing:.08em;color:#6b7683;border-top:1px solid #262d36;margin-top:4px;padding-top:12px;font-size:11px}.modal-row{align-items:center;gap:8px;display:flex}.modal-row input{flex:1}.field{color:#a8b2bd;flex-direction:column;gap:5px;font-size:12.5px;display:flex}.field input,.modal-row input{color:#d8dee5;background:#0f1216;border:1px solid #2a323c;border-radius:4px;padding:7px 10px;font-size:13px}.field input:focus,.modal-row input:focus{border-color:#3b82f6;outline:none}.project-list{flex-direction:column;gap:8px;list-style:none;display:flex}.project-list li{background:#12171d;border:1px solid #262d36;border-radius:6px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;padding:9px 12px;font-size:13px;display:flex}.project-list li.current{border-color:#3e5b7d}.project-list li small{color:#8a95a3;margin-left:6px}.landing{z-index:300;background:radial-gradient(70% 50% at 50% -10%,#f3a71217,#0000 60%),repeating-linear-gradient(0deg,#0000 0 47px,#d8dee509 47px 48px),repeating-linear-gradient(90deg,#0000 0 47px,#d8dee509 47px 48px),#0f1216;position:fixed;inset:0;overflow-y:auto}.landing-topbar{justify-content:space-between;align-items:center;padding:14px 22px;animation:.4s both landing-fade;display:flex}.landing-logo{color:#f3a712;letter-spacing:.5px;font-size:17px;font-weight:700}.landing-account{color:#d8dee5;cursor:pointer;background:#171c22;border:1px solid #2c3542;border-radius:999px;align-items:center;gap:8px;padding:8px 16px;font-size:13px;font-weight:600;transition:border-color .15s,background .15s;display:flex}.landing-account:hover{background:#1c232b;border-color:#f3a712}.landing-account svg{color:#f3a712;width:17px;height:17px}.landing-inner{flex-direction:column;gap:24px;max-width:760px;margin:0 auto;padding:5vh 20px 64px;display:flex}.landing-inner>*{animation:.55s both landing-rise}.landing-inner>:nth-child(2){animation-delay:80ms}.landing-inner>:nth-child(3){animation-delay:.16s}.landing-inner>:nth-child(4){animation-delay:.24s}.landing-inner>:nth-child(5){animation-delay:.32s}@keyframes landing-rise{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}@keyframes landing-fade{0%{opacity:0}to{opacity:1}}@media (prefers-reduced-motion:reduce){.landing-inner>*,.landing-topbar{animation:none}}.landing-head{flex-direction:column;gap:6px;display:flex}.landing-brand{color:#f3a712;letter-spacing:.5px;font-size:clamp(40px,7vw,58px);font-weight:700;line-height:1}.landing-tag{color:#8a95a3;font-size:17px}.landing-intro{color:#d8dee5;max-width:66ch;font-size:15px;line-height:1.65}.landing-legal{color:#8a95a3;background:#171c22d9;border:1px solid #262d36;border-left:3px solid #6b7683;border-radius:6px;padding:14px 18px;font-size:12.5px}.landing-legal>b{color:#d8dee5;align-items:center;gap:7px;display:flex}.landing-legal svg{color:#f3a712;width:15px;height:15px}.landing-legal ul{flex-direction:column;gap:5px;margin-top:8px;padding-left:18px;display:flex}.landing-cta{text-align:left;color:#d8dee5;cursor:pointer;background:linear-gradient(135deg,#1c232b,#171c22);border:1px solid #3a2f10;border-radius:12px;align-items:center;gap:18px;padding:22px 24px;transition:border-color .18s,transform .18s,box-shadow .18s;display:flex}.landing-cta:hover{border-color:#f3a712;transform:translateY(-3px);box-shadow:0 8px 32px #f3a71224}.landing-cta:hover .landing-cta-arrow{transform:translate(5px)}.landing-cta-icon{color:#f3a712;background:#f3a7121f;border-radius:10px;flex-shrink:0;place-items:center;width:58px;height:58px;display:grid}.landing-cta-icon svg{width:34px;height:34px}.landing-cta-text{flex-direction:column;gap:5px;display:flex}.landing-cta-text b{font-size:19px}.landing-cta-text span{color:#8a95a3;font-size:13px;line-height:1.5}.landing-cta-arrow{color:#f3a712;margin-left:auto;font-size:26px;transition:transform .18s}.landing-skip{color:#6b7683;font-size:12.5px}.disclaimer-link{color:#f3a712;cursor:pointer;background:0 0;border:none;padding:0;font-size:11px;text-decoration:underline}.modal-wide{max-width:1100px}.admin-panel{flex-direction:column;display:flex;overflow:hidden}.admin-tabs{flex-wrap:wrap;gap:6px;padding:10px 14px 0;display:flex}.admin-panel .modal-err,.admin-filter{margin:8px 14px 0;font-size:12px}.admin-cards{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;padding:14px;display:grid}.admin-card{background:#10151b;border:1px solid #2c3542;border-radius:6px;flex-direction:column;gap:4px;padding:12px;display:flex}.admin-card b{font-size:20px}.admin-card span{color:#8ea0b5;font-size:11px}.admin-search{gap:6px;padding:10px 14px 0;display:flex}.admin-search input{color:inherit;background:#10151b;border:1px solid #2c3542;border-radius:4px;flex:1;padding:6px 8px;font-size:12px}.admin-table-wrap{padding:10px 14px;overflow:auto}.admin-table{border-collapse:collapse;width:100%;font-size:12px}.admin-table th,.admin-table td{text-align:left;vertical-align:top;border-bottom:1px solid #232b36;padding:6px 8px}.admin-table th{color:#8ea0b5;background:#171c22;font-weight:600;position:sticky;top:0}.admin-dim{color:#8ea0b5}.admin-chip{color:#9ec7f7;background:#1d3a5f;border-radius:999px;margin-left:6px;padding:1px 6px;font-size:10px;display:inline-block}.admin-chip.bad{color:#f1a3a6;background:#4a1d20}.admin-deleted td{opacity:.55}.admin-row-click{cursor:pointer}.admin-detail{background:#10151b}.admin-detail p{white-space:pre-wrap;margin:6px 0}.admin-pager{justify-content:center;gap:8px;padding:0 14px 12px;display:flex}.modal-tall{max-width:720px;height:min(82vh,700px)}.assistant-panel{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.assistant-thread{flex-direction:column;flex:1;gap:10px;padding:12px 14px;display:flex;overflow-y:auto}.assistant-hint{color:#8ea0b5;margin:8px 2px;font-size:12px}.assistant-msg{white-space:pre-wrap;word-break:break-word;border-radius:10px;max-width:88%;padding:8px 11px;font-size:13px;line-height:1.45}.assistant-msg.user{background:#1d3a5f;align-self:flex-end}.assistant-msg.assistant{background:#10151b;border:1px solid #2c3542;align-self:flex-start}.assistant-typing{color:#8ea0b5}.assistant-input{align-items:flex-end;gap:8px;padding:10px 14px 4px;display:flex}.assistant-input textarea{resize:none;color:inherit;background:#10151b;border:1px solid #2c3542;border-radius:6px;flex:1;padding:8px 10px;font-family:inherit;font-size:13px}.assistant-foot{color:#8ea0b5;justify-content:space-between;gap:10px;padding:6px 14px 12px;font-size:10.5px;display:flex}.assistant-notice{padding:14px;font-size:13px;line-height:1.5;overflow-y:auto}.assistant-notice ul{margin:8px 0 14px;padding-left:18px}.assistant-notice li{margin-bottom:6px}.assistant-panel .modal-err{margin:4px 14px}.rule-ask{color:#e6a817;cursor:pointer;background:0 0;border:none;margin-top:4px;padding:0;font-size:11px;text-decoration:underline}.assistant-msg.assistant{white-space:normal}.assistant-h{margin:6px 0 3px;font-weight:700}.assistant-li{padding-left:14px;position:relative}.assistant-li:before{content:"–";color:#8ea0b5;position:absolute;left:2px}.assistant-gap{height:6px}.page-body{background:linear-gradient(#171c22eb,#171c22eb),repeating-linear-gradient(0deg,#0000 0 39px,#1c232c 39px 40px),repeating-linear-gradient(90deg,#0000 0 39px,#1c232c 39px 40px);flex:1;justify-content:center;min-height:0;padding:18px;display:flex;overflow:hidden}.page-inner{background:#171c22;border:1px solid #2c3542;border-radius:8px;flex-direction:column;width:100%;max-width:1200px;min-height:0;display:flex;overflow:hidden}.page-inner.page-narrow{max-width:860px}.page-head{border-bottom:1px solid #2c3542;justify-content:space-between;align-items:center;padding:10px 14px;font-weight:600;display:flex}.page-inner .assistant-panel,.page-inner .admin-panel{flex:1;min-height:0}
