@font-face{font-family:Inter;font-style:normal;font-weight:300 600;font-display:swap;src:url(/fonts/inter-var.woff2) format("woff2")}@font-face{font-family:Sora;font-style:normal;font-weight:400 700;font-display:swap;src:url(/fonts/sora-var.woff2) format("woff2")}:root{--primary: #1f4f46;--primary-hover: #173b34;--secondary: #6b8f87;--accent: #7cc6b8;--background: #f7f9f8;--surface: #ffffff;--ink: #1b2522;--line: #e6ebe9;--muted: #8a9a95;--font-sans: "Inter", ui-sans-serif, system-ui, sans-serif;--font-display: "Sora", "Inter", ui-sans-serif, sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--surface);color:var(--ink);font-family:var(--font-sans);-webkit-font-smoothing:antialiased}.font-display{font-family:var(--font-display);letter-spacing:-.02em}::selection{background:var(--accent);color:var(--primary)}a{color:var(--primary)}.app{display:flex;height:100vh;overflow:hidden}.drawer{width:264px;flex-shrink:0;background:var(--background);border-right:1px solid var(--line);padding:28px 14px 20px;display:flex;flex-direction:column;gap:8px}.brand{display:flex;align-items:center;gap:10px;padding:0 8px 8px}.brand img{width:32px;height:32px}.brand .name{font-family:var(--font-display);font-size:26px;color:var(--primary);letter-spacing:-.02em}.brand .server-tag{font-size:11px;font-weight:600;letter-spacing:.02em;color:var(--secondary);background:#7cc6b838;border-radius:999px;padding:2px 9px;align-self:center}.nav-label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--secondary);padding:12px 10px 4px}.company-item{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;border:0;background:transparent;text-align:left;font:inherit;font-weight:500;font-size:14px;color:#1b2522b3;padding:10px 12px;border-radius:12px;cursor:pointer;transition:background .15s,color .15s}.company-item:hover{background:#ffffffb3;color:var(--ink)}.company-item.active{background:var(--surface);color:var(--primary);box-shadow:0 1px 2px #0000000d}.company-item .count{font-size:12px;color:var(--muted);background:#7cc6b840;border-radius:999px;padding:1px 8px}.content{flex:1;background:var(--surface);padding:40px 48px;overflow-y:auto}.content h1{font-family:var(--font-display);font-size:34px;letter-spacing:-.02em;margin:0 0 4px}.subtle{color:var(--muted);font-size:14px}.tabs{display:flex;gap:22px;border-bottom:1px solid var(--line);margin-top:24px}.tab{border:0;background:transparent;cursor:pointer;font:inherit;font-weight:500;font-size:14px;color:var(--muted);padding:0 0 12px;margin-bottom:-1px;border-bottom:2px solid transparent;display:inline-flex;align-items:center;gap:7px}.tab:hover{color:var(--ink)}.tab.active{color:var(--primary);border-bottom-color:var(--primary)}.tab-count{font-size:11px;font-weight:600;color:var(--secondary);background:#7cc6b838;border-radius:999px;padding:1px 8px}.list-row{display:flex;align-items:center;justify-content:space-between;padding:12px 20px;border-bottom:1px solid var(--line)}.list-row:last-child{border-bottom:0}.scope{font-size:11px;font-weight:600;border-radius:999px;padding:3px 10px}.scope.shared{color:var(--primary);background:#7cc6b840}.scope.private{color:var(--muted);background:var(--background);border:1px solid var(--line)}.cat-item{border-bottom:1px solid var(--line)}.cat-item:last-child{border-bottom:0}.cat-item .list-row{border-bottom:0}.cat-main{display:flex;align-items:center;gap:12px;flex:1;min-width:0;border:0;background:transparent;cursor:pointer;font:inherit;text-align:left;color:inherit}.cat-main .chev{color:var(--muted);font-size:20px;transition:transform .15s}.cat-main .chev.open{transform:rotate(90deg)}.plant-detail{display:grid;grid-template-columns:1fr 1fr;gap:0 28px;padding:4px 20px 16px 52px;background:var(--background)}@media(max-width:640px){.plant-detail{grid-template-columns:1fr;padding-left:20px}}.prop{display:flex;justify-content:space-between;gap:12px;padding:6px 0;border-bottom:1px solid var(--line);font-size:13px}.prop .k{color:var(--secondary)}.prop .v{color:var(--ink);font-weight:500;text-align:right}.chip-row{display:flex;flex-wrap:wrap;gap:8px}.chip{border:1px solid var(--line);background:var(--surface);cursor:pointer;font:inherit;font-size:13px;font-weight:500;color:var(--ink);padding:6px 14px;border-radius:999px;transition:all .12s}.chip:hover{border-color:var(--secondary)}.chip.on{background:var(--primary);border-color:var(--primary);color:#fff}.role-card{padding:16px 20px}.role-head{display:flex;align-items:center;gap:12px;margin-bottom:12px}.role-name{font-family:var(--font-display);font-size:18px;max-width:240px}.perm-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px 18px}@media(max-width:640px){.perm-grid{grid-template-columns:1fr 1fr}}.perm{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--ink);cursor:pointer}.perm input{width:16px;height:16px;accent-color:var(--primary);cursor:pointer}.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:16px;margin-top:28px}.card{border:1px solid var(--line);border-radius:18px;background:var(--surface);padding:20px}.card .icon{width:44px;height:44px;border-radius:12px;display:grid;place-items:center;background:#7cc6b838;color:var(--primary);margin-bottom:14px}.card .big{font-family:var(--font-display);font-size:30px;letter-spacing:-.02em}.card .label{color:var(--muted);font-size:13px}.btn{display:inline-flex;align-items:center;gap:8px;border:0;cursor:pointer;font:inherit;font-weight:500;font-size:14px;background:var(--primary);color:#fff;padding:10px 18px;border-radius:999px;transition:background .15s,transform .05s}.btn:hover{background:var(--primary-hover)}.btn:active{transform:scale(.98)}.btn:disabled{opacity:.5;cursor:default}.btn.ghost{background:transparent;color:var(--secondary)}.btn.ghost:hover{color:var(--ink)}.btn.danger{background:transparent;color:var(--muted);border:1px solid var(--line)}.btn.danger:hover{color:#d2483b;border-color:#f0c5bf}.input{width:100%;border:1px solid var(--line);background:var(--surface);border-radius:12px;padding:10px 14px;font:inherit;font-size:14px;color:var(--ink);outline:none}.input:focus{border-color:var(--secondary)}.input::placeholder{color:var(--muted)}select.input{-moz-appearance:none;appearance:none;-webkit-appearance:none;line-height:1.5;padding-right:38px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%236b8f87' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center}input.input{line-height:1.5}.row{display:flex;gap:10px;align-items:center}.panel{margin-top:28px;border:1px solid var(--line);border-radius:18px;overflow:hidden}.panel-head{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--line)}.panel-head h2{font-family:var(--font-display);font-size:20px;margin:0;letter-spacing:-.02em}.user-row{display:flex;align-items:center;justify-content:space-between;width:100%;padding:12px 20px;border:0;border-bottom:1px solid var(--line);background:var(--surface);text-align:left;font:inherit;cursor:pointer;transition:background .12s}.user-row:hover:not(.static){background:var(--background)}.user-row.static{cursor:default}.user-row:last-child{border-bottom:0}.user-row .chev{color:var(--muted);font-size:20px}.tag{font-size:11px;font-weight:600;color:var(--primary);background:#7cc6b840;border-radius:999px;padding:2px 10px}.icon-btn{display:grid;place-items:center;border:0;background:transparent;cursor:pointer;width:34px;height:34px;border-radius:10px;color:var(--secondary);transition:background .12s,color .12s}.icon-btn:hover{background:var(--background);color:var(--ink)}.icon-btn.lg{width:42px;height:42px;border:1px solid var(--line)}.modal-wrap{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;display:grid;place-items:center;padding:24px;background:#1b252266;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.modal{width:420px;max-width:100%;background:var(--surface);border-radius:20px;box-shadow:0 20px 60px #0000002e}.modal-head{display:flex;align-items:center;justify-content:space-between;padding:18px 22px;border-bottom:1px solid var(--line)}.modal-head h2{font-family:var(--font-display);font-size:20px;margin:0;letter-spacing:-.02em;word-break:break-word}.modal-body{padding:20px 22px 24px}.field-label{display:block;font-size:12px;font-weight:600;color:var(--secondary);margin-bottom:8px}.sep{border:0;border-top:1px solid var(--line);margin:22px 0 16px}.ok-msg{color:var(--primary);font-size:13px;margin-top:10px}.login-wrap{min-height:100vh;display:grid;place-items:center;background:var(--background)}.login-card{width:360px;background:var(--surface);border:1px solid var(--line);border-radius:20px;padding:32px;box-shadow:0 10px 40px #0000000f}.login-card .brand{justify-content:center;padding-bottom:18px}.error{color:#d2483b;font-size:13px;margin-top:10px}.empty{margin-top:40px;padding:60px;text-align:center;color:var(--muted);border:1px dashed var(--line);border-radius:18px}.archived-banner{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-top:14px;padding:14px 18px;border-radius:14px;background:#fbeec9;border:1px solid #ecd9a0;color:#6b5618;font-size:14px}
