*,*:before,*:after{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;min-width:320px;font-family:var(--tf-font-sans);font-size:var(--tf-type-body-sm);font-weight:var(--tf-font-weight-body);line-height:1.5;color:var(--tf-text);background:var(--tf-body-gradient);transition:background-color .22s ease,color .22s ease}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;background-image:linear-gradient(var(--tf-grid-line) 1px,transparent 1px),linear-gradient(90deg,var(--tf-grid-line) 1px,transparent 1px);background-size:28px 28px;-webkit-mask-image:linear-gradient(180deg,rgba(0,0,0,.2),transparent 80%);mask-image:linear-gradient(180deg,rgba(0,0,0,.2),transparent 80%)}body.workspace-body:before{display:none}body.public-body{background:#f6f8fc}body.public-body:before{display:none}#app{min-height:100vh}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}img{max-width:100%;display:block}.page-container{width:min(var(--tf-container),calc(100vw - 32px));margin:0 auto}.soft-surface{background:var(--tf-panel-muted);border:1px solid var(--tf-border);border-radius:var(--tf-radius-md);box-shadow:var(--tf-shadow-sm)}.pill{display:inline-flex;align-items:center;gap:8px;min-height:30px;padding:0 12px;border-radius:999px;font-size:var(--tf-type-caption);font-weight:var(--tf-font-weight-title);letter-spacing:.04em}.pill--neutral{background:var(--tf-control-bg);color:var(--tf-text);border:1px solid var(--tf-border)}.pill--brand{background:var(--tf-brand-soft);color:var(--tf-brand)}.pill--success{background:var(--tf-success-soft);color:var(--tf-success)}.pill--warning{background:var(--tf-warning-soft);color:var(--tf-warning)}.field-control,.field-select,.field-textarea{width:100%;border:1px solid var(--tf-border);border-radius:var(--tf-radius-sm);background:var(--tf-control-bg);color:var(--tf-text);transition:border-color .2s ease,box-shadow .2s ease,background-color .2s ease}.field-control,.field-select{min-height:var(--tf-control-height-md);padding:0 16px}.field-textarea{min-height:120px;padding:14px 16px;resize:vertical}.field-control:focus,.field-select:focus,.field-textarea:focus{outline:none;border-color:var(--tf-brand);box-shadow:var(--tf-shadow-focus);background:var(--tf-control-bg-hover)}.grid-cards{display:grid;gap:var(--tf-space-2);grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}.auth-page{display:flex;align-items:center;min-height:calc(100vh - 200px)}.auth-support-note{display:flex;flex-direction:column;gap:10px;padding:18px 20px;border:1px solid var(--tf-border);border-radius:20px;background:#ffffffd6}.auth-support-note__eyebrow{margin:0;color:var(--tf-brand);font-size:var(--tf-type-caption);font-weight:var(--tf-font-weight-title);letter-spacing:.08em;text-transform:uppercase}.auth-support-note__title{margin:0;color:var(--tf-text);font-size:var(--tf-type-card-title);font-weight:var(--tf-font-weight-title);line-height:1.2}.auth-support-note__description{margin:0;color:var(--tf-text-soft);font-size:var(--tf-type-body-sm);line-height:1.75}.auth-card{display:flex;flex-direction:column;gap:var(--tf-space-3);align-self:start}.auth-card__header{display:flex;flex-direction:column;gap:var(--tf-space-1)}.auth-card__eyebrow{margin:0;color:var(--tf-brand);font-size:var(--tf-type-caption);font-weight:var(--tf-font-weight-title);letter-spacing:.08em;text-transform:uppercase}.auth-card__header h2{margin:0;font-size:var(--tf-type-section-title);font-weight:var(--tf-font-weight-title);line-height:1.15}.auth-card__header p{margin:0;color:var(--tf-text-soft);font-size:var(--tf-type-body-sm);line-height:1.8}.auth-form{display:flex;flex-direction:column;gap:var(--tf-space-2)}.form-error{margin:0;color:var(--tf-danger);font-size:var(--tf-type-body-sm);line-height:1.6}.form-links{display:flex;justify-content:space-between;gap:var(--tf-space-2);flex-wrap:wrap}.text-link{color:var(--tf-brand);font-size:var(--tf-type-body-sm);font-weight:var(--tf-font-weight-ui)}.text-link:hover{color:var(--tf-brand-strong)}@media (max-width: 720px){.page-container{width:min(var(--tf-container),calc(100vw - 20px))}}
