:root{--orange: #f04e23;--ink: #23231f;--mono: "IBM Plex Mono", ui-monospace, monospace;font-family:Archivo,system-ui,sans-serif;-webkit-font-smoothing:antialiased}*,*:before,*:after{box-sizing:border-box}body{margin:0;background:#23231f}.stage{min-height:100vh;padding:18px;background:repeating-linear-gradient(135deg,#23231f 0 6px,#262622 6px 12px)}.shell{max-width:1280px;margin:0 auto;background:linear-gradient(#e9e9e5,#cfcfc9);border-radius:14px;border:1px solid #b6b6ae;box-shadow:0 1px #fff inset,0 22px 44px #00000073;overflow:hidden;color:#23231f}.loading{padding:60px;text-align:center;font-family:var(--mono);letter-spacing:.2em}.grow{flex:1}.mono{font-family:var(--mono)}.tabs{display:flex;align-items:flex-end;gap:6px;padding:8px 10px 0;background:#b9b9b1;flex-wrap:wrap}.tab,.tab-btn{font-family:var(--mono);font-size:11px;font-weight:600;letter-spacing:.14em;padding:9px 16px 11px;border:1px solid #9a9a92;border-bottom:none;border-radius:6px 6px 0 0;box-shadow:0 1px #fff9 inset;background:linear-gradient(#e4e4de,#cfcfc8);color:#3a3a33}.tab.active{background:linear-gradient(var(--orange),var(--orange));color:#fff}.tab-btn{cursor:pointer}.tab-btn:hover{filter:brightness(1.06)}.who{font-family:var(--mono);font-size:10px;letter-spacing:.14em;color:#3a3a34;padding:0 6px 10px}.sync{display:flex;align-items:center;gap:8px;padding:0 12px 10px;font-family:var(--mono);font-size:10px;letter-spacing:.16em;color:#3a3a34}.blip{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--orange);animation:blip 1.6s infinite}@keyframes blip{0%,to{opacity:1}50%{opacity:.15}}.hero{display:flex;align-items:flex-end;gap:14px;flex-wrap:wrap;padding:22px 24px;background:linear-gradient(#f4f4f0,#e7e7e1);border-top:1px solid #a8a8a0}.brand{font-weight:800;font-size:40px;line-height:.95;letter-spacing:-.02em;color:#1b1b18}.brand span{color:var(--orange)}.tagline{font-family:var(--mono);font-size:11px;letter-spacing:.3em;color:var(--orange);margin-top:6px}.hero-meta{margin-left:auto;font-family:var(--mono);font-size:12px;letter-spacing:.1em;color:#55554d;text-align:right}.dim{color:#8a8a80}.lcd{background:linear-gradient(#0d0d0c,#17171a);border-top:1px solid #8d8d85;border-bottom:1px solid #8d8d85;padding:20px 24px;display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:18px;position:relative;overflow:hidden}.r-label{font-family:var(--mono);font-size:10px;letter-spacing:.24em}.r-value{font-family:var(--mono);font-weight:700;font-size:46px;line-height:1;margin-top:6px}.r-bar{margin-top:10px;height:4px;background:#27272a;border-radius:2px;overflow:hidden}.r-bar div{height:100%;transition:width .4s}.r-note{font-family:var(--mono);font-size:10px;letter-spacing:.1em;margin-top:7px}.scan{position:absolute;inset:0;pointer-events:none;background:repeating-linear-gradient(#ffffff08 0 1px,transparent 1px 3px)}.modules{padding:0;display:grid;grid-template-columns:minmax(0,2.15fr) minmax(0,1fr);gap:16px;align-items:start}.col{display:grid;gap:16px;min-width:0}.module{background:linear-gradient(#fbfbf8,#edede7);border:1px solid #b0b0a8;border-radius:10px;box-shadow:0 1px #fff inset,0 8px 18px #00000024;overflow:hidden}.module>header,.detail>header{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:12px 14px;background:linear-gradient(#e2e2dc,#d3d3cc);border-bottom:1px solid #b0b0a8}h2{margin:0;font-family:var(--mono);font-size:12px;font-weight:700;letter-spacing:.2em}.sq{width:9px;height:9px;border-radius:2px}.orange{background:var(--orange)}.cyan{background:#35b7d8}.ink{background:#23231f}.filters{display:flex;gap:5px;flex-wrap:wrap}.chip{font-family:var(--mono);font-size:10px;font-weight:600;letter-spacing:.12em;padding:6px 10px;border-radius:4px;cursor:pointer;border:1px solid #9d9d95;color:#3a3a33;background:linear-gradient(#f2f2ec,#e2e2db)}.chip.on{background:var(--ink);color:#f7f7f2}.chip:hover{filter:brightness(1.05)}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:13px;min-width:760px}th{text-align:left;padding:9px 14px;font-family:var(--mono);font-size:10px;letter-spacing:.16em;color:#6d6d63;font-weight:600;background:#e8e8e2}td{padding:11px 14px;border-top:1px solid #dcdcd4;color:#2c2c26}tbody tr{cursor:pointer}tbody tr:hover{background:#f3e7e2}tbody tr.sel{background:#f7e3db}.strong{font-weight:600}.app{font-weight:700;font-size:12px;letter-spacing:.06em;color:#1b1b18}.small-t{font-size:11px;color:#75756a;white-space:nowrap}.empty,.d-empty{padding:28px;text-align:center;font-family:var(--mono);font-size:11px;letter-spacing:.2em;color:#8a8a80;margin:0}.count{padding:10px 14px;background:#e2e2dc;border-top:1px solid #b0b0a8;font-family:var(--mono);font-size:10px;letter-spacing:.12em;color:#6d6d63}.badge{display:inline-block;font-family:var(--mono);font-size:10px;font-weight:700;letter-spacing:.1em;padding:4px 8px;border-radius:3px;white-space:nowrap;background:#e3e3dc;color:#3a3a33}.badge.pending{background:#fdeccf;color:#7a4d06}.badge.approved{background:#d5e9f0;color:#14566b}.badge.deployed{background:#e4dcf0;color:#40276b}.badge.validated{background:#c9e8cf;color:#1f5c2b}.badge.rejected{background:#fde3d9;color:#a3300f}.badge.cancelled{background:#23231f;color:#f7f7f2}label{display:grid;gap:5px;font-family:var(--mono);font-size:10px;letter-spacing:.16em;color:#55554d}label.check{display:flex;align-items:center;gap:8px}input,select,textarea{font:inherit;font-family:Archivo,sans-serif;font-size:14px;letter-spacing:0;padding:9px 10px;border:1px solid #9d9d95;border-radius:5px;background:#fbfbf8;color:#23231f;box-shadow:0 1px 2px #0000001f inset}input:focus,select:focus,textarea:focus{outline:2px solid var(--orange);outline-offset:-1px}input[readonly]{background:#dcdcd4;color:#55554d;cursor:not-allowed;font-family:var(--mono);font-size:13px}input[type=checkbox]{width:14px;height:14px;padding:0;accent-color:var(--orange)}.form-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;padding:16px 14px}.wide{grid-column:1 / -1}.btn{font-family:var(--mono);font-size:10px;font-weight:700;letter-spacing:.12em;padding:11px 14px;border-radius:5px;cursor:pointer;border:1px solid #4a4a44;color:#dcdcd4;background:linear-gradient(#333330,#232320)}.btn.primary{border-color:#ff7a52;color:#fff;background:linear-gradient(#f9613a,#e04117)}.btn.small{padding:7px 10px}.btn:hover{filter:brightness(1.1)}.btn:active{transform:translateY(1px)}.detail{background:linear-gradient(#1a1a19,#101010);border:1px solid #8d8d85;border-radius:10px;overflow:hidden;box-shadow:0 8px 18px #0000004d}.detail>header{background:none;border-bottom:1px solid #2d2d2a}.detail h2{color:#d8d8d0;font-size:11px}.dot{width:9px;height:9px;border-radius:50%;background:var(--orange)}.d-body{padding:16px 14px;display:grid;gap:10px}.d-folio{font-family:var(--mono);font-size:28px;font-weight:700;color:#ff5a2b;text-shadow:0 0 18px rgba(240,78,35,.5)}.d-app{font-family:var(--mono);font-size:14px;font-weight:700;letter-spacing:.14em;color:#e6e6de}.d-version{font-family:var(--mono);font-size:12.5px;color:#8d8d84}.d-rows{display:grid;gap:8px;margin-top:4px}.d-rows div{display:flex;justify-content:space-between;gap:10px;align-items:center;font-family:var(--mono);font-size:11px;letter-spacing:.06em;border-bottom:1px dashed #2d2d2a;padding-bottom:6px}.d-rows span,.d-reason span{color:#6e6e66}.d-rows b{color:#d8d8d0;font-weight:500;text-align:right}.d-rows .badge{font-weight:700}.d-reason{font-size:13px;color:#cfcfc6;line-height:1.5;white-space:pre-wrap}.d-reason span{display:block;font-family:var(--mono);font-size:10px;letter-spacing:.16em;margin-bottom:4px}.dark-input{background:#0f0f0e;border-color:#3a3a35;color:#e6e6de;font-family:var(--mono);font-size:11px;letter-spacing:.06em;margin-top:6px}.d-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}.d-actions .btn:only-child{grid-column:1 / -1}.log{padding:10px 14px 14px;max-height:300px;overflow-y:auto}.log-row{display:grid;grid-template-columns:46px minmax(0,1fr);gap:9px;padding:7px 0;border-bottom:1px solid #e6e6de;font-size:12px;color:#33332c}.log-row .t{font-size:10.5px;color:#8d8d84}.error{color:#c33c10;font-family:var(--mono);font-size:11px;letter-spacing:.06em;margin:0}.banner{padding:10px 24px;background:#fde3d9;border-bottom:1px solid #e8b8a6}.footer{padding:12px 20px 16px;background:#b9b9b1;border-top:1px solid #a2a29a;display:flex;gap:16px;flex-wrap:wrap;font-family:var(--mono);font-size:10px;letter-spacing:.14em;color:#3c3c35}.login-shell{max-width:440px;margin-top:8vh}.login-body{display:grid;gap:16px;padding:28px 24px;background:linear-gradient(#f4f4f0,#e7e7e1);border-top:1px solid #a8a8a0}.login-body .brand{font-size:34px}.login-body .btn{padding:13px}@media(max-width:900px){.modules,.form-grid{grid-template-columns:1fr}.brand{font-size:30px}.hero-meta{margin-left:0;text-align:left}}.frame{display:grid;grid-template-columns:230px minmax(0,1fr);border-top:1px solid #a8a8a0}.side{display:flex;flex-direction:column;gap:4px;padding:20px 14px;background:linear-gradient(#1a1a19,#101010);border-right:1px solid #8d8d85;min-height:560px}.side-brand{font-size:22px;color:#f4f4f0}.side-tag{font-family:var(--mono);font-size:9px;letter-spacing:.26em;color:var(--orange);margin:6px 0 22px}.side nav{display:grid;gap:6px}.nav{display:flex;align-items:center;gap:10px;width:100%;text-align:left;font-family:var(--mono);font-size:11px;font-weight:600;letter-spacing:.14em;padding:11px 12px;border-radius:6px;cursor:pointer;border:1px solid transparent;background:transparent;color:#b9b9b1}.nav i{font-style:normal;width:16px;text-align:center;color:#8d8d84}.nav:hover{background:#262622;color:#f0f0e6}.nav.on{background:linear-gradient(var(--orange),var(--orange));color:#fff;border-color:#ff7a52}.nav.on i{color:#fff}.nav.accent{margin-top:10px;border-color:#4a4a44;color:#f0f0e6;background:linear-gradient(#333330,#232320)}.nav.out{margin-top:10px;border-color:#3a3a35}.pill{margin-left:auto;font-size:10px;padding:1px 7px;border-radius:9px;background:#ffd24a;color:#23231f}.side-user{border-top:1px solid #2d2d2a;padding-top:12px;font-size:11px;color:#e6e6de;letter-spacing:.1em}.side .dim{color:#6e6e66;font-size:10px;margin-top:2px}.main{min-width:0;background:linear-gradient(#f4f4f0,#e7e7e1);padding:0 0 20px}.main>.modules{padding:20px}.main>.lcd{border-top:none}.main>.empty{padding:40px}.hint{font-family:var(--mono);font-size:10px;letter-spacing:.12em;color:#6d6d63}.dash{padding:20px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.span2{grid-column:1 / -1}.amber{background:#f0a623}.r-row{display:flex;align-items:baseline;gap:8px;margin-top:6px}.r-row .r-value{margin-top:0}.r-unit{font-family:var(--mono);font-size:13px}[data-tip]{position:relative}[data-tip]:hover:after{content:attr(data-tip);position:absolute;z-index:5;left:50%;bottom:calc(100% + 4px);transform:translate(-50%);white-space:nowrap;font-family:var(--mono);font-size:10.5px;letter-spacing:.06em;padding:6px 9px;border-radius:4px;background:#101010;color:#f0f0e6;border:1px solid #3a3a35;pointer-events:none}.cols{display:grid;grid-template-columns:repeat(14,minmax(0,1fr));gap:6px;padding:22px 16px 12px;align-items:end}.col-item{display:grid;grid-template-rows:14px 150px 16px;gap:4px;justify-items:center;cursor:default}.col-item:hover .col-fill{filter:brightness(1.12)}.col-n{font-family:var(--mono);font-size:11px;font-weight:600;color:#23231f}.col-track{width:100%;max-width:38px;height:150px;display:flex;align-items:flex-end;border-bottom:1px solid #9d9d95}.col-fill{width:100%;background:var(--orange);border-radius:4px 4px 0 0;min-height:0;transition:height .35s}.col-fill.zero{background:transparent}.col-l{font-family:var(--mono);font-size:9.5px;color:#6d6d63;letter-spacing:.04em}.hbars{padding:12px 14px 16px;display:grid;gap:10px}.hbar{display:grid;grid-template-columns:minmax(90px,140px) minmax(0,1fr) 30px;gap:10px;align-items:center;cursor:default}.hb-l{font-family:var(--mono);font-size:11px;letter-spacing:.04em;color:#33332c;overflow-wrap:anywhere}.hb-track{height:14px;background:#dcdcd4;border-radius:3px;overflow:hidden}.hb-fill{height:100%;background:var(--orange);border-radius:0 4px 4px 0;transition:width .35s}.hbar:hover .hb-fill{filter:brightness(1.12)}.hb-v{font-family:var(--mono);font-size:12px;font-weight:700;color:#23231f;text-align:right}.list{padding:4px 0}.list-row{display:grid;grid-template-columns:44px minmax(0,1fr) auto;gap:10px;align-items:center;width:100%;text-align:left;padding:10px 14px;border:none;border-bottom:1px solid #e3e3db;background:transparent;cursor:pointer;font:inherit;color:#24241f}.list-row:hover{background:#f3e7e2}.list-row small{display:block;font-family:var(--mono);font-size:10px;color:#7a7a70;letter-spacing:.04em;margin-top:2px}.ver{font-size:11px;color:#55554d}.log-row.wide-t{grid-template-columns:130px minmax(0,1fr)}.log-row a{font-weight:700}@media(max-width:900px){.frame{grid-template-columns:1fr}.side{min-height:0;flex-direction:row;flex-wrap:wrap;align-items:center;border-right:none;border-bottom:1px solid #8d8d85;padding:12px}.side-tag,.side-user .dim,.side-user .mono{display:none}.side-brand{margin-right:auto}.side nav{display:flex;flex-wrap:wrap;width:100%}.nav{width:auto}.nav.accent,.nav.out{margin-top:0}.side .grow{display:none}.side-user{border:none;padding:0}.dash{grid-template-columns:1fr}.main>.modules{padding:12px}.cols{gap:3px;padding:22px 8px 12px}.col-l{font-size:8px}.log-row.wide-t{grid-template-columns:1fr}}.modules{grid-template-columns:minmax(0,1fr)}.page{padding:20px;max-width:860px}.page .detail{box-shadow:0 8px 18px #0000004d}.pill.ink{background:#3a3a35;color:#f0f0e6}.d-empty a{color:var(--orange)}.overlay{position:fixed;inset:0;z-index:50;display:grid;place-items:center;padding:16px;background:#0a0a09b8}.dialog{width:min(560px,100%);max-height:calc(100vh - 32px);overflow-y:auto;background:linear-gradient(#1a1a19,#101010);border:1px solid #8d8d85;border-radius:10px;box-shadow:0 24px 60px #0009}.dialog>header{display:flex;align-items:center;gap:10px;padding:12px 14px;border-bottom:1px solid #2d2d2a}.dialog h2{color:#d8d8d0;font-size:11px}.x{border:1px solid #3a3a35;background:#232320;color:#dcdcd4;border-radius:4px;width:28px;height:28px;cursor:pointer;font-size:12px}.x:hover{filter:brightness(1.2)}.dialog .d-body>.btn{margin-top:4px}tr.plain{cursor:default}tbody tr.plain:hover{background:#f3e7e2}td.right{text-align:right;white-space:nowrap}.btn:disabled{opacity:.6;cursor:progress;filter:none}.log-row>span:last-child{white-space:pre-wrap;overflow-wrap:anywhere}.two{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}@media(max-width:900px){.two{grid-template-columns:1fr}}select{appearance:none;-webkit-appearance:none;cursor:pointer;padding-right:36px;background-color:#fbfbf8;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5l5 5 5-5' fill='none' stroke='%2323231f' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 14px center;background-size:12px 8px}select:hover{filter:brightness(.98)}.pw{position:relative;display:block}.pw input{width:100%;padding-right:44px}.eye{position:absolute;top:50%;right:8px;transform:translateY(-50%);display:grid;place-items:center;width:30px;height:30px;padding:0;border:none;border-radius:4px;background:transparent;color:#55554d;cursor:pointer}.eye:hover{color:var(--orange);background:#e7e7e1}.eye:focus-visible{outline:2px solid var(--orange)}
