
:root{
 --bg:#eef0f5;--paper:#fff;--ink:#181b22;--muted:#7e8592;--line:#dde1e8;
 --purple:#6d5dfc;--purple2:#9b8cff;--navy:#1b2029;--blue:#4e83d8;--green:#55a56f;
 --amber:#dda443;--red:#d85c56;--shadow:0 14px 36px rgba(31,36,48,.08)
}
*{box-sizing:border-box}html,body{margin:0;background:linear-gradient(180deg,#f3f4f8,#e9ebf1);font-family:Inter,Segoe UI,Arial,sans-serif;color:var(--ink)}
button,input,select,textarea{font:inherit}button{cursor:pointer}.shell{min-height:100vh}.topbar{height:70px;background:#fff;border-bottom:1px solid var(--line);display:grid;grid-template-columns:250px 1fr auto;gap:20px;align-items:center;padding:0 22px;position:sticky;top:0;z-index:30;box-shadow:0 6px 20px rgba(30,35,47,.05)}.brand{display:flex;gap:10px;align-items:center}.brand img{width:42px;height:42px}.brand strong{display:block;font-size:13px;letter-spacing:.08em}.brand span{display:block;font-size:8px;color:var(--muted);letter-spacing:.16em;margin-top:3px}.project-pill{justify-self:center;padding:8px 14px;border-radius:10px;background:#f3f1ff;border:1px solid #ddd8ff}.project-pill span{display:block;font-size:7px;color:#756bc6;letter-spacing:.14em}.project-pill strong{display:block;font-size:10px;margin-top:2px}.topstate{display:flex;align-items:center;gap:12px}.topstate>div{padding-right:12px;border-right:1px solid var(--line)}.topstate span{display:block;font-size:7px;color:var(--muted)}.topstate b{display:block;font-size:10px;margin-top:2px}.primary,.ghost{border-radius:8px;padding:9px 12px;font-weight:750}.primary{border:1px solid var(--purple);background:var(--purple);color:#fff}.ghost{border:1px solid var(--line);background:#fff;color:#4b5260}
.body{display:grid;grid-template-columns:92px 1fr;min-height:calc(100vh - 70px)}.module-rail{background:#1b2029;padding:14px 10px;display:flex;flex-direction:column;gap:7px;position:sticky;top:70px;height:calc(100vh - 70px)}.module{border:0;background:transparent;color:#8e96a4;border-radius:10px;padding:12px 6px;display:grid;gap:6px;place-items:center;font-size:8px;font-weight:700}.module i{font-style:normal;font-size:17px}.module.active,.module:hover{background:#2a303c;color:white}.module.active{box-shadow:inset 3px 0 var(--purple2)}.content{max-width:1600px;width:100%;margin:auto;padding:20px}.view{display:none}.view.active{display:block}.pagehead{display:flex;justify-content:space-between;gap:14px;align-items:end;margin-bottom:14px}.eyebrow{font-size:8px;color:var(--purple);font-weight:800;letter-spacing:.17em}.pagehead h1{font-size:31px;letter-spacing:-.04em;margin:4px 0 0}.actions{display:flex;gap:8px}
.command-layout{display:grid;grid-template-columns:1fr 310px;gap:12px}.scene-card,.panel,.status-strip article,.equipment-card,.inspection-list,.inspection-work,.report-main,.report-summary{background:#fff;border:1px solid var(--line);border-radius:11px;box-shadow:var(--shadow)}.scene-card{overflow:hidden}.scene-head,.panel-head,.inspection-head{padding:12px 14px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:flex-start;gap:10px}.scene-head h2,.panel-head h3,.inspection-head h2{font-size:15px;margin:3px 0 0}.scene-tabs{display:flex;border:1px solid var(--line);border-radius:7px;padding:2px}.scene-tabs button{border:0;background:transparent;padding:6px 9px;border-radius:5px;font-size:8px;font-weight:700;color:#727987}.scene-tabs button.active{background:#1b2029;color:#fff}.scene-wrap{position:relative}.scene-wrap canvas{width:100%;height:560px;display:block;background:linear-gradient(180deg,#f8f9fb,#eef1f5)}.scene-controls{position:absolute;right:14px;bottom:14px;display:grid;grid-template-columns:repeat(2,42px);gap:6px}.scene-controls button{height:38px;border:1px solid var(--line);background:rgba(255,255,255,.92);border-radius:8px;font-weight:800}.lift-progress{padding:10px 14px;border-top:1px solid var(--line);display:grid;grid-template-columns:120px 1fr 100px;gap:10px;align-items:center}.lift-progress span{display:block;font-size:7px;color:var(--muted)}.lift-progress strong{font-size:10px}.progressbar{height:8px;background:#e8ebf0;border-radius:99px;overflow:hidden}.progressbar i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--purple),var(--purple2));transition:.2s}.control-stack{display:grid;gap:10px;align-content:start}.calc-panel{padding-bottom:12px}.util-ring{width:160px;height:160px;border-radius:50%;margin:16px auto;background:conic-gradient(var(--purple) 0 72%,#e9ebf0 72%);display:grid;place-items:center;align-content:center;position:relative}.util-ring:after{content:"";position:absolute;inset:15px;border-radius:50%;background:white}.util-ring strong,.util-ring span{position:relative;z-index:2}.util-ring strong{font-size:30px}.util-ring span{font-size:8px;color:var(--muted)}.calc-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px;padding:0 12px}.calc-grid div{padding:9px;background:#f6f7f9;border-radius:7px}.calc-grid span{display:block;font-size:7px;color:var(--muted)}.calc-grid b{display:block;font-size:10px;margin-top:2px}.validation{padding:8px 12px}.valid-row{display:grid;grid-template-columns:9px 1fr auto;gap:8px;align-items:center;padding:8px 0;border-bottom:1px solid var(--line)}.valid-row i{width:8px;height:8px;border-radius:50%;background:var(--green)}.valid-row.warn i{background:var(--amber)}.valid-row strong{display:block;font-size:9px}.valid-row span{display:block;font-size:7px;color:var(--muted);margin-top:2px}.valid-row b{font-size:8px;color:#69717e}.status-strip{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;margin-top:12px}.status-strip article{padding:11px}.status-strip span{display:block;font-size:7px;color:var(--muted)}.status-strip strong{display:block;font-size:10px;margin-top:3px}.status-strip small{display:block;font-size:7px;color:#727a87;margin-top:2px}
.plan-layout{display:grid;grid-template-columns:1fr 300px;gap:12px}.form-panel,.result-panel{overflow:hidden}.formgrid{display:grid;grid-template-columns:1fr 1fr;gap:10px;padding:14px}.formgrid label{font-size:8px;color:#656d79;font-weight:700}.formgrid input{display:block;width:100%;margin-top:5px;padding:9px;border:1px solid var(--line);border-radius:7px}.result-main{text-align:center;padding:20px 10px 14px}.result-number{font-size:44px;font-weight:800;color:var(--purple)}.result-main span{font-size:8px;color:var(--muted)}.result-list{padding:0 12px}.result-list div{display:flex;justify-content:space-between;padding:9px 0;border-top:1px solid var(--line)}.result-list span,.result-list strong{font-size:9px}.full{width:calc(100% - 24px);margin:12px}.wide{grid-column:1/-1}.chart-panel canvas{width:100%;height:330px;display:block}
.equipment-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.equipment-card{padding:13px}.eq-top{display:flex;justify-content:space-between;gap:10px}.eq-top strong{font-size:12px}.eq-top span{font-size:8px;padding:5px 7px;border-radius:99px;background:#eef0f5}.eq-icon{height:150px;margin:12px 0;background:linear-gradient(180deg,#f8f9fb,#eef1f5);border-radius:8px;display:grid;place-items:center;font-size:56px;color:#333946}.eq-meta{display:grid;grid-template-columns:1fr 1fr;gap:7px}.eq-meta div{padding:8px;background:#f6f7f9;border-radius:7px}.eq-meta span{display:block;font-size:7px;color:var(--muted)}.eq-meta b{display:block;font-size:9px;margin-top:2px}
.rigging-layout{display:grid;grid-template-columns:1fr 330px;gap:12px}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:10px 11px;border-bottom:1px solid var(--line);font-size:9px;white-space:nowrap}th{font-size:7px;color:var(--muted);letter-spacing:.1em;background:#f8f9fa}.badge{padding:5px 7px;border-radius:99px;font-size:7px;font-weight:800}.badge.ok{background:#e7f1ea;color:#4c845f}.badge.warn{background:#fff0d4;color:#9b6c23}.rowbtn{border:0;background:transparent;color:var(--purple);font-weight:800}.rig-side canvas{width:100%;height:320px;display:block}.rig-info{padding:10px 12px}.rig-info div{display:flex;justify-content:space-between;padding:8px 0;border-top:1px solid var(--line)}.rig-info span,.rig-info b{font-size:8px}
.inspection-layout{display:grid;grid-template-columns:270px 1fr;gap:12px}.inspection-list{padding:8px}.inspection-item{padding:9px;border-radius:8px;margin-bottom:7px;border:1px solid transparent;cursor:pointer}.inspection-item.active,.inspection-item:hover{background:#f1efff;border-color:#dcd7ff}.inspection-item .topline{display:flex;justify-content:space-between}.inspection-item b{font-size:8px;color:var(--purple)}.inspection-item span{font-size:7px;color:var(--muted)}.inspection-item strong{display:block;font-size:10px;margin-top:4px}.pill{font-size:7px;padding:6px 8px;border-radius:99px;background:#eeeaff;color:#6959db;font-weight:800}.inspection-meta{padding:12px;display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.inspection-meta div{padding:8px;background:#f6f7f9;border-radius:7px}.inspection-meta span{display:block;font-size:7px;color:var(--muted)}.inspection-meta b{display:block;font-size:9px;margin-top:2px}.checklist{padding:0 12px}.check{display:grid;grid-template-columns:29px 1fr auto;align-items:center;gap:8px;padding:9px 0;border-top:1px solid var(--line);cursor:pointer}.check button{width:25px;height:25px;border:1px solid var(--line);background:#fff;border-radius:6px}.check.done button{background:var(--purple);color:#fff;border-color:var(--purple)}.check strong{display:block;font-size:9px}.check span{display:block;font-size:7px;color:var(--muted);margin-top:2px}.check em{font-size:7px;font-style:normal;color:#737b87}.inspection-foot{padding:11px 12px;border-top:1px solid var(--line);display:flex;justify-content:flex-end;align-items:center;gap:8px}.inspection-foot>div{margin-right:auto}.inspection-foot span{display:block;font-size:7px;color:var(--muted)}.inspection-foot strong{font-size:19px}
.report-tabs{display:flex;gap:5px;margin-bottom:11px}.report-tabs button{border:1px solid var(--line);background:#fff;border-radius:7px;padding:8px 10px;font-weight:700;color:#68707d}.report-tabs button.active{background:#1b2029;color:#fff;border-color:#1b2029}.report-layout{display:grid;grid-template-columns:1fr 300px;gap:12px}.report-main canvas{width:100%;height:400px;display:block}.report-summary{padding:12px}.summary-item{padding:10px;background:#f6f7f9;border-radius:8px;margin-bottom:8px}.summary-item span{display:block;font-size:7px;color:var(--muted)}.summary-item strong{display:block;font-size:17px;margin-top:3px}
.modal{display:none;position:fixed;inset:0;background:rgba(19,22,28,.55);z-index:100;padding:20px}.modal.active{display:grid;place-items:center}.modal-card{width:min(640px,96vw);background:#fff;border-radius:11px;overflow:hidden;box-shadow:0 30px 80px rgba(0,0,0,.25)}.modal-head{padding:13px 15px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between}.modal-head h2{margin:3px 0 0;font-size:17px}.close{width:32px;height:32px;border:0;background:#f1f2f5;border-radius:7px;font-size:18px}.modal-form{padding:14px;display:grid;grid-template-columns:1fr 1fr;gap:10px}.modal-form label{font-size:8px;color:#656d79;font-weight:700}.modal-form input,.modal-form select{display:block;width:100%;margin-top:5px;padding:9px;border:1px solid var(--line);border-radius:7px}.modal-actions{padding:11px 14px;border-top:1px solid var(--line);display:flex;justify-content:flex-end;gap:8px}.toast{position:fixed;right:18px;bottom:18px;background:#1b2029;color:white;padding:10px 13px;border-radius:8px;font-size:8px;box-shadow:0 12px 30px rgba(0,0,0,.2);opacity:0;transform:translateY(10px);transition:.2s;z-index:200}.toast.show{opacity:1;transform:none}
@media(max-width:1250px){.topbar{grid-template-columns:220px 1fr}.topstate{display:none}.command-layout,.plan-layout,.rigging-layout,.inspection-layout,.report-layout{grid-template-columns:1fr}.equipment-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:850px){.body{grid-template-columns:1fr}.module-rail{position:static;height:auto;display:grid;grid-template-columns:repeat(6,1fr)}.topbar{grid-template-columns:1fr;height:auto;padding:10px}.project-pill{justify-self:start}.content{padding:12px}.pagehead{align-items:flex-start;flex-direction:column}.status-strip{grid-template-columns:1fr 1fr}.equipment-grid{grid-template-columns:1fr}.formgrid,.modal-form{grid-template-columns:1fr}.inspection-meta{grid-template-columns:1fr 1fr}}
