:root{--header-h:64px;--sidebar-w:240px;--nav-bg:#34506f;--nav-text:#dbe4ef;--nav-muted:#9db2ca;--nav-hover:#ffffff17;--nav-active:#4a78b0;--page-bg:#eef1f6;--surface:#fff;--surface-alt:#f5f7fa;--line:#e2e7ee;--line-strong:#cfd6e0;--text:#1a1f29;--text-muted:#5a6577;--primary:#1a6fe0;--primary-hover:#1259b8;--link:#0b5fff;--radius-card:14px;--radius-control:6px;--shadow-card:0 1px 2px #1018280f, 0 2px 8px #1018280d}body{color:var(--text);background:var(--page-bg);margin:0;font-family:Roboto,Segoe UI,system-ui,-apple-system,sans-serif}.app-header{z-index:30;height:var(--header-h);box-sizing:border-box;background:var(--surface);border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding:0 1.5rem;font-size:.95rem;display:flex;position:sticky;top:0;box-shadow:0 1px 3px #1018280f}.app-header img{width:auto;height:46px;display:block}.app-header-user{align-items:center;gap:.75rem;display:flex}.app-header-user a{color:var(--text);font-weight:500;text-decoration:none}.app-header-user a:hover{text-decoration:underline}.app-header-user form{max-width:none;margin:0}.app-header-user button{background:var(--surface);color:var(--text);border:1px solid var(--line-strong);border-radius:var(--radius-control);align-items:center;gap:.4rem;padding:.4rem .9rem;display:inline-flex}.app-header-user button:hover{background:var(--surface-alt)}.app-avatar{color:#34445c;background:#cdd5e0;border-radius:50%;justify-content:center;align-items:center;width:34px;height:34px;font-weight:600;display:inline-flex}.app-header-title{z-index:31;line-height:var(--header-h);height:var(--header-h);pointer-events:none;white-space:nowrap;text-overflow:ellipsis;max-width:46vw;font-size:1.2rem;font-weight:500;display:block;position:fixed;top:0;left:50%;overflow:hidden;transform:translate(-50%)}@media (max-width:1000px){.app-header-title{display:none}}.app-body>main{padding:1.5rem 2rem}h1{margin:.5rem 0 1rem;font-size:1.9rem;font-weight:500}h2{margin:1.5rem 0 .5rem;font-size:1.25rem;font-weight:500}table{border-collapse:collapse;background:var(--surface);width:100%;margin:1rem 0}th,td{border:1px solid var(--line);text-align:left;vertical-align:top;padding:.5rem .75rem}th{background:var(--surface-alt);color:#3d4859;font-weight:600}dl{grid-template-columns:max-content 1fr;gap:.25rem 1rem;max-width:40rem;display:grid}dt{color:var(--text-muted);font-weight:600}dd{margin:0}.project-shell{align-items:flex-start;display:flex}.project-sidebar{box-sizing:border-box;width:var(--sidebar-w);top:var(--header-h);height:calc(100vh - var(--header-h));background:var(--nav-bg);color:var(--nav-text);flex-direction:column;flex:none;padding:1rem .75rem;display:flex;position:sticky;overflow-y:auto}.project-sidebar__heading{color:var(--nav-muted);margin:1.1rem .5rem .4rem;font-size:.85rem}.project-sidebar__heading:first-child{margin-top:.25rem}.project-sidebar__client{color:var(--nav-muted);margin:.35rem .5rem 0;font-size:.8rem}.project-sidebar__link{color:var(--nav-text);border-radius:8px;align-items:center;gap:.7rem;padding:.55rem .6rem;font-size:.95rem;text-decoration:none;display:flex}.project-sidebar__link span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.project-sidebar__link svg{flex:none}.project-sidebar__link:hover{background:var(--nav-hover)}.project-sidebar__link[aria-current=page]{background:var(--nav-active);color:#fff}.project-sidebar__all{border-top:1px solid #ffffff24;margin-top:auto;padding-top:1rem}.project-content{box-sizing:border-box;flex:1;min-width:0;padding:1.25rem 2rem 2rem;overflow-x:auto}.nav-toggle,.nav-backdrop{display:none}@media (min-width:768px) and (max-width:1023px){:root{--sidebar-w:64px}.project-sidebar{padding:1rem .5rem}.project-sidebar__brand,.project-sidebar__heading,.project-sidebar__client{display:none}.project-sidebar>div{border-top:1px solid #ffffff24;margin-top:.75rem;padding-top:.75rem}.project-sidebar__link{justify-content:center;padding:.7rem 0}.project-sidebar__link span{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}}@media (max-width:767px){body:has(.project-shell) .app-header{padding-left:3.5rem}.app-header-user a,.app-header-user__label{display:none}.nav-toggle{z-index:31;height:var(--header-h);color:var(--text);background:0 0;align-items:center;padding:0 .6rem;display:flex;position:fixed;top:0;left:.5rem}.nav-toggle:hover{background:0 0}.nav-backdrop{inset:var(--header-h) 0 0 0;z-index:24;background:#10182873;display:block;position:fixed}.project-sidebar{top:var(--header-h);z-index:25;width:min(280px,85vw);height:calc(100vh - var(--header-h));visibility:hidden;transition:transform .2s,visibility .2s;position:fixed;left:0;transform:translate(-100%)}.project-sidebar.is-open{visibility:visible;transform:none}.project-content{padding:1rem}}@media (prefers-reduced-motion:reduce){.project-sidebar{transition:none}}.plan-card-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1.25rem;display:grid}.plan-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-card);box-shadow:var(--shadow-card);color:var(--text);flex-direction:column;text-decoration:none;transition:box-shadow .15s,transform .15s;display:flex;overflow:hidden}.plan-card:hover{transform:translateY(-2px);box-shadow:0 4px 14px #10182824}.plan-card:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.plan-card__media{aspect-ratio:4/3;background:var(--surface-alt);border-bottom:1px solid var(--line)}.plan-card__media img{object-fit:cover;width:100%;height:100%;display:block}.plan-card__footer{color:var(--text-muted);justify-content:space-between;align-items:center;gap:.75rem;padding:.8rem 1rem;display:flex}.plan-card__name{color:var(--text);text-overflow:ellipsis;white-space:nowrap;font-size:1rem;font-weight:500;overflow:hidden}.plan-card:hover .plan-card__footer svg{color:var(--primary)}@media (prefers-reduced-motion:reduce){.plan-card{transition:none}.plan-card:hover{transform:none}}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-card);box-shadow:var(--shadow-card);box-sizing:border-box;margin-bottom:1.25rem;padding:1.25rem 1.5rem}.card>h2:first-child{margin-top:0}.card table{margin-bottom:0}.card form{max-width:100%}.card form>.field{flex:1;min-width:0}.card form>.field input,.card form>.field select{box-sizing:border-box;width:100%;min-width:0}.card form>button{flex:none}.project-list{max-width:46rem}.project-list ul{padding:0;list-style:none}.project-list li+li{border-top:1px solid var(--line)}.project-list a{padding:.7rem .25rem;text-decoration:none;display:block}.project-list a:hover{background:var(--surface-alt)}.card-grid{columns:3 300px;column-gap:1.25rem}.card-grid>.card{break-inside:avoid}code{font-family:ui-monospace,monospace;font-size:.9em}ul{margin:0;padding-left:1.1rem}a{color:var(--link)}form{max-width:32rem;margin:1rem 0}fieldset{border:1px solid var(--line);border-radius:8px;margin:1rem 0;padding:.75rem 1rem}.field{flex-direction:column;gap:.25rem;margin:.75rem 0;display:flex}.field label{color:var(--text-muted);font-size:.9em;font-weight:600}.inline-fields{flex-wrap:wrap;align-items:center;gap:.5rem 1.25rem;margin:.5rem 0;display:flex}.inline-field{align-items:center;gap:.4rem;display:inline-flex}.inline-field label{color:var(--text-muted);font-size:.9em;font-weight:600}.inline-field input:not([type=checkbox]),.inline-field select{border:1px solid var(--line-strong);border-radius:var(--radius-control);background:var(--surface);color:var(--text);font:inherit;padding:.4rem .6rem}.inline-field input[type=text]{width:14rem}.inline-field__number{width:7rem}.field input,.field select,select,input[type=text],input[type=email],input[type=password],input[type=search],input[type=number]{border:1px solid var(--line-strong);border-radius:var(--radius-control);background:var(--surface);color:var(--text);font:inherit;padding:.4rem .6rem}input:focus-visible,select:focus-visible{border-color:var(--primary);outline:2px solid #1a6fe073}button{border-radius:var(--radius-control);background:var(--primary);color:#fff;font:inherit;cursor:pointer;border:none;padding:.5rem 1.25rem}button:hover{background:var(--primary-hover)}button:disabled{opacity:.6;cursor:default}.row-btn{border-radius:var(--radius-control);background:var(--primary);color:#fff;font:inherit;cursor:pointer;padding:.25rem .75rem;text-decoration:none;display:inline-block}.row-btn:hover{background:var(--primary-hover)}.notice{border-radius:8px;max-width:40rem;padding:.75rem 1rem}.notice-error{color:#7a1f1f;background:#fde8e8;border:1px solid #f5b5b5}.notice-success{color:#14532d;background:#e6f7ec;border:1px solid #a8e0bc}.map-tool-button{border-radius:8px;align-items:center;gap:.4rem;padding:.5rem .9rem;font-size:13px;display:inline-flex;box-shadow:0 2px 10px #1018282e}.plot-progress__track{background:#fdf1de;border:1px solid #f0d9b0;width:min(320px,100%);height:12px;position:relative;overflow:hidden}.plot-progress__bar{background:#ff9f0a;width:40%;animation:1.4s ease-in-out infinite plot-progress-sweep;position:absolute;top:0;bottom:0;left:0}@keyframes plot-progress-sweep{0%{left:-40%}to{left:100%}}@media (prefers-reduced-motion:reduce){.plot-progress__bar{width:55%;animation:none;left:0}}.plan-plot-box{z-index:3;color:#000;white-space:nowrap;cursor:pointer;background:#fff;border:1px solid #000;border-radius:0;padding:1px 4px;font:12px/1.3 system-ui,sans-serif;position:absolute}.plan-plot-box:hover{background:#fff7c2}.plan-marker-popover{display:none}.plan-marker-trigger:hover .plan-marker-popover{display:block}.u-legend .u-marker{border-radius:50%}.project-sidebar>div+div{margin-top:.5rem}.project-sidebar__brand{color:#fff;letter-spacing:.04em;text-transform:uppercase;margin:.25rem .5rem .5rem;font-size:1.35rem;font-weight:500}.project-sidebar__link--primary,.project-sidebar__link--secondary{color:#fff;margin-bottom:.5rem;padding:.7rem .8rem;font-weight:500;line-height:1.25}.project-sidebar__link--secondary span{white-space:normal}.project-sidebar__link--primary{background:#2f9e5b}.project-sidebar__link--primary:hover{background:#278a4e}.project-sidebar__link--secondary{background:#ffffff29}.project-sidebar__link--secondary:hover{background:#ffffff3d}.project-sidebar__link--primary[aria-current=page],.project-sidebar__link--secondary[aria-current=page]{box-shadow:inset 0 0 0 2px #ffffff8c}.home-title{letter-spacing:.02em;text-transform:uppercase;margin-top:.25rem}.home-search{max-width:34rem;margin:1.25rem auto 1.5rem;position:relative}.home-search input{box-sizing:border-box;width:100%;box-shadow:var(--shadow-card);border-radius:10px;padding:.75rem 3rem .75rem 1rem;font-size:1rem}.home-search button{color:var(--text-muted);background:0 0;padding:.5rem;display:flex;position:absolute;top:50%;right:.35rem;transform:translateY(-50%)}.home-search button:hover{color:var(--primary);background:0 0}.inventory-table{margin-top:.5rem}.inventory-table__code{color:var(--text-muted);font-variant-numeric:tabular-nums;white-space:nowrap}.inventory-table td{vertical-align:middle}.pill{color:#fff;border-radius:999px;padding:.15rem .7rem;font-size:.85rem;font-weight:500;display:inline-block}.pill--admin{background:#2f9e5b}.pill--user{background:#3b73c4}.pill--guest{background:#7d8896}.stat-grid{grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:1rem;margin:1rem 0 1.25rem;display:grid}.stat{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-card);box-shadow:var(--shadow-card);flex-direction:column;gap:.25rem;padding:1rem 1.25rem;display:flex}.stat__value{font-variant-numeric:tabular-nums;font-size:1.5rem;font-weight:500}.stat__label{color:var(--text-muted);font-size:.9rem}.audit-filter{flex-wrap:wrap;align-items:flex-end;gap:.75rem;max-width:none;margin:1rem 0;display:flex}.audit-filter .field{margin:0}.audit-filter select,.audit-filter input{box-sizing:border-box;height:2.4rem}.pager{align-items:center;gap:1rem;margin-bottom:0;display:flex}.app-body>main.login-page{box-sizing:border-box;place-items:center;min-height:100vh;padding:1.5rem;display:grid}.login-card{box-sizing:border-box;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-card);width:min(29rem,100%);box-shadow:var(--shadow-card);text-align:center;padding:2rem}.login-logo{width:auto;height:64px;margin:0 auto .5rem;display:block}.login-card h1{text-wrap:balance;margin:.25rem 0 1.25rem;font-size:1.25rem;font-weight:400}.login-card h1 strong{font-weight:700}.login-card form{text-align:left;max-width:none;margin:0}.login-card form button{width:100%;margin-top:.5rem}.button-danger{background:#c0392b}.button-danger:hover{background:#a5301f}.row-actions{white-space:nowrap}.row-actions>*+*{margin-left:.5rem}.toolbar{flex-wrap:wrap;align-items:center;gap:.75rem;margin:1rem 0;display:flex}.toolbar__end{margin-left:auto}.tb{box-sizing:border-box;min-height:40px;font:inherit;cursor:pointer;border:1px solid #0000;border-radius:8px;align-items:center;gap:.5rem;padding:.4rem 1rem;font-size:.95rem;line-height:1.2;text-decoration:none;display:inline-flex}.tb svg{flex:none}.tb--primary{background:var(--primary);color:#fff}.tb--primary:hover{background:var(--primary-hover)}.tb--light{background:var(--surface-alt);border-color:var(--line-strong);color:var(--text)}.tb--light:hover,.tb--light[aria-expanded=true]{background:#e6ebf2}.tb:focus-visible,.dropdown__item:focus-visible{outline-offset:2px;outline:2px solid #1a6fe08c}.tb--split{padding-right:0}.tb__caret{border-left:1px solid var(--line-strong);align-self:stretch;align-items:center;margin-left:.25rem;padding:0 .6rem;display:inline-flex}.dropdown{display:inline-block;position:relative}.dropdown__menu{z-index:40;box-sizing:border-box;background:var(--surface);border:1px solid var(--line);border-radius:10px;min-width:100%;padding:.35rem;position:absolute;top:calc(100% + 6px);left:0;box-shadow:0 8px 24px #10182829}.dropdown__menu--end{left:auto;right:0}.dropdown__item{color:var(--text);white-space:nowrap;border-radius:6px;align-items:center;gap:.7rem;padding:.6rem .8rem;text-decoration:none;display:flex}.dropdown__item:hover{background:var(--surface-alt)}.dropdown__item svg{color:var(--text-muted);flex:none}.dropdown__badge{color:var(--text-muted);align-items:center;gap:.25rem;display:inline-flex}.dropdown__badge--ok svg{color:#1a9d55}.dropdown__badge--progress svg{color:#c07a00}.dropdown__badge--problem svg{color:#c0392b}@media print{.no-print,.app-header,.app-header-title,.project-sidebar{display:none!important}}
