:root{--indigo-950: #161c33;--indigo-900: #1f2a4d;--indigo-800: #283769;--indigo-700: #324487;--indigo-600: #3e53a3;--indigo-500: #4e64bd;--indigo-300: #93a2dc;--indigo-200: #c2cbec;--linen-050: #faf7f0;--linen-100: #f3ece0;--linen-200: #e8ddc9;--linen-300: #d9cab0;--linen-400: #c2ae8f;--linen-600: #8f7a5e;--linen-800: #5a4c3a;--thread-madder: #b0432f;--thread-gold: #c8952a;--thread-moss: #5f7a4a;--thread-rust: #a15a2d;--ok: #4c7a52;--warn: #b0432f;--danger: #9c2b2b;--ink: #221d16;--paper: var(--linen-050);--card: #ffffff;--radius-sm: 3px;--radius-md: 6px;--shadow-card: 0 1px 2px rgba(22, 28, 51, .06), 0 4px 14px rgba(22, 28, 51, .05);--shadow-drawer: -6px 0 24px rgba(22, 28, 51, .14);--font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--font-mono: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace;--sidebar-w: 264px;--topbar-h: 64px;--hole-punched: var(--indigo-700);--hole-empty: var(--linen-300)}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--font-sans);font-size:14.5px;line-height:1.5;-webkit-font-smoothing:antialiased}h1,h2,h3,h4{font-family:var(--font-sans);font-weight:700;margin:0 0 .4em;color:var(--indigo-950);letter-spacing:-.01em}p{margin:0 0 1em}a{color:var(--indigo-700)}button{font-family:inherit}ul,ol{padding-left:1.2em}table{border-collapse:collapse;width:100%}code,.mono{font-family:var(--font-mono)}::selection{background:var(--indigo-300)}:focus-visible{outline:2px solid var(--thread-gold);outline-offset:2px;border-radius:2px}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.eyebrow{text-transform:uppercase;letter-spacing:.12em;font-size:11px;font-weight:700;color:var(--linen-600)}.scrollbar-thin::-webkit-scrollbar{width:8px;height:8px}.scrollbar-thin::-webkit-scrollbar-thumb{background:var(--linen-300);border-radius:4px}@keyframes fadeUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes shimmer{0%{background-position:-200px 0}to{background-position:200px 0}}@keyframes punchIn{0%{transform:scale(.3);opacity:0}60%{transform:scale(1.15);opacity:1}to{transform:scale(1)}}.twill{background-image:repeating-linear-gradient(45deg,rgba(255,255,255,.07) 0px,rgba(255,255,255,.07) 3px,transparent 3px,transparent 6px)}.twill-indigo{background-color:var(--indigo-900);background-image:repeating-linear-gradient(45deg,rgba(255,255,255,.06) 0px,rgba(255,255,255,.06) 2px,transparent 2px,transparent 9px),repeating-linear-gradient(-45deg,rgba(0,0,0,.12) 0px,rgba(0,0,0,.12) 2px,transparent 2px,transparent 9px)}.twill-linen{background-color:var(--linen-100);background-image:repeating-linear-gradient(45deg,rgba(90,76,58,.05) 0px,rgba(90,76,58,.05) 2px,transparent 2px,transparent 9px),repeating-linear-gradient(-45deg,rgba(90,76,58,.04) 0px,rgba(90,76,58,.04) 2px,transparent 2px,transparent 9px)}.twill-card{background-color:var(--card);background-image:repeating-linear-gradient(45deg,rgba(90,76,58,.035) 0px,rgba(90,76,58,.035) 1.5px,transparent 1.5px,transparent 7px)}.selvage{position:relative}.selvage:before{content:"";position:absolute;inset:0 auto 0 0;width:4px;background:repeating-linear-gradient(to bottom,var(--thread-madder) 0px,var(--thread-madder) 6px,var(--linen-050) 6px,var(--linen-050) 10px,var(--indigo-700) 10px,var(--indigo-700) 16px,var(--linen-050) 16px,var(--linen-050) 20px)}.shell{display:grid;grid-template-columns:var(--sidebar-w) 1fr;min-height:100%}.punchcard-sidebar{background:var(--indigo-950);color:var(--linen-100);display:flex;flex-direction:column;position:sticky;top:0;height:100vh;overflow-y:auto;border-right:1px solid var(--indigo-800);background-image:repeating-linear-gradient(to bottom,transparent 0px,transparent 39px,rgba(255,255,255,.035) 39px,rgba(255,255,255,.035) 40px)}.brandcard{padding:20px 18px 14px;border-bottom:1px dashed var(--indigo-700)}.brandcard .mark{display:flex;align-items:center;gap:10px}.brandcard .name{font-weight:800;font-size:15px;letter-spacing:.02em;color:var(--linen-050)}.brandcard .tag{font-size:10.5px;color:var(--indigo-300);text-transform:uppercase;letter-spacing:.14em;margin-top:4px}.navcard{flex:1;padding:10px 0 18px}.navcard .navgroup-label{font-size:10px;text-transform:uppercase;letter-spacing:.14em;color:var(--indigo-300);padding:14px 18px 6px}.navrow{display:grid;grid-template-columns:26px 30px 1fr;align-items:center;gap:10px;padding:8px 18px;color:var(--indigo-200);text-decoration:none;font-size:13.3px;position:relative;transition:background .15s ease,color .15s ease}.navrow .col-idx{font-family:var(--font-mono);font-size:10px;color:var(--indigo-700)}.navrow:hover{background:#ffffff0b;color:var(--linen-050)}.navrow.active{background:var(--indigo-800);color:var(--linen-050)}.navrow.active .col-idx{color:var(--thread-gold)}.navrow.active:before{content:"";position:absolute;left:0;top:4px;bottom:4px;width:3px;background:var(--thread-gold);border-radius:0 2px 2px 0}.punch-glyph{display:grid;grid-template-columns:repeat(4,5px);grid-template-rows:repeat(4,5px);gap:2px}.punch-glyph i{width:5px;height:5px;border-radius:50%;background:var(--hole-empty);opacity:.28;transition:background .15s ease,opacity .15s ease,transform .2s ease}.navrow:hover .punch-glyph i.on,.navrow.active .punch-glyph i.on{background:var(--thread-gold);opacity:1}.navrow.active .punch-glyph i.on{animation:punchIn .3s ease}.sidebar-foot{padding:14px 18px 18px;border-top:1px dashed var(--indigo-700);font-size:11px;color:var(--indigo-300)}.sidebar-foot .loom-status{display:flex;align-items:center;gap:6px;margin-top:6px}.sidebar-foot .dot{width:6px;height:6px;border-radius:50%;background:var(--ok);box-shadow:0 0 0 3px #4c7a5240}.topbar{height:var(--topbar-h);display:flex;align-items:center;justify-content:space-between;padding:0 22px;background:var(--card);border-bottom:1px solid var(--linen-200);position:sticky;top:0;z-index:20}.topbar .crumb{font-size:12px;color:var(--linen-600)}.topbar .crumb strong{color:var(--ink);font-size:15px;display:block;margin-top:2px}.topbar-right{display:flex;align-items:center;gap:16px}.warp-ticks{display:flex;align-items:center;gap:3px;padding:5px 9px;background:var(--linen-100);border-radius:20px}.warp-ticks span{width:3px;height:14px;border-radius:2px}.topbar-user{display:flex;align-items:center;gap:8px;font-size:12.5px}.topbar-user .avatar{width:30px;height:30px;border-radius:50%;background:var(--indigo-700);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:12px}.menu-toggle{display:none}.content{padding:24px 26px 60px;max-width:1320px}.page-head{display:flex;align-items:flex-end;justify-content:space-between;flex-wrap:wrap;gap:14px;margin-bottom:20px}.page-head h1{font-size:22px;margin-bottom:2px}.page-head .sub{color:var(--linen-600);font-size:13px}@media(max-width:980px){.shell{grid-template-columns:1fr}.punchcard-sidebar{position:fixed;left:0;top:0;z-index:40;width:min(280px,84vw);transform:translate(-100%);transition:transform .25s ease;box-shadow:10px 0 30px #00000040}.punchcard-sidebar.open{transform:translate(0)}.menu-toggle{display:inline-flex}.sidebar-scrim{position:fixed;inset:0;background:#161c3373;z-index:35}.content{padding:18px 14px 50px}}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:9px 16px;border-radius:var(--radius-sm);border:1px solid transparent;font-size:13px;font-weight:600;cursor:pointer;transition:transform .12s ease,background .15s ease,box-shadow .15s ease,border-color .15s ease;white-space:nowrap}.btn:active{transform:translateY(1px)}.btn-primary{background:var(--indigo-800);color:#fff}.btn-primary:hover{background:var(--indigo-700)}.btn-ghost{background:transparent;border-color:var(--linen-300);color:var(--ink)}.btn-ghost:hover{border-color:var(--indigo-600);color:var(--indigo-700);background:var(--linen-100)}.btn-danger{background:transparent;border-color:var(--danger);color:var(--danger)}.btn-danger:hover{background:var(--danger);color:#fff}.btn-sm{padding:6px 11px;font-size:12px}.btn-block{width:100%}.btn[disabled]{opacity:.6;cursor:not-allowed}.card{background:var(--card);border:1px solid var(--linen-200);border-radius:var(--radius-md);box-shadow:var(--shadow-card)}.card-pad{padding:18px 20px}.card-head{display:flex;align-items:center;justify-content:space-between;padding:15px 18px;border-bottom:1px solid var(--linen-200)}.card-head h3{font-size:14.5px;margin:0}.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:14px;margin-bottom:22px}.stat-card{padding:16px 18px;border-radius:var(--radius-md);border:1px solid var(--linen-200);background:var(--card);position:relative;overflow:hidden}.stat-card .eyebrow{margin-bottom:8px}.stat-card .value{font-size:25px;font-weight:800;color:var(--indigo-950)}.stat-card .delta{font-size:12px;margin-top:6px;font-weight:600}.delta.up{color:var(--ok)}.delta.down{color:var(--danger)}.thread-chip{display:inline-flex;align-items:center;gap:6px;padding:3px 9px 3px 4px;border-radius:20px;background:var(--linen-100);font-size:11.5px;font-weight:600;color:var(--ink);border:1px solid var(--linen-200)}.thread-chip .swatch{width:13px;height:13px;border-radius:50%;box-shadow:inset 0 0 0 1px #0000001f}.badge{display:inline-flex;align-items:center;gap:5px;padding:3px 9px;border-radius:20px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.03em}.badge:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}.badge-ok{background:#4c7a521f;color:var(--ok)}.badge-warn{background:#c8952a29;color:#8a6414}.badge-danger{background:#9c2b2b1f;color:var(--danger)}.badge-idle{background:var(--linen-200);color:var(--linen-800)}.badge-info{background:#4e64bd21;color:var(--indigo-700)}.filterbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:14px}.filterbar input[type=search],.filterbar select{padding:8px 11px;border-radius:var(--radius-sm);border:1px solid var(--linen-300);background:var(--card);font-size:13px;color:var(--ink)}.filterbar input[type=search]{min-width:200px}.filter-pill{padding:6px 12px;border-radius:20px;border:1px solid var(--linen-300);background:var(--card);font-size:12px;font-weight:600;cursor:pointer;color:var(--linen-800);transition:all .15s ease}.filter-pill.active{background:var(--indigo-800);border-color:var(--indigo-800);color:#fff}.table-wrap{overflow-x:auto;border:1px solid var(--linen-200);border-radius:var(--radius-md);background:var(--card)}.dtable th{text-align:left;font-size:10.5px;text-transform:uppercase;letter-spacing:.07em;color:var(--linen-600);padding:11px 14px;border-bottom:1px solid var(--linen-200);background:var(--linen-050);white-space:nowrap}.dtable th button{background:none;border:none;font:inherit;text-transform:inherit;letter-spacing:inherit;color:inherit;cursor:pointer;display:inline-flex;align-items:center;gap:4px;padding:0}.dtable td{padding:12px 14px;border-bottom:1px solid var(--linen-100);font-size:13px;vertical-align:middle}.dtable tbody tr{cursor:pointer;transition:background .12s ease}.dtable tbody tr:hover{background:var(--linen-050)}.dtable tbody tr:last-child td{border-bottom:none}.row-primary{font-weight:700;color:var(--indigo-950)}.row-sub{font-size:11.5px;color:var(--linen-600)}.empty-state{padding:50px 20px;text-align:center;color:var(--linen-600)}.empty-state .glyph{margin:0 auto 14px;width:64px;height:64px}.empty-state h4{color:var(--ink);font-size:15px}.empty-state p{font-size:13px;max-width:340px;margin-inline:auto}.drawer-scrim{position:fixed;inset:0;background:#161c3366;z-index:60;animation:fadeUp .2s ease}.drawer{position:fixed;top:0;right:0;bottom:0;width:min(440px,92vw);background:var(--linen-050);z-index:61;box-shadow:var(--shadow-drawer);display:flex;flex-direction:column;animation:drawerIn .28s cubic-bezier(.2,.7,.3,1)}@keyframes drawerIn{0%{transform:translate(100%)}to{transform:translate(0)}}.drawer-head{padding:18px 20px;border-bottom:1px solid var(--linen-200);display:flex;justify-content:space-between;align-items:flex-start;background:var(--card)}.drawer-body{padding:18px 20px 30px;overflow-y:auto;flex:1}.drawer-close{background:none;border:1px solid var(--linen-300);border-radius:50%;width:30px;height:30px;cursor:pointer;font-size:15px;line-height:1;color:var(--linen-800)}.drawer-close:hover{background:var(--linen-100)}.field-row{display:flex;justify-content:space-between;gap:10px;padding:9px 0;border-bottom:1px dashed var(--linen-200);font-size:13px}.field-row dt{color:var(--linen-600)}.field-row dd{margin:0;font-weight:600;text-align:right}.skel{background:linear-gradient(90deg,var(--linen-100) 25%,var(--linen-200) 37%,var(--linen-100) 63%);background-size:400px 100%;animation:shimmer 1.3s linear infinite;border-radius:4px}.field{margin-bottom:16px}.field label{display:block;font-size:12.5px;font-weight:600;margin-bottom:6px;color:var(--indigo-950)}.field input,.field select,.field textarea{width:100%;padding:10px 12px;border:1px solid var(--linen-300);border-radius:var(--radius-sm);font-size:13.5px;background:#fff;color:var(--ink)}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--indigo-600)}.field .hint{font-size:11.5px;color:var(--linen-600);margin-top:5px}.field .error{font-size:11.5px;color:var(--danger);margin-top:5px;font-weight:600}.field.has-error input{border-color:var(--danger)}.checkline{display:flex;align-items:flex-start;gap:8px;font-size:12.5px;color:var(--linen-800)}.punch-tile{border:1px solid var(--linen-200);border-radius:var(--radius-md);background:var(--card);overflow:hidden;cursor:pointer;transition:transform .18s ease,box-shadow .18s ease}.punch-tile:hover{transform:translateY(-3px);box-shadow:var(--shadow-card)}.punch-tile .preview{aspect-ratio:4 / 3;display:grid;place-items:center;background:var(--indigo-950)}.punch-tile .meta{padding:12px 14px}.punch-tile .meta h4{font-size:13px;margin:0 0 2px}.punch-tile .meta .sub{font-size:11.5px;color:var(--linen-600)}.progress-track{height:6px;background:var(--linen-200);border-radius:4px;overflow:hidden}.progress-fill{height:100%;background:var(--indigo-600);border-radius:4px;transition:width .4s ease}.tabs{display:flex;gap:4px;border-bottom:1px solid var(--linen-200);margin-bottom:18px}.tabs button{background:none;border:none;padding:10px 14px;font-size:13px;font-weight:600;color:var(--linen-600);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px}.tabs button.active{color:var(--indigo-800);border-bottom-color:var(--indigo-800)}.note-card{display:flex;gap:10px;padding:12px 14px;border-radius:var(--radius-md);border:1px solid var(--linen-200);background:var(--linen-100);font-size:12.5px;align-items:flex-start}.chart-legend{display:flex;gap:14px;flex-wrap:wrap;margin-top:10px;font-size:11.5px;color:var(--linen-600)}.chart-legend span{display:inline-flex;align-items:center;gap:5px}.chart-legend i{width:9px;height:9px;border-radius:2px;display:inline-block}.two-col{display:grid;grid-template-columns:1.4fr 1fr;gap:16px}@media(max-width:900px){.two-col{grid-template-columns:1fr}}.grid-3{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:14px}.grid-2{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px}.auth-screen{min-height:100vh;display:grid;grid-template-columns:1fr 1fr;background:var(--paper)}.auth-panel{background:var(--indigo-950);color:var(--linen-100);position:relative;overflow:hidden;display:flex;flex-direction:column;justify-content:space-between;padding:40px;background-image:repeating-linear-gradient(45deg,rgba(255,255,255,.05) 0px,rgba(255,255,255,.05) 2px,transparent 2px,transparent 10px),repeating-linear-gradient(-45deg,rgba(0,0,0,.15) 0px,rgba(0,0,0,.15) 2px,transparent 2px,transparent 10px)}.auth-panel .brand{font-weight:800;font-size:16px;letter-spacing:.02em}.auth-punchboard{display:grid;grid-template-columns:repeat(12,1fr);gap:7px;margin:auto 0}.auth-punchboard i{aspect-ratio:1;border-radius:50%;background:#ffffff14}.auth-punchboard i.on{background:var(--thread-gold);animation:punchIn .5s ease both}.auth-panel .quote{font-size:13px;color:var(--indigo-200);max-width:320px;line-height:1.6}.auth-form-side{display:flex;align-items:center;justify-content:center;padding:40px 24px}.auth-card{width:100%;max-width:380px}.auth-card .eyebrow{margin-bottom:8px}.auth-card h1{font-size:24px}.auth-card .lede{color:var(--linen-600);font-size:13px;margin-bottom:26px}.pw-field{position:relative}.pw-field button{position:absolute;right:10px;top:50%;transform:translateY(-50%);background:none;border:none;font-size:11.5px;font-weight:700;color:var(--indigo-700);cursor:pointer;padding:4px}.strength-meter{display:flex;gap:4px;margin-top:8px}.strength-meter i{flex:1;height:4px;border-radius:2px;background:var(--linen-200);transition:background .2s ease}.strength-label{font-size:11px;margin-top:5px;font-weight:600}.auth-row{display:flex;align-items:center;justify-content:space-between;font-size:12.5px;margin-bottom:18px}.auth-foot{margin-top:22px;font-size:13px;text-align:center;color:var(--linen-600)}@media(max-width:860px){.auth-screen{grid-template-columns:1fr}.auth-panel{display:none}}.error-screen{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:30px;background:var(--paper);background-image:repeating-linear-gradient(45deg,rgba(90,76,58,.04) 0px,rgba(90,76,58,.04) 2px,transparent 2px,transparent 9px)}.error-card{max-width:480px;text-align:center}.error-art{margin:0 auto 20px;width:220px}.error-code{font-size:13px;letter-spacing:.15em;color:var(--indigo-700);font-weight:800;text-transform:uppercase}.error-card h1{font-size:21px;margin:8px 0 10px}.error-card p{color:var(--linen-600);font-size:13.5px}.error-actions{display:flex;gap:10px;justify-content:center;margin-top:22px;flex-wrap:wrap}.page-enter{animation:pageWeave .32s ease both}@keyframes pageWeave{0%{opacity:0;clip-path:inset(0 100% 0 0)}to{opacity:1;clip-path:inset(0 0 0 0)}}@media(prefers-reduced-motion:reduce){.page-enter{animation:none}}
