/* Toolly AI Works — ported from globals.css (Next.js/Tailwind original) to plain CSS.
   shadcn Progress/Switch/Toaster(sonner) replaced with [data-slot] / .switch / .toast rules below
   since the Tailwind build (@import tailwindcss / tw-animate-css / vendor shadcn css) is not available here. */
:root{--background:#f3f6fb;--foreground:#182033;--card:#fff;--card-foreground:#182033;--popover:#fff;--popover-foreground:#182033;--primary:#315ff4;--primary-foreground:#fff;--secondary:#eef2ff;--secondary-foreground:#21365f;--muted:#f2f4f8;--muted-foreground:#687389;--accent:#e9efff;--accent-foreground:#2345b8;--destructive:#d6455d;--border:#dde4ef;--input:#d7dfeb;--ring:#315ff4;--radius:.9rem}
*{box-sizing:border-box}html{background:#f3f6fb}body{margin:0;background:var(--background);color:var(--foreground);font-family:"Pretendard Variable",Pretendard,"Noto Sans KR",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}button,input,textarea,select{font:inherit}button{color:inherit}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:3px solid #315ff459;outline-offset:2px}
.app{min-height:100vh}.topbar{height:70px;position:fixed;z-index:50;inset:0 0 auto;display:flex;align-items:center;padding:0 24px;background:#fffffff0;border-bottom:1px solid #e3e8f1;backdrop-filter:blur(18px)}.brand{flex:0 0 auto;border:0;background:transparent;padding:0;display:flex;align-items:center;gap:11px;text-align:left;cursor:pointer;font-size:17px}.brand-mark{width:38px;height:38px;display:grid;place-items:center;border-radius:13px;color:white;background:linear-gradient(135deg,#315ff4,#7558df);box-shadow:0 8px 20px #315ff440}.brand-mark svg{width:20px}.brand b{color:#315ff4}.brand small{display:block;margin-top:1px;font-size:10px;letter-spacing:.08em;color:#8892a4}
/* .top-center is left empty (demo badge removed by product decision) — kept only as a flexible spacer, never assumed to carry content. */
.top-center{flex:1}
/* .top-actions is right-aligned via margin-left:auto rather than a fixed width, since its content
   (login link / profile+dropdown / nothing, depending on auth state) is variable-width or may be empty. */
.top-actions{width:auto;margin-left:auto;display:flex;justify-content:flex-end;align-items:center;gap:8px}.top-actions button{height:38px;border:0;border-radius:11px;background:#f3f6fa;display:flex;align-items:center;gap:7px;padding:0 11px;cursor:pointer;font-size:13px}.top-actions svg{width:18px}.top-actions button b{display:grid;place-items:center;min-width:19px;height:19px;border-radius:50%;background:#315ff4;color:#fff;font-size:10px}
.rail{position:fixed;z-index:40;top:70px;bottom:0;left:0;width:86px;padding:18px 10px 14px;border-right:1px solid #e1e7f0;background:#fff;display:flex;flex-direction:column;justify-content:center;gap:28px}.rail>div{display:grid;gap:6px}.rail-btn{width:66px;min-height:55px;border:0;border-radius:14px;background:transparent;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;color:#7b8598;font-size:11px;cursor:pointer;transition:.2s}.rail-btn svg{width:19px}.rail-btn:hover{color:#315ff4;background:#f3f6ff}.rail-btn.active{color:#315ff4;background:#eaf0ff;font-weight:800}
.main{min-height:100vh;padding:90px 24px 34px 110px}.page{max-width:1480px;margin:0 auto}.page-in{animation:page-in .45s cubic-bezier(.2,.75,.3,1) both}@keyframes page-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.panel{border:1px solid #e0e6ef;border-radius:20px;background:#fff;box-shadow:0 8px 28px #23304c0d}
.hero{height:430px;position:relative;overflow:hidden;border-radius:28px;background:#17264b;box-shadow:0 18px 55px #192b541f}.hero>img{width:100%;height:100%;object-fit:cover;object-position:center 48%;animation:scene 14s ease-in-out infinite alternate}@keyframes scene{from{transform:scale(1.015)}to{transform:scale(1.055)}}.hero-shade{position:absolute;inset:0;background:linear-gradient(90deg,#07112ee6 0%,#0c1d41a6 31%,#09183a0d 66%),linear-gradient(0deg,#0a16325c,transparent 48%)}.hero-copy{position:absolute;left:clamp(25px,4vw,66px);top:58px;width:min(540px,46%);color:#fff}.hero-copy>span{padding:8px 12px;display:inline-flex;align-items:center;gap:7px;color:#dce6ff;background:#ffffff1c;border:1px solid #ffffff29;border-radius:999px;font-size:12px;font-weight:800;backdrop-filter:blur(8px)}.hero-copy svg{width:15px}.hero-copy h1{margin:17px 0 12px;font-size:clamp(30px,3vw,49px);line-height:1.22;letter-spacing:-.045em}.hero-copy p{max-width:485px;margin:0;font-size:16px;line-height:1.8;color:#d7deec}.hero-status{position:absolute;right:22px;bottom:18px;padding:10px 13px;display:flex;align-items:center;gap:8px;border-radius:12px;color:#eaf0ff;background:#0e1b37c2;backdrop-filter:blur(9px);font-size:12px}.hero-status i{width:8px;height:8px;border-radius:50%;background:#59dda1;box-shadow:0 0 0 5px #59dda11f;animation:live 2s infinite}@keyframes live{50%{box-shadow:0 0 0 8px #59dda100}}
.intake{width:min(1020px,calc(100% - 44px));position:relative;z-index:3;margin:-54px auto 22px;padding:17px;border-radius:22px;background:#fffffff5;border:1px solid #e0e6f0;box-shadow:0 20px 55px #1c2c4e2e;backdrop-filter:blur(16px)}.input-box{border:1px solid #cfd8e6;border-radius:15px;background:#fff;transition:.2s}.input-box:focus-within{border-color:#315ff4;box-shadow:0 0 0 4px #315ff414}.input-box textarea{width:100%;min-height:76px;resize:none;border:0;outline:0;padding:18px 18px 8px;background:transparent;font-size:16px;color:#17213a}.input-box textarea::placeholder{color:#8a94a7}.input-box>div{padding:7px 9px 9px 14px;display:flex;align-items:center;gap:11px}.input-box button{border:0;background:transparent;display:flex;align-items:center;gap:6px;color:#6f7b91;font-size:12px;cursor:pointer}.input-box button svg{width:17px}.input-box div>span{margin-left:auto;font-size:11px;color:#a0a8b6}.input-box .send{width:38px;height:38px;display:grid;place-items:center;border-radius:11px;color:#fff;background:#315ff4;box-shadow:0 7px 16px #315ff440}.quick{margin-top:13px;display:flex;flex-wrap:wrap;align-items:center;gap:8px}.quick>span{margin:0 4px;color:#8b95a8;font-size:12px}.quick button{padding:8px 10px;border:1px solid #e0e6ef;border-radius:10px;background:#f8f9fc;display:flex;align-items:center;gap:2px;color:#49566e;font-size:12px;cursor:pointer}.quick button:hover{color:#315ff4;border-color:#b8c8fb;background:#f3f6ff}.quick svg{width:14px}
.dashboard-grid{display:grid;grid-template-columns:1.25fr 1fr .85fr;gap:15px}.dashboard-grid>.panel{min-height:222px;padding:20px}.section-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.section-head>span small,.section-head>span b{display:block}.section-head small{color:#8b94a6;font-size:11px;font-weight:700;letter-spacing:.04em}.section-head b{margin-top:4px;font-size:17px;letter-spacing:-.02em}.section-head button{border:0;background:transparent;color:#315ff4;font-size:11px;cursor:pointer}
.mini-grid{margin-top:14px;display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.mini-grid>button{min-width:0;height:64px;padding:5px 8px 5px 5px;border:0;border-radius:13px;background:#f6f8fb;display:flex;align-items:center;gap:7px;text-align:left;cursor:pointer}.mini-grid span{min-width:0}.mini-grid b,.mini-grid small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mini-grid b{font-size:12px}.mini-grid small{margin-top:2px;color:#8a94a6;font-size:10px}.mini-grid em,.assigned em{margin-left:auto;white-space:nowrap;font-style:normal;font-size:9px;padding:4px 6px;border-radius:999px}.working{color:#2b7a55!important;background:#eaf7f0!important}.reviewing{color:#9b6420!important;background:#fff5e7!important}.ready{color:#315ff4!important;background:#edf2ff!important}
.avatar{position:relative;overflow:hidden;aspect-ratio:.953;flex:0 0 auto;background:linear-gradient(160deg,#f1f5fc,#e7edf7);border-radius:18px;transform-origin:50% 100%}.avatar>img{position:absolute;width:400%;max-width:none;height:400%;object-fit:fill}.avatar.compact{width:50px;border-radius:11px}.avatar.active{animation:avatar 3.8s ease-in-out infinite}@keyframes avatar{0%,100%{transform:rotate(-.4deg) scale(1)}48%{transform:rotate(.5deg) scale(1.012,.995)}70%{transform:rotate(0) scale(.998,1.006)}}
.progress-line{height:8px;margin:30px 0 10px;overflow:hidden;border-radius:99px;background:#e9edf4}.progress-line i{display:block;width:72%;height:100%;border-radius:inherit;background:linear-gradient(90deg,#315ff4,#7558df)}.snapshot-meta{display:flex;align-items:baseline;gap:8px}.snapshot-meta b{font-size:27px;color:#315ff4}.snapshot-meta span{font-size:12px;color:#5c687e}.snapshot-meta small{margin-left:auto;color:#9ba4b3;font-size:9px}.step-dots{margin-top:21px;display:flex;justify-content:space-between;color:#7f899a;font-size:9px}.step-dots .current{color:#315ff4;font-weight:800}.files-panel>div:last-child{height:139px;display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin-top:14px}.files-panel>div:last-child span{padding:10px;display:grid;grid-template-columns:auto 1fr;align-items:center;gap:6px;border-radius:12px;background:#f5f7fb;color:#59667c;font-size:10px}.files-panel svg{width:21px;color:#315ff4}.files-panel small{grid-column:2;margin-top:-7px;color:#929bad}
.page-title{margin:4px 0 24px}.page-title>span{color:#315ff4;font-size:12px;font-weight:800;letter-spacing:.08em}.page-title h1{margin:7px 0 8px;font-size:clamp(28px,3.4vw,46px);letter-spacing:-.045em;line-height:1.2}.page-title p{margin:0;color:#69748a;font-size:15px;line-height:1.65}
.department-layout{min-height:650px;display:grid;grid-template-columns:390px 1fr;gap:18px}.floor-list{display:grid;align-content:start;gap:8px}.floor-list button{width:100%;min-height:72px;padding:9px 13px;display:grid;grid-template-columns:38px 42px 1fr 20px;align-items:center;gap:9px;border:1px solid #e1e7ef;border-radius:15px;background:#fff;text-align:left;cursor:pointer;transition:.2s}.floor-list button:hover,.floor-list button.selected{border-color:color-mix(in srgb,var(--dept) 55%,white);box-shadow:0 9px 24px #1e2d4b12;transform:translateX(3px)}.floor-list button.selected{background:color-mix(in srgb,var(--dept) 7%,white)}.floor-list button>span{font-size:11px;color:#8390a5;font-weight:800}.floor-list i{width:38px;height:38px;display:grid;place-items:center;border-radius:11px;background:color-mix(in srgb,var(--dept) 12%,white);color:var(--dept)}.floor-list i svg{width:18px}.floor-list b{font-size:13px}.floor-list small{display:block;margin-top:4px;color:#8a94a7;font-size:10px;font-weight:400}.floor-list>button>svg{width:16px;color:#a9b1bf}.department-detail{overflow:hidden;border:1px solid #dfe6ef;border-radius:23px;background:#fff}.dept-hero{position:relative;min-height:322px;padding:36px 37% 30px 38px;overflow:hidden;background:radial-gradient(circle at 80% 20%,color-mix(in srgb,var(--dept) 18%,white),transparent 36%),linear-gradient(135deg,color-mix(in srgb,var(--dept) 8%,white),#fff 66%)}.dept-hero>span{display:inline-block;padding:7px 10px;border-radius:8px;color:var(--dept);background:color-mix(in srgb,var(--dept) 9%,white);font-size:11px;font-weight:800}.dept-hero h2{margin:18px 0 11px;font-size:clamp(25px,3vw,40px);letter-spacing:-.04em}.dept-hero p{margin:0;color:#637086;line-height:1.8}.dept-hero>div{position:absolute;right:1%;bottom:0;width:39%;display:flex;align-items:flex-end;justify-content:center}.dept-hero .avatar{width:31%;margin-left:-4%;border-radius:18px 18px 0 0;background:transparent}.service-grid{padding:20px;display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.service-grid button{min-height:95px;padding:17px;display:grid;grid-template-columns:34px 1fr 25px;align-items:center;gap:10px;border:1px solid #e2e7ef;border-radius:14px;background:#fff;text-align:left;cursor:pointer}.service-grid button:hover{border-color:color-mix(in srgb,var(--dept) 55%,white);background:color-mix(in srgb,var(--dept) 4%,white)}.service-grid button>span{color:var(--dept);font-size:11px;font-weight:900}.service-grid button b{font-size:14px}.service-grid button small{display:block;margin-top:5px;color:#8c96a7;font-size:10px;font-weight:400}.service-grid button svg{width:17px;color:#a1aab9}.dept-cta{margin:0 20px 20px;padding:17px 19px;display:flex;align-items:center;justify-content:space-between;gap:16px;border-radius:15px;color:#fff;background:#101b38}.dept-cta b,.dept-cta small{display:block}.dept-cta small{margin-top:4px;color:#aeb9ce;font-size:11px}.dept-cta button{padding:11px 14px;border:0;border-radius:10px;background:#315ff4;color:#fff;display:flex;align-items:center;gap:6px;cursor:pointer;font-size:12px;font-weight:800}.dept-cta svg{width:16px}
.project-head{margin-bottom:20px;display:flex;align-items:flex-end;justify-content:space-between;gap:20px}.project-head>div:first-child>span{display:flex;align-items:center;gap:6px;color:#637aa6;font-size:12px;font-weight:800}.project-head span svg{width:15px}.project-head h1{margin:9px 0 6px;max-width:900px;font-size:clamp(27px,3vw,42px);letter-spacing:-.04em}.project-head p{margin:0;color:#798498;font-size:13px}.project-head>div:last-child{display:flex;gap:8px}.project-head button{padding:10px 12px;display:flex;align-items:center;gap:6px;border:1px solid #dce2eb;border-radius:10px;background:#fff;cursor:pointer;font-size:12px}.project-head button svg{width:17px}.project-head button:last-child{color:#c44257}.project-grid{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(300px,.7fr);gap:16px}.stage-panel{padding:25px}.big-progress>div{display:flex;align-items:baseline;justify-content:space-between}.big-progress span{color:#7a869a;font-size:12px}.big-progress b{color:#315ff4;font-size:32px}.big-progress [data-slot=progress]{height:10px;margin-top:10px}.timeline{margin-top:28px}.timeline>div{position:relative;min-height:75px;display:grid;grid-template-columns:39px 1fr 68px;gap:13px;align-items:start}.timeline>div:before{content:"";position:absolute;left:17px;top:36px;bottom:0;width:2px;background:#e2e7ef}.timeline>div:last-child:before{display:none}.timeline>div>i{width:36px;height:36px;z-index:1;display:grid;place-items:center;border-radius:50%;background:#edf0f5;color:#8c96a8;font-style:normal;font-size:12px;font-weight:800}.timeline i svg{width:16px}.timeline .done>i{color:#fff;background:#35a66d}.timeline .current>i{color:#fff;background:#315ff4;box-shadow:0 0 0 7px #e9efff}.timeline .current>i svg{animation:spin 1.2s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.timeline span b,.timeline span small{display:block}.timeline span b{font-size:14px}.timeline span small{margin-top:5px;color:#8290a3;font-size:11px;line-height:1.55}.timeline em{justify-self:end;padding-top:7px;color:#9aa3b3;font-style:normal;font-size:10px}.timeline .done em{color:#35a66d}.timeline .current em{color:#315ff4;font-weight:800}.project-side{display:grid;align-content:start;gap:15px}.assigned,.event{padding:20px}.assigned>div:not(.section-head){margin-top:10px;padding:7px;display:flex;flex-wrap:wrap;align-items:center;gap:9px;border-radius:12px;background:#f6f8fb}.assigned span b,.assigned span small{display:block}.assigned span b{font-size:12px}.assigned span small{margin-top:3px;color:#8e98a9;font-size:10px}.event p{margin:17px 0;padding-left:15px;border-left:3px solid #315ff4}.event p>*{display:block}.event p b{font-size:13px}.event p span{margin-top:6px;color:#6f7a90;font-size:11px;line-height:1.6}.event p small{margin-top:9px;color:#9ba4b4;font-size:9px}.event button{width:100%;padding:10px;border:1px solid #dce3ee;border-radius:10px;background:#fff;display:flex;justify-content:center;gap:7px;cursor:pointer;color:#315ff4;font-size:11px;font-weight:800}.event button svg{width:16px}
.meeting-room{min-height:620px;position:relative;overflow:hidden;border-radius:27px;background:radial-gradient(circle at 50% 5%,#fff 0,#edf3fb 31%,#dbe5f3 100%);box-shadow:inset 0 0 0 1px #d9e1ec,0 20px 50px #18294b14}.meeting-room:before{content:"";position:absolute;left:0;right:0;bottom:0;height:42%;background:linear-gradient(165deg,#cbd8e8,#edf2f8);clip-path:polygon(0 15%,100% 0,100% 100%,0 100%)}.meeting-screen{position:absolute;top:28px;left:50%;transform:translateX(-50%);width:min(550px,65%);padding:19px;border:1px solid #cfd9e7;border-radius:16px;background:#ffffffd1;text-align:center;box-shadow:0 11px 30px #28375614}.meeting-screen>*{display:block}.meeting-screen span{color:#315ff4;font-size:10px;font-weight:800}.meeting-screen b{margin-top:6px;font-size:16px}.meeting-screen small{margin-top:5px;color:#8994a6;font-size:10px}.meeting-people{position:absolute;inset:130px 7% 70px}.meeting-person{position:absolute;width:160px;z-index:4;text-align:center}.meeting-person .avatar{width:125px;margin:0 auto;background:transparent}.meeting-person>span{display:inline-block;margin-top:-10px;padding:6px 10px;border-radius:10px;background:#ffffffe6;box-shadow:0 5px 15px #22304e14}.meeting-person b,.meeting-person small{display:block}.meeting-person b{font-size:11px}.meeting-person small{color:#7d889b;font-size:9px}.meeting-person:has(.avatar.active)>span{color:#fff;background:#315ff4}.meeting-person:has(.avatar.active) small{color:#dce5ff}.p1{left:6%;top:8%}.p2{right:6%;top:8%}.p3{left:13%;bottom:0}.p4{right:13%;bottom:0}.meeting-table{position:absolute;left:50%;top:48%;width:48%;height:210px;transform:translate(-50%,-50%);border-radius:50%;background:linear-gradient(#eff3f8,#aebdce);box-shadow:inset 0 8px 15px #ffffffb3,0 24px 24px #26375240;display:grid;place-items:center;color:#8a98aa}.meeting-table>span{font-size:23px;letter-spacing:.4em;font-weight:900;opacity:.4}.meeting-table>div{position:absolute;bottom:25px;padding:8px 10px;display:flex;align-items:center;gap:6px;border-radius:9px;background:#fff;color:#315ff4;font-size:9px;font-weight:800}.meeting-table svg{width:13px}.caption{position:absolute;z-index:8;left:50%;bottom:23px;width:min(720px,80%);transform:translateX(-50%);padding:13px 17px;display:flex;align-items:center;gap:12px;border-radius:13px;color:#fff;background:#101b38eb;backdrop-filter:blur(12px)}.caption b{padding:5px 8px;border-radius:7px;color:#101b38;background:#fff;font-size:10px;white-space:nowrap}.caption p{margin:0;font-size:12px;line-height:1.55}.meeting-action{margin-top:15px;padding:16px 18px;display:flex;align-items:center;gap:10px;border:1px solid #dae2ee;border-radius:16px;background:#fff}.meeting-action>svg{color:#35a66d}.meeting-action span b,.meeting-action span small{display:block}.meeting-action span b{font-size:13px}.meeting-action span small{margin-top:3px;color:#8792a5;font-size:10px}.meeting-action button{margin-left:auto;padding:11px 14px;border:0;border-radius:10px;background:#315ff4;color:#fff;display:flex;align-items:center;gap:7px;cursor:pointer;font-size:11px;font-weight:800}.meeting-action button svg{width:16px}
.review-grid{display:grid;grid-template-columns:1fr 1fr;gap:17px}.review-preview{min-height:650px;position:relative;overflow:hidden;border-radius:24px;background:radial-gradient(circle at 30% 20%,#dfe8ff,#b9c9e6 80%);display:grid;place-items:center}.document{width:320px;height:440px;padding:38px;transform:rotate(-2deg);background:#fff;box-shadow:0 28px 60px #1c2d4d38}.document>span{color:#315ff4;font-size:9px;font-weight:900;letter-spacing:.14em}.document h3{margin:40px 0 9px;font-size:28px;letter-spacing:-.04em}.document p{color:#7e899b;font-size:11px}.document>i{display:block;height:8px;margin-top:17px;border-radius:99px;background:#e9edf3}.document>.short{width:70%}.document small{display:block;margin-top:90px;color:#a5adba;font-size:9px}.reviewer{position:absolute;right:7%;bottom:0;width:180px}.reviewer .avatar{width:135px;margin-left:auto;background:transparent}.reviewer>span{position:absolute;right:0;bottom:22px;padding:8px 11px;border-radius:10px;background:#101b38;color:#fff}.reviewer b,.reviewer small{display:block}.reviewer b{font-size:11px}.reviewer small{margin-top:3px;color:#aeb9ce;font-size:9px}.checklist{padding:26px}.score{display:grid;grid-template-columns:1fr 48px;align-items:center;padding:18px;margin-bottom:13px;border-radius:16px;background:#eef8f3}.score span>*{display:block}.score small{color:#69917b;font-size:10px;font-weight:800}.score b{color:#238052;font-size:35px}.score em{font-size:13px;font-style:normal}.score svg{width:40px;height:40px;color:#35a66d}.score p{grid-column:1/3;margin:5px 0 0;color:#238052;font-size:11px}.check-row{min-height:65px;display:flex;align-items:center;gap:12px;border-bottom:1px solid #e8ecf2}.check-row>i{width:28px;height:28px;display:grid;place-items:center;border-radius:50%;background:#eaf7f0;color:#2a8a5b}.check-row i svg{width:14px}.check-row span>*{display:block}.check-row span b{font-size:12px}.check-row span small{margin-top:4px;color:#8993a5;font-size:10px}.check-row>em{margin-left:auto;color:#35a66d;font-style:normal;font-size:10px;font-weight:800}.review-note{margin:17px 0;padding:14px;display:flex;align-items:center;gap:11px;border-radius:12px;background:#f3f6fb}.review-note svg{color:#315ff4}.review-note span>*{display:block}.review-note b{font-size:11px}.review-note small{margin-top:4px;color:#828da0;font-size:9px}.checklist>button{width:100%;padding:12px;border:0;border-radius:11px;background:#315ff4;color:#fff;display:flex;align-items:center;justify-content:center;gap:7px;cursor:pointer;font-size:12px;font-weight:800}.checklist>button svg{width:16px}
.delivery-summary{margin-bottom:14px;padding:18px 20px;display:flex;align-items:center;gap:12px;border:1px solid #cde7d9;border-radius:17px;background:#f2faf6}.delivery-summary>svg{color:#35a66d}.delivery-summary span>*{display:block}.delivery-summary b{font-size:14px}.delivery-summary small{margin-top:4px;color:#759180;font-size:10px}.delivery-summary button{margin-left:auto;padding:11px 14px;border:0;border-radius:10px;background:#101b38;color:#fff;display:flex;gap:7px;cursor:pointer;font-size:11px;font-weight:800}.delivery-summary button svg{width:15px}.file-table{border:1px solid #dfe5ee;border-radius:19px;background:#fff;overflow:hidden}.file-row{min-height:90px;padding:13px 18px;display:grid;grid-template-columns:64px minmax(260px,1fr) 90px 80px 40px;gap:16px;align-items:center;border-bottom:1px solid #e7ebf1;font-size:11px;color:#728096}.file-row:last-child{border:0}.file-type{height:54px;border-radius:12px;display:grid;place-items:center;background:#fff0f1;color:#d65063;font-size:9px}.file-type svg{width:20px}.file-type.t1{background:#f1edff;color:#7558df}.file-type.t2{background:#fff4e7;color:#d47e1f}.file-type.t3{background:#eaf7f0;color:#2c8e5e}.file-row>span:nth-child(2)>*{display:block}.file-row>span:nth-child(2) b{color:#243048;font-size:12px}.file-row>span:nth-child(2) small{margin-top:5px}.file-row>span:nth-child(4){display:flex;align-items:center;gap:4px;color:#35a66d}.file-row>span:nth-child(4) svg{width:13px}.file-row a{width:35px;height:35px;display:grid;place-items:center;border-radius:9px;background:#edf2ff;color:#315ff4}.file-row a svg{width:16px}.delivery-footer{margin-top:14px;padding:15px 18px;display:flex;align-items:center;gap:9px;border:1px solid #e0e6ef;border-radius:15px;background:#fff}.delivery-footer>svg{color:#315ff4}.delivery-footer>span{margin-right:auto}.delivery-footer span>*{display:block}.delivery-footer span b{font-size:11px}.delivery-footer span small{margin-top:3px;color:#8a94a6;font-size:9px}.delivery-footer button{padding:9px 11px;border:1px solid #dce2ec;border-radius:9px;background:#fff;display:flex;gap:5px;cursor:pointer;color:#5f6c81;font-size:10px}.delivery-footer button:last-child{border-color:#315ff4;color:#315ff4}.delivery-footer button svg{width:14px}
.staff-head{display:flex;align-items:flex-end;justify-content:space-between;gap:20px}.staff-head label{width:270px;height:43px;margin-bottom:25px;padding:0 12px;border:1px solid #dce3ec;border-radius:11px;background:#fff;display:flex;align-items:center;gap:8px}.staff-head label svg{width:17px;color:#8b96a8}.staff-head input{width:100%;border:0;outline:0;font-size:12px}.staff-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:13px}.staff-card{min-width:0;overflow:hidden;border:1px solid #dfe5ee;border-radius:19px;background:#fff}.staff-card .avatar{width:100%;border-radius:0;background:linear-gradient(150deg,#eef3fb,#dce5f3)}.staff-card>div:not(.aiw-3d-portrait-stage){padding:15px}.staff-card>div>span{display:inline-block;padding:4px 7px;border-radius:999px;font-size:9px;font-weight:800}.staff-card h3{margin:9px 0 2px;font-size:18px}.staff-card p{margin:0;color:#536078;font-size:11px}.staff-card small{display:block;margin-top:5px;color:#929cad;font-size:9px}.staff-card button{width:100%;margin-top:13px;padding:9px;border:1px solid #e0e5ed;border-radius:9px;background:#fff;color:#315ff4;display:flex;justify-content:center;align-items:center;gap:5px;cursor:pointer;font-size:10px;font-weight:800}.staff-card button svg{width:14px}
.settings-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.providers,.policies{padding:23px}.providers>div:not(.section-head){min-height:72px;display:flex;align-items:center;gap:11px;border-bottom:1px solid #e8ecf2}.providers>div>i{width:36px;height:36px;border-radius:10px;background:#101b38;color:#fff;display:grid;place-items:center;font-style:normal;font-weight:900}.providers span>*{display:block}.providers span b{font-size:12px}.providers span small{margin-top:3px;color:#8993a5;font-size:9px}.providers em{margin-left:auto;padding:5px 7px;border-radius:999px;background:#f0f2f5;color:#8590a2;font-style:normal;font-size:9px}.providers em.connected{background:#eaf7f0;color:#278156}.providers>div>button{margin-left:5px;padding:7px 9px;border:1px solid #dce2eb;border-radius:8px;background:#fff;cursor:pointer;font-size:9px}.policies>label{min-height:78px;display:flex;align-items:center;gap:20px;border-bottom:1px solid #e8ecf2}.policies label>span{margin-right:auto}.policies label span>*{display:block}.policies label b{font-size:12px}.policies label small{margin-top:4px;color:#8993a5;font-size:9px}.policies select{padding:8px 28px 8px 9px;border:1px solid #d9e0ea;border-radius:8px;background:#fff;font-size:10px}.security{margin-top:17px;padding:14px;display:flex;gap:10px;align-items:center;border-radius:12px;background:#edf2ff}.security svg{color:#315ff4}.security span>*{display:block}.security b{font-size:11px}.security small{margin-top:4px;color:#7e8ba0;font-size:9px}.policies>button{width:100%;margin-top:14px;padding:11px;border:0;border-radius:10px;background:#315ff4;color:#fff;cursor:pointer;font-size:11px;font-weight:800}
.village-banner{margin-bottom:15px;padding:15px 18px;display:flex;align-items:center;gap:11px;border:1px solid #dce3ed;border-radius:15px;background:#fff}.village-banner>svg{color:#315ff4}.village-banner span>*{display:block}.village-banner b{font-size:12px}.village-banner small{margin-top:3px;color:#8c96a7;font-size:9px}.village-banner button{margin-left:auto;padding:9px 11px;border:1px solid #dbe2eb;border-radius:9px;background:#fff;color:#315ff4;cursor:pointer;font-size:10px}.district-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.district-grid>button{position:relative;min-height:230px;padding:25px;overflow:hidden;border:1px solid #dce3ed;border-radius:21px;background:linear-gradient(150deg,color-mix(in srgb,var(--dept) 10%,white),#fff 68%);text-align:left;cursor:pointer}.district-grid>button:hover{border-color:color-mix(in srgb,var(--dept) 50%,white);transform:translateY(-3px);box-shadow:0 15px 30px #21315217}.district-grid>button>i{width:48px;height:48px;display:grid;place-items:center;border-radius:14px;color:#fff;background:var(--dept)}.district-grid>button>i svg{width:22px}.district-grid>button>span{position:absolute;right:20px;top:22px;color:var(--dept);font-size:11px;font-weight:900}.district-grid h3{margin:25px 0 7px;font-size:20px}.district-grid p{min-height:32px;margin:0;color:#748095;font-size:10px;line-height:1.55}.district-grid>button>b{margin-top:22px;display:flex;align-items:center;gap:5px;color:var(--dept);font-size:10px}.district-grid b svg{width:14px}
.reduced *,.reduced *:before,.reduced *:after{animation-duration:.001ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.001ms!important}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.001ms!important}}
@media(max-width:1120px){.dashboard-grid{grid-template-columns:1fr 1fr}.files-panel{grid-column:1/3}.files-panel>div:last-child{grid-template-columns:repeat(4,1fr);height:auto}.project-grid{grid-template-columns:1fr}.project-side{grid-template-columns:1fr 1fr}.department-layout{grid-template-columns:330px 1fr}.staff-grid{grid-template-columns:repeat(3,1fr)}}
@media(max-width:820px){.topbar{padding:0 13px}.brand>span:last-child{display:none}.top-actions button span{display:none}.rail{top:auto;right:0;bottom:0;width:auto;height:66px;padding:6px 10px;flex-direction:row;border:0;border-top:1px solid #e0e5ee}.rail>div{width:100%;display:flex;justify-content:space-around}.rail>.rail-btn,.rail>div .rail-btn:nth-child(4),.rail>div .rail-btn:nth-child(7){display:none}.rail-btn{width:54px;min-height:53px}.main{padding:84px 13px}.hero{height:500px}.hero>img{object-position:65% center}.hero-shade{background:linear-gradient(0deg,#07112ef0 0,#0c1d418c 54%,transparent)}.hero-copy{left:22px;right:22px;top:auto;bottom:65px;width:auto}.hero-copy h1{font-size:30px}.hero-copy p{font-size:14px}.intake{width:calc(100% - 14px);margin-top:-35px}.dashboard-grid{grid-template-columns:1fr}.files-panel{grid-column:auto}.department-layout{grid-template-columns:1fr}.floor-list{grid-template-columns:repeat(2,1fr)}.floor-list button{grid-template-columns:31px 1fr 15px}.floor-list i,.floor-list small{display:none}.dept-hero{padding-right:34%}.dept-hero>div{width:36%}.project-head{align-items:flex-start;flex-direction:column}.review-grid,.settings-grid{grid-template-columns:1fr}.staff-grid{grid-template-columns:repeat(2,1fr)}.district-grid{grid-template-columns:repeat(2,1fr)}.meeting-people{inset-left:2%;inset-right:2%}.p1{left:0}.p2{right:0}.p3{left:2%}.p4{right:2%}.meeting-table{width:58%}.file-row{grid-template-columns:55px minmax(0,1fr) 35px}.file-row>span:nth-child(3),.file-row>span:nth-child(4){display:none}.staff-head{align-items:stretch;flex-direction:column}.staff-head label{width:100%;margin:-8px 0 22px}}
@media(max-width:520px){.top-actions button:first-child{display:none}.hero{height:475px;border-radius:21px}.hero>img{object-position:62% center}.hero-copy{bottom:74px}.hero-copy h1{font-size:25px}.hero-copy p{line-height:1.6}.hero-status{left:20px;right:auto;bottom:16px}.input-box textarea{min-height:90px}.input-box div>span{display:none}.quick{flex-wrap:nowrap;overflow-x:auto}.quick button{flex:0 0 auto}.dashboard-grid>.panel{padding:16px}.mini-grid{grid-template-columns:1fr}.files-panel>div:last-child{grid-template-columns:repeat(2,1fr)}.floor-list{grid-template-columns:1fr}.dept-hero{min-height:380px;padding:28px 22px 155px}.dept-hero>div{width:70%;right:-2%}.service-grid{grid-template-columns:1fr;padding:14px}.dept-cta{align-items:flex-start;flex-direction:column;margin:0 14px 14px}.project-side{grid-template-columns:1fr}.stage-panel{padding:18px}.timeline>div{grid-template-columns:36px 1fr}.timeline em{display:none}.meeting-room{min-height:600px}.meeting-screen{width:90%}.meeting-person{width:105px}.meeting-person .avatar{width:95px}.p1,.p2{top:16%}.p3,.p4{bottom:8%}.meeting-table{width:73%;height:170px}.caption{width:92%}.meeting-action{align-items:flex-start;flex-direction:column}.meeting-action button{width:100%;margin:4px 0 0;justify-content:center}.review-preview{min-height:520px}.document{width:260px;height:360px;padding:28px}.document h3{font-size:23px}.reviewer{width:130px}.reviewer .avatar{width:105px}.delivery-summary{align-items:flex-start;flex-wrap:wrap}.delivery-summary button{width:100%;margin:4px 0 0;justify-content:center}.file-row{padding:11px;gap:9px}.file-row>span:nth-child(2) b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.delivery-footer{align-items:stretch;flex-wrap:wrap}.delivery-footer>span{width:calc(100% - 34px)}.delivery-footer button{flex:1;justify-content:center}.staff-grid{gap:8px}.staff-card>div:not(.aiw-3d-portrait-stage){padding:11px}.district-grid{grid-template-columns:1fr}.providers em{display:none}}

/* AI staff use the same self-contained robot SVG in every view. */
.avatar.robot{display:block;aspect-ratio:200/260}
.avatar.robot .ai-robot{transform-origin:100px 240px;animation:robot-float 4.6s ease-in-out infinite;animation-delay:var(--robot-delay,0s)}
.avatar.robot .robot-eyes{transform-box:fill-box;transform-origin:center;animation:robot-blink var(--robot-blink,5s) ease-in-out infinite;animation-delay:var(--robot-delay,0s)}
.avatar.robot .robot-arm-right{transform-origin:138px 130px}
.avatar.robot.status-running .robot-arm-right{animation:robot-work 1.6s ease-in-out infinite}
.avatar.robot.status-running .robot-signal{animation:robot-signal 1.2s ease-in-out infinite}
.avatar.robot.talking .robot-mouth{transform-box:fill-box;transform-origin:center;animation:robot-talk .45s ease-in-out infinite}
.avatar.robot.status-failed *{animation:none!important}
.avatar-shadow{fill:#315ff4;opacity:.14}
@keyframes robot-float{0%,100%{transform:translateY(0)}50%{transform:translateY(-4px)}}
@keyframes robot-blink{0%,91%,100%{transform:scaleY(1)}95%{transform:scaleY(.12)}}
@keyframes robot-work{0%,100%{transform:rotate(0)}50%{transform:rotate(-9deg)}}
@keyframes robot-signal{50%{opacity:.4}}
@keyframes robot-talk{50%{transform:scaleY(.3)}}
.reduced .avatar.robot,.reduced .avatar.robot *{animation:none!important}
@media(prefers-reduced-motion:reduce){.avatar.robot,.avatar.robot *{animation:none!important}}
.hero-ai-team{position:absolute;inset:0;overflow:hidden;background:radial-gradient(ellipse at 77% 35%,#254c7e 0,transparent 60%),linear-gradient(135deg,#111e3b,#172b49)}
.hero-ai-grid{position:absolute;inset:0;background-image:linear-gradient(#92bded0c 1px,transparent 1px),linear-gradient(90deg,#92bded0c 1px,transparent 1px);background-size:48px 48px}
.hero-ai-team:after{content:"";position:absolute;right:3%;bottom:53px;width:49%;height:60px;border-radius:50%;background:#58b5ff13;box-shadow:0 0 80px #5cbdff30}
.hero-ai-label{position:absolute;top:42px;right:6%;color:#a9dbf0;letter-spacing:.18em;font-size:11px;font-weight:700}
.hero-ai-robots{position:absolute;right:3%;bottom:65px;width:49%;display:flex;align-items:flex-end;justify-content:center;z-index:1}
.hero-ai-robots .avatar{width:28%;margin-left:-3%;background:transparent;filter:drop-shadow(0 10px 16px #06122b55)}
.hero-ai-robots .avatar:nth-child(2){transform:translateY(-17px)}
.hero-ai-robots .avatar:nth-child(3){transform:translateY(7px)}
.hero-shade{pointer-events:none}
@media(max-width:760px){.hero-ai-label{top:23px;right:22px;font-size:9px}.hero-ai-robots{right:0;width:54%;bottom:57px;opacity:.7}.hero-copy{width:70%;z-index:2}.hero-copy p{font-size:14px}}
@media(max-width:520px){.hero-ai-robots{right:2%;width:86%;bottom:32px;opacity:.72}.hero-ai-robots .avatar{width:26%}.hero-copy{top:47px;width:calc(100% - 44px);left:22px}.hero-copy p{max-width:300px}.hero-copy h1{font-size:27px}.hero-ai-label{top:19px}}

.status-badge{display:inline-block;padding:4px 6px;border-radius:999px;font-size:9px;font-weight:800;font-style:normal;white-space:nowrap}
.status-badge.running{color:#2b7a55;background:#eaf7f0}
.status-badge.pending{color:#315ff4;background:#edf2ff}
.status-badge.done{color:#fff;background:#35a66d}
.status-badge.failed{color:var(--destructive);background:color-mix(in srgb,var(--destructive) 12%,white)}

/* TASK:T061 — speech bubbles for steps[].dialogue (T057 API addition), popping in with a
   transform/opacity-only keyframe (same discipline as T060). Sits in normal document flow after
   the avatar/name in each context (an added flex-wrap:wrap on .assigned>div, above, lets it wrap
   onto its own line there; .meeting-person was never a flex container, so it just stacks below).
   Never touches avatar sizing/position, so T026/T028 clip geometry is unaffected. Colors reuse the
   same gray/blue already used by .chat-bubble.assistant and .quick — no new palette. */
.speech-bubble{flex-basis:100%;margin-top:8px;padding:9px 11px;border-radius:12px;background:#f6f8fb;color:#28324a;font-size:11px;line-height:1.5;text-align:left;animation:bubble-pop .35s cubic-bezier(.2,.85,.4,1.1) both}
.speech-bubble b{display:block;margin-bottom:3px;color:#315ff4;font-size:10px;font-weight:800}
.speech-bubble p{margin:0}
.meeting-person .speech-bubble{margin-top:10px;padding:7px 9px;font-size:10px}
@keyframes bubble-pop{0%{opacity:0;transform:scale(.7) translateY(6px)}60%{opacity:1;transform:scale(1.04) translateY(-2px)}100%{opacity:1;transform:scale(1) translateY(0)}}
.reduced .speech-bubble{animation:none}
@media(prefers-reduced-motion:reduce){.speech-bubble{animation:none}}

/* Demo badge + site nav removed from topbar per product decision; .top-center stays an
   empty flex:1 spacer, .top-actions is right-aligned via margin-left:auto (see above) so the
   topbar reads correctly whether the right side holds 0, 1 or several elements. */

/* inc/ai-works-auth.php (Pane 1) markup contract: <div class="top-auth"> holding either
   <a class="top-auth-login"> (logged out) or <button class="top-auth-profile"> + a
   <div class="top-auth-menu"> dropdown (logged in). The dropdown starts hidden via the native
   [hidden] attribute (toggled by ai-works.js) so it degrades safely with JS/CSS disabled.
   Auth can also render nothing at all (feature flag off) — .top-auth:empty collapses so the
   topbar never reserves dead space for it. */
.top-auth{position:relative;display:flex;align-items:center;flex:0 0 auto}
.top-auth:empty{display:none}
.top-auth-login{height:38px;padding:0 16px;display:flex;align-items:center;border-radius:11px;background:#315ff4;color:#fff;font-size:13px;font-weight:800;text-decoration:none;white-space:nowrap}
.top-auth-login:hover{background:#2850d6}
.top-auth-profile{width:37px;height:37px;border:0;border-radius:12px;display:grid;place-items:center;color:#fff;background:#101b38;font-style:normal;font-weight:800;font-size:13px;cursor:pointer}
.top-auth-menu{position:absolute;right:0;top:calc(100% + 10px);min-width:190px;padding:8px;border:1px solid #e0e6ef;border-radius:14px;background:#fff;box-shadow:0 18px 40px #1c2c4e26;z-index:60}
.top-auth-menu[hidden]{display:none}
.top-auth-menu a,.top-auth-menu button{display:flex;align-items:center;gap:8px;width:100%;padding:9px 10px;border:0;border-radius:9px;background:transparent;color:#28324a;font-size:13px;text-align:left;cursor:pointer;text-decoration:none}
.top-auth-menu a:hover,.top-auth-menu button:hover{background:#f3f6fa}
.top-auth-menu .top-auth-logout{color:#c44257}

/* inc/ai-works-footer.php (Pane 1) markup contract: <footer class="site-foot">…</footer>,
   appended at the end of the app shell. Offset to clear the fixed rail (desktop: left column;
   mobile: bottom tab bar) so its content is never hidden underneath either. */
.site-foot{margin:0 24px 24px 110px;padding:20px 22px 0;border-top:1px solid #e1e7f0;color:#8a94a6;font-size:11px;line-height:1.8;text-align:center}
.site-foot a{color:#315ff4;text-decoration:none}
.site-foot a:hover{text-decoration:underline}
.site-foot-legal{display:flex;justify-content:center;gap:16px;margin-bottom:10px;font-size:12px;font-weight:700}
.site-foot-legal a{color:#49566e}
.site-foot-biz p{margin:0 0 3px}
.site-foot-copy{margin:10px 0 0;color:#a4adbc}
@media(max-width:820px){.site-foot{margin:0 13px 82px}}

/* No-JS notice (inc/ai-works-body.php <noscript>, first child of #main so it inherits the
   fixed topbar/rail clearance from .main's own padding) */
.noscript-notice{margin:0 0 16px;padding:10px 14px;border-radius:12px;background:#fff5e7;color:#9b6420;font-size:12px;text-align:center}

/* TASK:T018 — lobby "부서 소개" section (server-rendered in inc/ai-works-body.php, re-rendered
   identically by js/ai-works.js on every lobby (re)paint). Same --dept custom-property pattern as
   .floor-list/.district-grid elsewhere; a dedicated card shape since this one needs room for a
   services + outputs definition list, not just an icon/floor/CTA. */
.dept-intro{margin-top:22px}
.dept-intro-head{margin:0 0 14px}
.dept-intro-head>span{color:#315ff4;font-size:12px;font-weight:800;letter-spacing:.06em}
.dept-intro-head h2{margin:7px 0 0;font-size:clamp(20px,2.2vw,28px);letter-spacing:-.03em}
.dept-intro-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
.dept-intro-card{display:flex;flex-direction:column;min-width:0;padding:18px;border:1px solid #dfe5ee;border-radius:18px;background:linear-gradient(150deg,color-mix(in srgb,var(--dept) 8%,white),#fff 70%)}
.dept-intro-top{display:flex;align-items:center;justify-content:space-between}
.dept-intro-top i{width:34px;height:34px;display:grid;place-items:center;border-radius:10px;color:#fff;background:var(--dept)}
.dept-intro-top i svg{width:16px}
.dept-intro-top span{color:var(--dept);font-size:11px;font-weight:900}
.dept-intro-card h3{margin:13px 0 6px;font-size:15px;letter-spacing:-.01em}
.dept-intro-card>p{margin:0 0 12px;color:#69748a;font-size:11px;line-height:1.6}
.dept-intro-card dl{margin:0 0 14px;display:grid;gap:6px}
.dept-intro-card dl>div{display:grid;grid-template-columns:64px 1fr;gap:6px;align-items:baseline}
.dept-intro-card dt{margin:0;color:#95a0b2;font-size:9px;font-weight:800}
.dept-intro-card dd{margin:0;color:#4a5570;font-size:10px;line-height:1.5}
.dept-intro-card button{width:100%;margin-top:auto;padding:9px 11px;border:1px solid #e0e5ed;border-radius:9px;background:#fff;color:var(--dept);display:flex;align-items:center;justify-content:center;gap:5px;cursor:pointer;font-size:11px;font-weight:800}
.dept-intro-card button:hover{background:color-mix(in srgb,var(--dept) 8%,white)}
.dept-intro-card button svg{width:14px}
@media(max-width:1120px){.dept-intro-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:520px){.dept-intro-grid{grid-template-columns:1fr}.dept-intro-card dl>div{grid-template-columns:56px 1fr}}

/* TASK:T025 — BYOK "연결" inline key-entry row (appended into an existing .providers>div flex
   row, wraps onto its own line via flex-basis:100%) and the project-view server-error banner. */
.settings-grid>*{min-width:0}
.providers>div.provider-list{display:block;min-height:0;border:0}
.provider-card{padding:17px 0;border-bottom:1px solid #e8ecf2;min-width:0}
.provider-heading{display:flex;align-items:center;gap:10px;min-width:0}
.provider-heading>i{width:38px;height:38px;display:grid;place-items:center;flex:none;background:#172641;border-radius:11px;font-style:normal;color:#fff;font-size:18px;font-weight:800}
.provider-heading>span{min-width:0}
.provider-heading small{overflow-wrap:anywhere}
.providers .provider-heading em{display:inline-block;white-space:nowrap;font-size:10px;flex:none}
.provider-actions,.provider-form-actions{display:flex;flex-wrap:wrap;gap:7px;margin-top:13px}
.provider-actions button,.provider-form-actions button,.provider-key-entry button,.provider-toolbar button{padding:9px 11px;min-height:36px;border:1px solid #dce2eb;border-radius:9px;background:#fff;cursor:pointer;font-size:11px;color:#344760}
.provider-actions button:first-child,.provider-form-actions button[type="submit"]{background:#315ff4;border-color:#315ff4;color:#fff}
.provider-actions .provider-delete{color:#bd3951}
.providers button:disabled{opacity:.5;cursor:wait}
.provider-key-form{display:block;padding:13px;margin-top:13px;border:1px solid #dbe3f2;border-radius:12px;background:#f7f9fd}
.provider-key-form>label{display:block;margin-bottom:8px;font-size:11px;font-weight:700;color:#4c5b75}
.provider-key-entry{display:flex;gap:7px}
.provider-key-entry input{flex:1;width:0;min-width:0;padding:10px;border:1px solid #c8d4e6;border-radius:8px;font-size:13px;background:#fff}
.provider-key-entry input:focus{outline:2px solid #315ff444;outline-offset:1px;border-color:#315ff4}
.provider-key-entry button{flex:none}
.providers>div.provider-toolbar{display:flex;flex-wrap:wrap;gap:7px;min-height:0;padding-top:15px;border:0}
.provider-notice{font-size:11px;line-height:1.7;color:#6d7c92;margin:12px 0 0;overflow-wrap:anywhere}
.provider-notice:empty{display:none}
.settings-login-notice{padding:13px 16px;border:1px solid #ccd9f4;border-radius:12px;background:#edf3ff;color:#41577b;font-size:12px;line-height:1.7}
.settings-login-notice a{color:#315ff4;font-weight:700;text-decoration:underline;text-underline-offset:3px}
.provider-feedback{font-size:11px;line-height:1.7;overflow-wrap:anywhere;margin:10px 0 0}
.provider-feedback.error{color:#b83b51}.provider-feedback.success{color:#25734d}
.provider-models{margin-top:12px;color:#536781;font-size:11px}
.provider-models summary{cursor:pointer;padding:5px 0}
.provider-models ul{max-height:190px;overflow:auto;list-style:none;margin:7px 0 0;padding:8px;background:#f4f7fb;border-radius:8px}
.provider-models li{padding:4px 2px;overflow-wrap:anywhere}
.provider-models p{color:#b83b51;overflow-wrap:anywhere}
.hero-copy h1{word-break:keep-all;font-size:clamp(28px,2.7vw,43px)}
@media(max-width:520px){.providers,.policies{padding:17px}.provider-heading>i{width:32px;height:32px;font-size:15px}.providers .provider-heading em{font-size:9px;padding:5px}.provider-heading{gap:7px}.provider-heading b{font-size:11px}.provider-actions button,.provider-form-actions button{font-size:10px;padding:8px 9px}.hero-copy h1{font-size:27px}}
.live-error{margin-top:10px;color:var(--destructive);font-size:11px}

/* TASK:T030 — lobby chat thread, added by JS inside the existing .intake card (server-rendered
   input-box stays untouched; these are purely client-added elements). Reuses the app's existing
   tokens (primary blue, the same success/warning/destructive hues already used by .working/
   .reviewing/.toast-*) rather than introducing a new palette. */
.chat-hint{margin-bottom:10px;padding:9px 12px;display:flex;align-items:center;justify-content:space-between;gap:10px;border-radius:10px;background:#fff5e7;color:#9b6420;font-size:11px}
.chat-hint button{flex:0 0 auto;padding:6px 9px;border:1px solid #e8cf9e;border-radius:7px;background:#fff;color:#9b6420;font-size:10px;cursor:pointer}
.chat-thread{display:grid;gap:10px;margin-bottom:12px;max-height:420px;overflow-y:auto}
.chat-bubble{max-width:78%;padding:11px 14px;border-radius:14px;font-size:13px;line-height:1.6;white-space:pre-wrap}
.chat-bubble.user{justify-self:end;background:#315ff4;color:#fff;border-bottom-right-radius:4px}
.chat-bubble.assistant{justify-self:start;background:#f6f8fb;color:#28324a;border-bottom-left-radius:4px}
.chat-typing{justify-self:start;padding:10px 14px;border-radius:14px;background:#f6f8fb;color:#8b95a8;font-size:12px}
.chat-error{padding:12px 14px;border-radius:12px;background:color-mix(in srgb,var(--destructive) 10%,white);color:var(--destructive);font-size:12px;display:flex;align-items:center;gap:10px;justify-content:space-between}
.chat-error button{flex:0 0 auto;padding:7px 10px;border:1px solid var(--destructive);border-radius:8px;background:#fff;color:var(--destructive);font-size:11px;cursor:pointer}
.chat-confirm{margin-bottom:12px;padding:12px 14px;display:flex;align-items:center;justify-content:space-between;gap:10px;border-radius:12px;background:#eaf7f0;color:#20724b}
.chat-confirm button{flex:0 0 auto;padding:9px 12px;border:0;border-radius:9px;background:#315ff4;color:#fff;display:flex;align-items:center;gap:6px;font-size:12px;font-weight:800;cursor:pointer}
@media(max-width:520px){.chat-bubble{max-width:88%}.chat-confirm,.chat-hint{flex-direction:column;align-items:flex-start}}

/* TASK:T032 — lobby dashboard-grid panels replaced fake live-status content with static, factual
   copy. .team-panel/.snapshot/.files-panel (the outer panel classes) are unchanged on purpose —
   only what's inside changed — so a future real-data wire-up has a stable place to attach to. */
.panel-note{margin:10px 0 0;color:#8b95a8;font-size:11px;line-height:1.6}
.mini-grid em.dept-tag{background:#eef2ff;color:#3a4a75}
.stage-list{margin:14px 0 0;padding:0;list-style:none;display:grid;gap:2px}
.stage-list li{padding:9px 0;border-bottom:1px solid #eef1f6}
.stage-list li:last-child{border-bottom:0}
.stage-list b{display:block;font-size:12px;font-weight:800}
.stage-list small{display:block;margin-top:3px;color:#8b95a8;font-size:10px;line-height:1.55}
.format-tags{margin-top:14px;display:flex;flex-wrap:wrap;gap:6px}
.format-tags span{padding:6px 10px;border-radius:999px;background:#f5f7fb;color:#59667c;font-size:10px;font-weight:700}

/* TASK:T050 — supersedes T045's .avatar-btn (a <button class="avatar-btn"> wrapper using
   display:contents to avoid disturbing .dept-hero .avatar / .staff-card .avatar sizing).
   display:contents on a form element is inconsistently handled across browsers; when it doesn't
   collapse the button's box, the avatar's own width/aspect-ratio math breaks and clip edges show.
   The click/keyboard target is now the <svg class="avatar"> itself (see avatarSvg() opts.clickable
   in ai-works.js) — no wrapper, so this is the only rule needed, and it must not touch sizing.
   Colors below (modal) are values already used elsewhere in this file (backdrop #101b38 as in
   .caption, status colors as in .working/.ready) — no new palette. */
.avatar[data-action]{cursor:pointer}
.modal-backdrop{position:fixed;inset:0;z-index:300;display:flex;align-items:center;justify-content:center;padding:24px;background:#101b38b3;backdrop-filter:blur(4px)}
.modal-backdrop[hidden]{display:none}
.modal-panel{position:relative;width:min(420px,100%);max-height:calc(100vh - 48px);overflow-y:auto;padding:30px 26px 26px;border-radius:22px;background:#fff;box-shadow:0 30px 70px #0a17324d;text-align:center}
.modal-panel:focus{outline:0}
.modal-close{position:absolute;top:14px;right:14px;width:32px;height:32px;border:0;border-radius:9px;background:#f3f6fa;color:#5b6577;display:grid;place-items:center;cursor:pointer}
.modal-close svg{width:16px}
.modal-avatar{width:150px;margin:0 auto 14px}
.modal-avatar .avatar{width:100%;background:transparent}
.modal-panel h2{margin:0 0 4px;font-size:20px;letter-spacing:-.02em}
.modal-role{margin:0 0 14px;color:#69748a;font-size:12px}
.modal-meta{display:flex;justify-content:center;flex-wrap:wrap;gap:8px;margin-bottom:18px}
.modal-dept{padding:6px 11px;border-radius:999px;background:#edf2ff;color:#2345b8;font-size:11px;font-weight:800}
.modal-status{padding:6px 11px;border-radius:999px;font-size:11px;font-weight:800}
.modal-status.active{background:#eaf7f0;color:#2b7a55}
.modal-status:not(.active){background:#f0f2f5;color:#8590a2}
.modal-section{margin-top:14px;padding-top:14px;border-top:1px solid #eef1f6;text-align:left}
.modal-section b{display:block;margin-bottom:5px;font-size:11px;color:#8b95a8;font-weight:800}
.modal-section span{display:block;color:#3a4558;font-size:12px;line-height:1.6}
@media(max-width:520px){.modal-panel{padding:26px 18px 20px}.modal-avatar{width:120px}}

/* Icon sprite <use> instances */
.ic{width:1em;height:1em;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;display:inline-block;vertical-align:-.125em}

/* shadcn Progress replacement (kept as [data-slot] hooks so the .big-progress override above still applies) */
[data-slot=progress]{position:relative;height:8px;width:100%;overflow:hidden;border-radius:999px;background:color-mix(in srgb,var(--primary) 20%,white)}
[data-slot=progress-indicator]{display:block;height:100%;width:100%;background:var(--primary);transition:transform .3s ease}

/* shadcn Switch replacement */
.switch{position:relative;display:inline-flex;flex:0 0 auto;width:32px;height:18px;padding:0;border:1px solid transparent;border-radius:999px;background:var(--input);cursor:pointer;transition:background .2s ease}
.switch[data-state=checked]{background:var(--primary)}
.switch-thumb{position:absolute;top:1px;left:1px;width:16px;height:16px;border-radius:50%;background:#fff;box-shadow:0 1px 2px rgba(0,0,0,.15);transition:transform .2s ease}
.switch[data-state=checked] .switch-thumb{transform:translateX(14px)}

/* sonner Toaster replacement (bottom-right, richColors) */
.toaster{position:fixed;z-index:200;right:16px;bottom:16px;display:flex;flex-direction:column-reverse;gap:8px;max-width:min(360px,calc(100vw - 32px));pointer-events:none}
.toast{pointer-events:auto;display:flex;align-items:center;gap:10px;padding:12px 14px;border-radius:12px;background:var(--popover);color:var(--popover-foreground);border:1px solid var(--border);box-shadow:0 12px 30px #1c2c4e2e;font-size:13px;line-height:1.5;opacity:0;transform:translateY(8px);transition:opacity .2s ease,transform .2s ease}
.toast.show{opacity:1;transform:translateY(0)}
.toast.hide{opacity:0;transform:translateY(8px)}
.toast svg{width:17px;flex:0 0 auto}
.toast-success{background:#eaf7f0;color:#20724b;border-color:#cde7d9}
.toast-info{background:#edf2ff;color:#2345b8;border-color:#d7e0fb}
.toast-warning{background:#fff5e7;color:#9b6420;border-color:#f3e0bd}
.toast-error{background:color-mix(in srgb,var(--destructive) 12%,white);color:var(--destructive);border-color:color-mix(in srgb,var(--destructive) 35%,white)}
@media(max-width:520px){.toaster{left:16px;right:16px;max-width:none}}

/* AIW 3D showroom. The SVG staff remain visible until each WebGL asset is ready. */
.lobby .hero{
  height:460px;
  isolation:isolate;
  border:1px solid #c7d9fc24;
  background:#071225;
  box-shadow:0 24px 65px #0e234429,0 1px 0 #ffffff75;
}
.hero-ai-team{
  background:radial-gradient(ellipse at 77% 38%,#274874 0,transparent 46%),
    radial-gradient(ellipse at 57% 98%,#0d405b 0,transparent 50%),
    linear-gradient(118deg,#080f23 8%,#112540 66%,#0b172a);
}
.hero-ai-team:before{
  content:"";
  position:absolute;
  inset:-45% -10% 12% 47%;
  border-radius:50%;
  background:radial-gradient(ellipse,#58c9ef13 0,#88b9ff09 40%,transparent 68%);
  transform:rotate(-28deg);
  pointer-events:none;
}
.hero-ai-grid{
  inset:40% -20% -45% 27%;
  opacity:.5;
  transform:perspective(410px) rotateX(61deg);
  transform-origin:center 28%;
  background-image:linear-gradient(#84caff18 1px,transparent 1px),
    linear-gradient(90deg,#84caff18 1px,transparent 1px);
  background-size:50px 50px;
  mask-image:linear-gradient(transparent,#000 34%,transparent 89%);
  pointer-events:none;
}
.hero-ai-team:after{
  right:7%;
  bottom:46px;
  width:43%;
  height:37px;
  background:#33cbfb0b;
  border:1px solid #6fcfff22;
  box-shadow:0 0 65px #39bfff1c,inset 0 0 25px #39bfff16;
  pointer-events:none;
}
.hero-ai-label{
  z-index:3;
  top:29px;
  right:32px;
  display:flex;
  align-items:center;
  gap:9px;
  color:#a6c5dc;
  font-size:10px;
  font-weight:600;
  letter-spacing:.19em;
  pointer-events:none;
}
.hero-ai-label:before{
  content:"";
  width:5px;
  height:5px;
  border-radius:50%;
  background:#8ce9e0;
  box-shadow:0 0 12px #72e4ed99;
}
.hero-ai-team .aiw-3d-stage{
  position:absolute;
  z-index:2;
  top:8px;
  right:-1%;
  bottom:29px;
  width:58%;
}
.aiw-3d-stage canvas{
  display:block;
  width:100%;
  height:100%;
  cursor:grab;
  touch-action:pan-y;
  -webkit-user-select:none;
  user-select:none;
}
.aiw-3d-stage canvas:active{cursor:grabbing}
.aiw-3d-stage:focus-visible,.aiw-3d-stage canvas:focus-visible{outline:2px solid #82d8ff;outline-offset:-5px;border-radius:22px}
.hero-ai-team.is-3d .hero-ai-robots{display:none}
.hero-ai-team.is-3d:after{opacity:.55}
.aiw-3d-hint{
  position:absolute;
  z-index:3;
  bottom:13px;
  left:50%;
  transform:translateX(-50%);
  width:max-content;
  max-width:calc(100% - 24px);
  padding:6px 11px;
  border:1px solid #a0d9f426;
  border-radius:999px;
  background:#0b203d7a;
  color:#a7c9df;
  font-size:10px;
  line-height:1.4;
  letter-spacing:.02em;
  text-align:center;
  pointer-events:none;
  backdrop-filter:blur(10px);
}
.hero-ai-team>.aiw-3d-hint{left:71%;bottom:70px}
.lobby .hero-shade{
  z-index:1;
  background:linear-gradient(90deg,#0711239e 0,#07112333 35%,transparent 54%),
    linear-gradient(0deg,#07122580 0,transparent 20%);
}
.lobby .hero-copy{
  z-index:3;
  top:59px;
  left:clamp(28px,3.6vw,58px);
  width:44%;
  bottom:auto;
}
.lobby .hero-copy>span{
  padding:8px 12px;
  border-color:#bcd7ff2b;
  background:linear-gradient(120deg,#aacfff15,#a6c5ff05);
  color:#d9e8fc;
  box-shadow:inset 0 1px 0 #ffffff0d;
  font-size:11px;
  font-weight:600;
}
.lobby .hero-copy h1{
  margin:20px 0 16px;
  font-size:clamp(30px,2.75vw,44px);
  line-height:1.29;
  letter-spacing:-.052em;
  text-shadow:0 2px 25px #00000016;
}
.lobby .hero-copy p{max-width:390px;color:#a9bad0;font-size:14px;line-height:1.85}
.lobby .intake{
  border-color:#ffffff;
  background:linear-gradient(140deg,#fffffffa,#f7fafff5);
  box-shadow:0 20px 44px #1027481c,0 2px 5px #18375708,inset 0 1px 0 #fff;
}
.lobby .input-box{border-color:#dbe3f0;box-shadow:inset 0 2px 4px #182e5404}
.lobby .input-box .send{background:linear-gradient(135deg,#4679ff,#3c54dd);box-shadow:0 6px 15px #3b63f238,inset 0 1px 0 #ffffff3d}
.lobby .dashboard-grid>.panel{border-color:#e2e8f1;box-shadow:0 7px 24px #253b5710,inset 0 1px 0 #fff}

/* The rendered portraits keep the existing focus, click and task-status hooks. */
.avatar.robot.is-3d{animation:none;background:linear-gradient(150deg,#eff5fd,#e4edf8)}
.avatar.robot.is-3d>image{pointer-events:none}
.hero-ai-robots .avatar.robot.is-3d{background:transparent;box-shadow:none}
.avatar.robot.is-3d.active{box-shadow:inset 0 0 0 1px #7c9ce84d}
.avatar.robot.is-3d.status-running{box-shadow:inset 0 0 0 1px #6ccbaf66}
.avatar.robot.is-3d.status-failed{box-shadow:inset 0 0 0 1px #d6455d55}
.staff-grid{gap:18px;perspective:1400px}
.staff-card{
  position:relative;
  border-color:#dce5f0;
  border-radius:22px;
  background:linear-gradient(150deg,#fff,#fafcff);
  box-shadow:0 9px 22px #152f5309,0 2px 4px #152f5305;
  transition:transform .25s ease,box-shadow .25s ease,border-color .25s ease;
}
.staff-card .avatar.robot{
  border-bottom:1px solid #e0e8f3;
  background:radial-gradient(ellipse at 48% 22%,#ffffff 0,#f2f7fd 38%,#e1eafa 100%);
}
.staff-card .avatar.robot.is-3d{
  background:radial-gradient(ellipse at 50% 30%,#ffffff 0,#edf4fd 45%,#dce7f6 100%);
  box-shadow:inset 0 1px 0 #fff;
}
.staff-card>div:not(.aiw-3d-portrait-stage){position:relative;padding:18px;background:linear-gradient(#ffffffed,#fafcff)}
.staff-card>div>span{font-size:9px;letter-spacing:.015em}
.staff-card h3{margin:10px 0 5px;color:#182841;font-size:18px;letter-spacing:-.035em}
.staff-card p{color:#627189;line-height:1.5}
.staff-card small{margin-top:7px;color:#8998aa}
.staff-card button{min-height:36px;margin-top:15px;border-color:#dfe7f3;border-radius:10px;background:#f7faff;color:#3a5be2;transition:background .2s ease,border-color .2s ease}
.staff-card button:hover{border-color:#b1c6f5;background:#edf3ff}
.staff-card:focus-within{border-color:#9ab7f4;box-shadow:0 12px 32px #244a7f15}
.mini-grid .avatar.robot.is-3d,.assigned .avatar.robot.is-3d{background:linear-gradient(150deg,#edf5fe,#dde8f6)}
.dept-hero .avatar.robot.is-3d,.meeting-person .avatar.robot.is-3d,.reviewer .avatar.robot.is-3d{background:transparent;box-shadow:none}

.modal-backdrop{background:#071328b8;backdrop-filter:blur(12px)}
.modal-panel{border:1px solid #ffffff9c;background:linear-gradient(150deg,#fff,#f8fbff);box-shadow:0 32px 90px #06132d66,inset 0 1px 0 #fff}
.modal-close{z-index:5;background:#eaf0f8e6}
.modal-avatar{
  position:relative;
  width:260px;
  max-width:100%;
  height:292px;
  margin:-10px auto 12px;
  border-radius:24px;
  background:radial-gradient(ellipse at 50% 45%,#dcebf766 0,#edf5fc20 58%,transparent 73%);
}
.modal-avatar>.avatar{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;background:transparent}
.modal-avatar .aiw-3d-stage{position:absolute;inset:0}
.modal-avatar.is-3d>.avatar{visibility:hidden}
.modal-avatar .aiw-3d-hint{bottom:0;padding:4px 9px;border-color:#cfdfed;background:#ffffffb8;color:#748aa0;font-size:9px}
@media(hover:hover) and (pointer:fine){
  .staff-card:hover{transform:translateY(-5px) rotateX(1deg);border-color:#bbcfee;box-shadow:0 18px 34px #244a7f16,0 3px 6px #244a7f08}
}
@media(max-width:1120px) and (min-width:821px){
  .lobby .hero-copy{width:46%;left:30px;top:55px}
  .lobby .hero-copy h1{font-size:32px}
  .lobby .hero-copy p{max-width:320px;font-size:13px}
  .hero-ai-team .aiw-3d-stage{width:55%;right:-3%}
  .hero-ai-label{right:23px;font-size:9px}
}
@media(max-width:820px){
  .lobby .hero{height:584px}
  .lobby .hero-copy{top:32px;left:28px;right:28px;width:auto}
  .lobby .hero-copy h1{max-width:570px;margin:16px 0 12px;font-size:32px;line-height:1.3}
  .lobby .hero-copy p{max-width:450px;font-size:13px;line-height:1.75}
  .hero-ai-team .aiw-3d-stage{top:226px;bottom:26px;right:0;width:100%}
  .hero-ai-grid{inset:52% -30% -31%;background-size:40px 40px}
  .hero-ai-team:before{inset:20% -30% 2%}
  .hero-ai-team:after{width:74%;right:13%;bottom:47px}
  .hero-ai-label{top:auto;right:22px;bottom:52px;font-size:8px;letter-spacing:.13em}
  .hero-ai-team>.aiw-3d-hint{left:50%;bottom:42px;font-size:9px}
  .hero-ai-team .aiw-3d-stage .aiw-3d-hint{bottom:7px}
  .lobby .hero-shade{background:linear-gradient(180deg,#07122540 0,transparent 52%,#07122530)}
  .hero-ai-robots{width:80%;right:10%;bottom:57px;opacity:1}
  .hero-ai-robots .avatar{width:25%}
  .staff-grid{gap:13px}
}
@media(max-width:520px){
  .lobby .hero{height:588px;border-radius:23px}
  .lobby .hero-copy{left:23px;right:23px;top:29px}
  .lobby .hero-copy>span{font-size:10px;padding:7px 10px}
  .lobby .hero-copy h1{font-size:28px;max-width:340px;margin-top:15px;letter-spacing:-.055em}
  .lobby .hero-copy p{max-width:300px;font-size:12px;line-height:1.8}
  .hero-ai-team .aiw-3d-stage{top:255px;bottom:36px;right:-4%;width:108%}
  .hero-ai-label{bottom:52px;right:20px;font-size:7px}
  .hero-ai-team>.aiw-3d-hint{bottom:30px;font-size:8px}
  .hero-ai-robots{bottom:73px;width:95%;right:2.5%}
  .hero-ai-robots .avatar{width:28%}
  .lobby .intake{padding:12px;margin-top:-25px;border-radius:19px}
  .staff-grid{gap:10px}
  .staff-card{border-radius:17px}
  .staff-card>div:not(.aiw-3d-portrait-stage){padding:12px}
  .staff-card h3{font-size:16px}
  .staff-card p{font-size:10px}
  .staff-card button{font-size:10px;margin-top:12px}
  .modal-backdrop{padding:16px}
  .modal-panel{max-height:calc(100dvh - 32px);padding:24px 20px 22px;border-radius:24px}
  .modal-avatar{width:230px;height:258px;margin-top:-7px;margin-bottom:10px}
}
.reduced .staff-card:hover{transform:none}
.reduced .aiw-3d-stage canvas{transition:none}

/* A temporary animated canvas overlays only the pointed or focused staff portrait.
   JavaScript preserves the host's position and measures the original SVG bounds. */
.aiw-3d-portrait-host>.aiw-3d-portrait-stage{
  position:absolute;
  z-index:2;
  inset:0;
  padding:0;
  margin:0;
  overflow:hidden;
  pointer-events:none;
  border-radius:inherit;
  box-shadow:inset 0 0 0 1px #9bbfed5c,inset 0 0 25px #93c9ff17;
}
.aiw-3d-portrait-stage>canvas{
  display:block;
  width:100%;
  height:100%;
  border-radius:inherit;
  pointer-events:none;
}
.aiw-3d-portrait-host.is-3d-interacting>svg.avatar.is-3d-hover-target{opacity:0}
.staff-card.is-3d-interacting{border-color:#a6c3ed;box-shadow:0 14px 36px #244a7f18,0 0 0 2px #adcffa26}

/* Staff introductions are requested by a button, never by a hover or page load. */
.staff-intro{margin-top:14px;padding-top:12px;border-top:1px solid #e6edf6;text-align:left}
.staff-card .staff-intro-caption,.modal-panel .staff-intro-caption{margin:0;color:#52677f;font-size:11px;line-height:1.75;word-break:keep-all;overflow-wrap:anywhere}
.staff-card .staff-intro-caption{min-height:5.25em}
.staff-intro .staff-intro-button{display:flex;align-items:center;justify-content:center;gap:7px;width:100%;min-height:40px;margin-top:12px;padding:9px 12px;border:1px solid #c9daf1;border-radius:11px;background:linear-gradient(135deg,#edf6ff,#eef1ff);color:#294cad;font:inherit;font-size:11px;font-weight:750;cursor:pointer;transition:background .2s ease,border-color .2s ease}
.staff-intro .staff-intro-button:hover{border-color:#8cadde;background:#e6efff}
.staff-intro .staff-intro-button[aria-pressed=true]{border-color:#306fbd;background:#244f96;color:#fff}
.staff-intro .staff-intro-button:focus-visible{outline:3px solid #75b1fa;outline-offset:3px}
.staff-intro .staff-intro-button .ic{width:15px;height:15px;flex-shrink:0}
.staff-card .staff-intro-status,.modal-panel .staff-intro-status{min-height:0;margin:0;color:#547196;font-size:10px;line-height:1.6;overflow-wrap:anywhere}
.staff-intro-status:not(:empty){padding-top:7px}
.staff-card .staff-intro-status[data-playback=error],.modal-panel .staff-intro-status[data-playback=error]{color:#9b4e2d}
.modal-panel .staff-intro{padding:14px;border:1px solid #dbe7f3;border-radius:14px;background:#f0f6fd}
.modal-panel .staff-intro-caption{font-size:12px;line-height:1.8}
.modal-panel .staff-intro-button{min-height:42px}
@media(max-width:520px){.staff-intro{margin-top:12px;padding-top:10px}.staff-card .staff-intro-caption{font-size:10px;min-height:7em}.staff-intro .staff-intro-button{min-height:42px;padding:8px 5px;font-size:10px}}
.dept-hero .aiw-3d-portrait-stage,.meeting-person .aiw-3d-portrait-stage,.reviewer .aiw-3d-portrait-stage{box-shadow:none}
.reduced .aiw-3d-portrait-stage,.reduced .aiw-3d-portrait-stage>canvas{animation:none!important;transition:none!important}
@media(prefers-reduced-motion:reduce){
  .staff-card:hover{transform:none}
  .aiw-3d-stage canvas{transition:none}
  .aiw-3d-portrait-stage,.aiw-3d-portrait-stage>canvas{animation:none!important;transition:none!important}
}
