:root{--ink: #000000;--charcoal: #545454;--steel: #80858b;--fog: #e9e9e9;--white: #ffffff;--paper: #f6f6f5;--line: #e3e3e1;--line-strong: #d2d2cf;--muted: #8a8a86;--ok: #3f6f54;--warn: #9a6a2f;--danger: #8a3b3b;--radius: 4px;--radius-lg: 8px;--shadow: 0 1px 2px rgba(0, 0, 0, .04), 0 12px 32px rgba(0, 0, 0, .06);--shadow-lift: 0 8px 40px rgba(0, 0, 0, .14);--font: "Montserrat", "Segoe UI", Arial, sans-serif}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:var(--font);color:var(--ink);background:var(--paper);font-weight:400;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}button{font-family:inherit;cursor:pointer}input,select,textarea{font-family:inherit}a{color:inherit}.overline{font-size:11px;font-weight:600;letter-spacing:.22em;text-transform:uppercase;color:var(--steel)}.eyebrow{font-size:12px;letter-spacing:.18em;text-transform:uppercase;color:var(--muted);font-weight:500}.wordmark{display:inline-flex;flex-direction:column;align-items:center;line-height:1;-webkit-user-select:none;user-select:none}.wordmark .ts-name{font-weight:600;letter-spacing:.34em;font-size:18px;padding-left:.34em}.wordmark .ts-tag{font-weight:400;letter-spacing:.62em;font-size:9px;color:var(--steel);margin-top:7px;padding-left:.62em}.wordmark.lg .ts-name{font-size:30px}.wordmark.lg .ts-tag{font-size:12px;margin-top:12px}.ts-logo{display:block;width:auto;max-width:100%;object-fit:contain;align-self:flex-start;flex:0 0 auto;-webkit-user-select:none;user-select:none}.ts-logo.light{filter:invert(1)}.monogram{display:inline-grid;place-items:center;background:var(--ink);color:var(--white);width:38px;height:38px;border-radius:var(--radius);font-weight:600;letter-spacing:.04em;line-height:.82;font-size:13px;text-align:center}.monogram span{display:block}.btn{border:1px solid var(--ink);background:var(--ink);color:var(--white);padding:11px 20px;border-radius:var(--radius);font-size:12px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;transition:opacity .15s ease,background .15s ease,transform .05s ease}.btn:hover{opacity:.85}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.4;cursor:not-allowed}.btn.ghost{background:transparent;color:var(--ink);border-color:var(--line-strong)}.btn.ghost:hover{background:var(--white);opacity:1;border-color:var(--ink)}.btn.subtle{background:transparent;border-color:transparent;color:var(--charcoal);letter-spacing:.1em;padding:8px 12px}.btn.subtle:hover{background:var(--fog);opacity:1}.btn.danger{background:transparent;border-color:var(--danger);color:var(--danger)}.btn.danger:hover{background:var(--danger);color:var(--white);opacity:1}.btn.block{width:100%;justify-content:center;display:flex}.icon-btn{border:none;background:transparent;color:var(--steel);width:34px;height:34px;border-radius:var(--radius);display:inline-grid;place-items:center;transition:background .15s ease,color .15s ease}.icon-btn:hover{background:var(--fog);color:var(--ink)}.field{display:block;margin-bottom:18px}.field>label{display:block;font-size:11px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--charcoal);margin-bottom:8px}.input,.textarea,.select{width:100%;border:1px solid var(--line-strong);background:var(--white);border-radius:var(--radius);padding:12px 14px;font-size:14px;color:var(--ink);outline:none;transition:border-color .15s ease,box-shadow .15s ease}.input:focus,.textarea:focus,.select:focus{border-color:var(--ink);box-shadow:0 0 0 3px #0000000f}.textarea{resize:vertical;min-height:92px;line-height:1.5}.input-group{display:flex;gap:8px;align-items:stretch}.input-group .input{flex:1}.auth{min-height:100%;display:grid;grid-template-columns:1.1fr 1fr}.auth-art{background:var(--ink);color:var(--white);display:flex;flex-direction:column;justify-content:space-between;padding:56px;position:relative;overflow:hidden}.auth-art .wordmark .ts-tag{color:#ffffffb3}.auth-art-hero{margin:auto 0}.auth-art-hero h1{font-weight:300;font-size:46px;line-height:1.08;letter-spacing:-.01em;margin:0 0 22px}.auth-art-hero h1 b{font-weight:600}.auth-art-hero p{color:#ffffffb8;font-size:15px;line-height:1.7;max-width:38ch;font-weight:300}.auth-art .rule{height:1px;background:#ffffff29;margin:28px 0}.auth-art-foot{font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:#ffffff80}.auth-form-wrap{display:grid;place-items:center;padding:40px}.auth-form{width:100%;max-width:380px}.auth-form h2{font-weight:600;font-size:24px;margin:8px 0 4px;letter-spacing:.01em}.auth-form .sub{color:var(--muted);font-size:14px;margin-bottom:30px;line-height:1.5}.auth-switch{margin-top:22px;font-size:13px;color:var(--muted);text-align:center}.auth-switch button{border:none;background:none;color:var(--ink);font-weight:600;text-decoration:underline;text-underline-offset:3px}@media(max-width:860px){.auth{grid-template-columns:1fr}.auth-art{display:none}}.shell{display:grid;grid-template-columns:264px 1fr;height:100%}.sidebar{background:var(--white);border-right:1px solid var(--line);display:flex;flex-direction:column;padding:22px 16px;gap:4px}.sidebar-brand{padding:6px 8px 16px;margin-bottom:8px;border-bottom:1px solid var(--line);text-align:center}.sidebar-brand .ts-logo{margin:0 auto}.auth-form-logo{margin:0 auto 72px}.sidebar-head{display:flex;align-items:center;gap:12px;padding:4px 8px 20px}.sidebar-head .who{overflow:hidden}.sidebar-head .who .nm{font-size:13px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar-head .who .em{font-size:11px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.nav-section{margin-top:14px;padding:0 8px 6px}.nav-item{display:flex;align-items:center;gap:12px;width:100%;border:none;background:transparent;text-align:left;padding:10px 12px;border-radius:var(--radius);color:var(--charcoal);font-size:13.5px;font-weight:500;transition:background .12s ease,color .12s ease}.nav-item:hover{background:var(--paper)}.nav-item.active{background:var(--ink);color:var(--white)}.nav-item .count{margin-left:auto;font-size:11px;color:var(--muted)}.nav-item.active .count{color:#fff9}.nav-item svg{flex-shrink:0}.sidebar-foot{margin-top:auto;padding-top:16px;border-top:1px solid var(--line);display:flex;flex-direction:column;gap:2px}.main{display:flex;flex-direction:column;overflow:hidden}.topbar{display:flex;align-items:center;gap:16px;padding:20px 32px;border-bottom:1px solid var(--line);background:var(--paper)}.topbar h1{font-size:17px;font-weight:600;letter-spacing:.02em;margin:0}.search{flex:1;max-width:460px;position:relative}.search input{width:100%;border:1px solid var(--line-strong);border-radius:40px;padding:10px 16px 10px 40px;font-size:13.5px;background:var(--white);outline:none}.search input:focus{border-color:var(--ink)}.search svg{position:absolute;left:14px;top:50%;transform:translateY(-50%);color:var(--steel)}.content{flex:1;overflow:auto;padding:28px 32px 60px}.item-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px}.card{background:var(--white);border:1px solid var(--line);border-radius:var(--radius-lg);padding:18px;transition:border-color .15s ease,box-shadow .15s ease,transform .05s ease;cursor:pointer;position:relative}.card:hover{border-color:var(--line-strong);box-shadow:var(--shadow)}.card .row1{display:flex;align-items:center;gap:12px}.avatar{width:40px;height:40px;border-radius:var(--radius);background:var(--fog);color:var(--charcoal);display:grid;place-items:center;font-weight:600;font-size:15px;flex-shrink:0;text-transform:uppercase}.card .nm{font-weight:600;font-size:14.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.card .meta{font-size:12px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:2px}.card .star{position:absolute;top:14px;right:14px;color:var(--line-strong)}.card .star.on{color:var(--ink)}.type-pill{display:inline-block;font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--steel);border:1px solid var(--line);border-radius:40px;padding:3px 10px;margin-top:14px}.empty{text-align:center;padding:80px 20px;color:var(--muted)}.empty .monogram{margin:0 auto 22px;width:52px;height:52px;font-size:16px;opacity:.9}.empty .empty-logo{margin:0 auto 26px;opacity:.8}.empty h3{color:var(--ink);font-weight:600;font-size:18px;margin:0 0 8px}.empty p{max-width:42ch;margin:0 auto 22px;line-height:1.6;font-size:14px}.scrim{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000006b;display:grid;place-items:center;padding:24px;z-index:40;animation:fade .15s ease}@keyframes fade{0%{opacity:0}}.modal{background:var(--white);border-radius:var(--radius-lg);box-shadow:var(--shadow-lift);width:100%;max-width:540px;max-height:90vh;overflow:auto;animation:pop .16s ease}@keyframes pop{0%{transform:translateY(8px) scale(.99);opacity:0}}.modal.wide{max-width:620px}.modal-head{display:flex;align-items:center;justify-content:space-between;padding:22px 26px;border-bottom:1px solid var(--line);position:sticky;top:0;background:var(--white)}.modal-head h2{margin:0;font-size:17px;font-weight:600}.modal-body{padding:26px}.modal-foot{display:flex;gap:12px;justify-content:flex-end;padding:18px 26px;border-top:1px solid var(--line);position:sticky;bottom:0;background:var(--white)}.modal-foot .spacer{margin-right:auto}.segmented{display:inline-flex;border:1px solid var(--line-strong);border-radius:var(--radius);overflow:hidden;margin-bottom:22px}.segmented button{border:none;background:var(--white);padding:9px 16px;font-size:12px;letter-spacing:.08em;text-transform:uppercase;font-weight:600;color:var(--muted);border-right:1px solid var(--line-strong)}.segmented button:last-child{border-right:none}.segmented button.on{background:var(--ink);color:var(--white)}.value-row{display:flex;align-items:center;gap:8px}.value-row .input{flex:1;font-family:Montserrat,monospace}.mono{font-variant-numeric:tabular-nums;letter-spacing:.02em}.meter{display:flex;gap:5px;margin-top:10px}.meter span{height:4px;flex:1;background:var(--fog);border-radius:4px;transition:background .2s ease}.meter.s1 span:nth-child(-n+1),.meter.s2 span:nth-child(-n+2),.meter.s3 span:nth-child(-n+3),.meter.s4 span:nth-child(-n+4){background:var(--ink)}.meter-label{font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin-top:8px}input[type=range]{width:100%;accent-color:var(--ink)}.check{display:flex;align-items:center;gap:10px;font-size:13.5px;color:var(--charcoal);padding:7px 0;cursor:pointer}.check input{width:16px;height:16px;accent-color:var(--ink)}.gen-out{background:var(--ink);color:var(--white);border-radius:var(--radius);padding:18px 16px;font-size:18px;letter-spacing:.04em;word-break:break-all;text-align:center;min-height:58px;display:grid;place-items:center}.table{width:100%;border-collapse:collapse;background:var(--white);border:1px solid var(--line);border-radius:var(--radius-lg);overflow:hidden}.table th{text-align:left;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--steel);font-weight:600;padding:14px 18px;border-bottom:1px solid var(--line)}.table td{padding:14px 18px;border-bottom:1px solid var(--line);font-size:13.5px}.table tr:last-child td{border-bottom:none}.tag{display:inline-block;font-size:10px;letter-spacing:.1em;text-transform:uppercase;font-weight:600;padding:3px 9px;border-radius:40px}.tag.admin{background:var(--ink);color:var(--white)}.tag.member{background:var(--fog);color:var(--charcoal)}.tag.active{color:var(--ok);border:1px solid var(--ok)}.tag.disabled{color:var(--danger);border:1px solid var(--danger)}.panel{background:var(--white);border:1px solid var(--line);border-radius:var(--radius-lg);padding:26px;margin-bottom:18px;max-width:620px}.panel h3{margin:0 0 4px;font-size:15px;font-weight:600}.panel .desc{color:var(--muted);font-size:13px;line-height:1.6;margin:0 0 20px}.lock{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--ink);color:var(--white);display:grid;place-items:center;z-index:60}.lock-inner{width:100%;max-width:340px;text-align:center;padding:24px}.lock-inner .wordmark,.lock-inner .lock-logo{margin:0 auto 36px}.lock-inner .wordmark .ts-tag{color:#fff9}.lock-inner .input{background:#ffffff0f;border-color:#fff3;color:var(--white);text-align:center}.lock-inner .input:focus{border-color:var(--white);box-shadow:none}.lock-inner .btn{background:var(--white);color:var(--ink);border-color:var(--white);margin-top:14px}.toast-wrap{position:fixed;bottom:26px;left:50%;transform:translate(-50%);z-index:80;display:flex;flex-direction:column;gap:8px;align-items:center}.toast{background:var(--ink);color:var(--white);padding:12px 20px;border-radius:40px;font-size:13px;letter-spacing:.02em;box-shadow:var(--shadow-lift);animation:pop .18s ease}.form-error{background:#8a3b3b14;border:1px solid rgba(138,59,59,.3);color:var(--danger);padding:11px 14px;border-radius:var(--radius);font-size:13px;margin-bottom:18px;line-height:1.5}.hint{font-size:12px;color:var(--muted);margin-top:7px;line-height:1.5}.row{display:flex;gap:14px}.row>*{flex:1}.spin{width:16px;height:16px;border:2px solid rgba(255,255,255,.35);border-top-color:#fff;border-radius:50%;animation:rot .7s linear infinite;display:inline-block}@keyframes rot{to{transform:rotate(360deg)}}.section-title{display:flex;align-items:baseline;justify-content:space-between;margin:6px 0 18px}.section-title .count{font-size:12px;color:var(--muted)}.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:14px}.stat{background:var(--white);border:1px solid var(--line);border-radius:var(--radius-lg);padding:22px 24px}.stat-value{font-size:34px;font-weight:300;line-height:1;letter-spacing:-.02em}.stat-label{margin-top:10px;font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--steel);font-weight:600}.chip{display:inline-block;font-size:11px;background:var(--fog);color:var(--charcoal);border-radius:40px;padding:3px 10px;margin:2px 4px 2px 0;white-space:nowrap}
