:root{--ink:#1C1C1E;--muted:#5E5E66;--blue:#007AFF;--blue-text:#0062CC;--green-text:#1E7B34;--orange-text:#B25000;--line:rgba(60,60,67,.12);--safe-bottom:env(safe-area-inset-bottom,0px);color-scheme:light}*{box-sizing:border-box}body,html{margin:0;min-height:100%}body{font-family:-apple-system,BlinkMacSystemFont,SF Pro Text,Be Vietnam Pro,system-ui,sans-serif;color:var(--ink);-webkit-font-smoothing:antialiased;background:#EEF0F6 url(/img/wallpaper-desktop.jpg) 50%/cover fixed no-repeat}@media (max-width:860px){body{background-image:url(/img/wallpaper-phone.jpg)}}a{color:var(--blue);text-decoration:none}button,input,select,textarea{font:inherit;color:inherit}.num{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.muted{color:var(--muted)}.glass{background:rgba(255,255,255,.42);backdrop-filter:blur(24px) saturate(180%);-webkit-backdrop-filter:blur(24px) saturate(180%);border:1px solid rgba(255,255,255,.65);box-shadow:inset 0 1px 1px rgba(255,255,255,.9),inset 0 -1px 1px rgba(255,255,255,.25),0 8px 28px rgba(30,50,80,.12)}.card{background:rgba(255,255,255,.72);backdrop-filter:blur(40px) saturate(170%);-webkit-backdrop-filter:blur(40px) saturate(170%);border:1px solid rgba(255,255,255,.85);box-shadow:inset 0 1px 0 #fff,0 10px 36px rgba(30,50,80,.08);border-radius:24px}.sheet{background:rgba(250,250,252,.86);backdrop-filter:blur(40px) saturate(190%);-webkit-backdrop-filter:blur(40px) saturate(190%);border:1px solid rgba(255,255,255,.9);box-shadow:inset 0 1px 1px #fff,0 24px 60px rgba(20,30,50,.22)}.group{background:rgba(255,255,255,.62);border-radius:16px;overflow:hidden}.group>*+*{border-top:1px solid var(--line)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:44px;padding:0 20px;border-radius:22px;border:none;cursor:pointer;font-size:15px;font-weight:600;white-space:nowrap;text-decoration:none;transition:transform .3s cubic-bezier(.3,.7,.4,1.5),filter .2s,opacity .2s}.btn:hover{filter:brightness(1.05)}.btn:active{transform:scale(.95)}.btn:disabled{opacity:.45;cursor:default;transform:none}.btn-primary{color:#fff;background:linear-gradient(180deg,#2B8CFF,#007AFF);box-shadow:inset 0 1px 1px rgba(255,255,255,.55),inset 0 -1px 1px rgba(0,0,0,.08),0 6px 16px rgba(0,122,255,.3)}.btn-glass{color:var(--ink);background:rgba(255,255,255,.6);backdrop-filter:blur(20px) saturate(180%);-webkit-backdrop-filter:blur(20px) saturate(180%);border:1px solid rgba(255,255,255,.75);box-shadow:inset 0 1px 1px #fff,0 4px 14px rgba(30,50,80,.1)}.btn-tint{color:var(--blue-text);background:rgba(0,122,255,.12)}.btn-sm{height:34px;padding:0 14px;border-radius:17px;font-size:13px}.btn-icon{width:44px;padding:0}.chip{display:inline-flex;align-items:center;gap:5px;height:24px;padding:0 10px;border-radius:12px;font-size:12px;font-weight:600;white-space:nowrap}.ok{color:var(--green-text);background:rgba(52,199,89,.16)}.due{color:var(--orange-text);background:rgba(255,149,0,.16)}.idle{color:var(--muted);background:rgba(60,60,67,.08)}.info{color:var(--blue-text);background:rgba(0,122,255,.12)}.cap{font-size:13px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.4px}.field{height:44px;width:100%;border-radius:12px;border:1px solid rgba(60,60,67,.16);background:rgba(255,255,255,.88);padding:0 12px;font-size:16px;outline:none;transition:box-shadow .2s,border-color .2s}.field:focus{border-color:var(--blue);box-shadow:0 0 0 4px rgba(0,122,255,.18)}textarea.field{height:auto;min-height:80px;padding:10px 12px}label.lbl{display:flex;flex-direction:column;gap:6px;font-size:13px;font-weight:600;color:var(--muted)}.shell{display:flex;gap:16px;padding:16px;min-height:100vh}.sidebar{position:-webkit-sticky;position:sticky;top:16px;height:calc(100vh - 32px);width:256px;flex-shrink:0;border-radius:26px;padding:18px 12px;display:flex;flex-direction:column;gap:2px}.brand{padding:4px 8px 20px}.brand,.nav{display:flex;align-items:center;gap:12px}.nav{height:44px;padding:0 8px;border-radius:12px;color:var(--ink);font-size:15px;font-weight:500;transition:background .25s}.nav:hover{background:rgba(255,255,255,.55)}.nav.active{background:rgba(255,255,255,.8);box-shadow:0 4px 14px rgba(30,50,80,.08);font-weight:600}.tile{width:30px;height:30px;border-radius:9px;display:flex;align-items:center;justify-content:center;flex-shrink:0;color:var(--blue);background:rgba(0,122,255,.11)}.nav.active .tile{color:#fff;background:linear-gradient(180deg,#2B8CFF,#007AFF);box-shadow:inset 0 1px 0 rgba(255,255,255,.45),0 3px 8px rgba(0,122,255,.3)}.model-slot{flex:1 1;min-height:220px;margin-top:12px;border-radius:22px;position:relative;overflow:hidden;background:linear-gradient(180deg,rgba(255,255,255,0),rgba(255,255,255,.5))}.model-slot model-viewer{position:absolute;inset:0;width:100%;height:100%;background:transparent;--poster-color:transparent;cursor:-webkit-grab;cursor:grab}.main{flex:1 1;min-width:0;padding:14px 14px 32px;display:flex;flex-direction:column;gap:20px}.page-head{display:flex;flex-wrap:wrap;align-items:center;gap:12px}.page-head h1{margin:0;font-size:34px;font-weight:800;letter-spacing:-.8px}.tabbar{display:none}@media (max-width:860px){.shell{padding:0;display:block}.sidebar{display:none}.main{padding:18px 16px calc(110px + var(--safe-bottom));gap:14px}.page-head h1{font-size:30px}.tabbar{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));grid-gap:2px;gap:2px;position:fixed;left:12px;right:12px;bottom:calc(14px + var(--safe-bottom));z-index:40;height:64px;padding:5px;border-radius:32px}.tab{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;border-radius:27px;color:var(--ink);font-size:10px;font-weight:600}.tab.active{color:var(--blue);background:rgba(255,255,255,.78);box-shadow:inset 0 1px 0 #fff,0 2px 8px rgba(30,50,80,.1)}.hide-phone{display:none!important}}@media (min-width:861px){.hide-desktop{display:none!important}}.grid-kpi{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));grid-gap:14px;gap:14px}.row{display:flex;align-items:center;gap:12px;min-height:56px;padding:0 14px}.empty{padding:28px;text-align:center;color:var(--muted)}.rise{animation:rise .6s cubic-bezier(.2,.8,.2,1) both}@keyframes rise{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.rise{animation:none}}.toast-in{animation:toast-in .32s cubic-bezier(.2,.9,.3,1.2)}@keyframes toast-in{0%{opacity:0;transform:translateY(-14px) scale(.96)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.toast-in{animation:none}}form[data-pending] button{opacity:.55;pointer-events:none}