/* JUNO Office shell: one screen for today, phone-first. Tokens follow docs/ui_redesign_20260924. */
.shell{--s-bg:#0a0e18;--s-panel:#111827;--s-panel2:#161f33;--s-line:rgba(255,255,255,.07);--s-text:#eef1f7;--s-muted:#8d97ab;--s-dim:#5d6780;
  --s-gold:#e2bd72;--s-gold2:#f5d99a;--s-ink:#1a1407;--s-glow:226,189,114;--s-dark:10,14,24;--s-panel-rgb:17,24,39;--s-green:#3ddc97;--s-blue:#7aa7ff;--s-amber:#f5b54a;--s-red:#ff6b81;
  --video:#a78bfa;--interior:#2dd4bf;--venture:#fb923c;--sales:#f472b6;--ops:#60a5fa;
  word-break:keep-all;overflow-wrap:anywhere;background:radial-gradient(900px 500px at 15% -10%,rgba(var(--s-glow),.08),transparent 60%),radial-gradient(800px 500px at 100% 0,rgba(122,120,255,.07),transparent 60%),var(--s-bg)}
.shell .app{max-width:none;margin:0;padding:0}
.shell .layout,.shell .mission-board,.shell #hour-status{display:none!important}
.shell-frame{display:grid;grid-template-columns:76px minmax(0,1fr) clamp(360px,28vw,460px);height:100dvh}
.shell-tabbar{display:none}
/* rail */
.shell-rail{display:flex;flex-direction:column;align-items:center;gap:6px;padding:18px 0;border-right:1px solid var(--s-line);background:rgba(var(--s-dark),.6)}
.shell-logo{width:44px;height:44px;border-radius:13px;margin-bottom:12px;display:grid;place-items:center;font-weight:900;font-size:20px;color:var(--s-ink);background:linear-gradient(145deg,var(--s-gold2),var(--s-gold));box-shadow:0 8px 22px -8px rgba(var(--s-glow),.6)}
.shell-nav{position:relative;width:62px;min-height:56px;padding:9px 0 7px;border:0;border-radius:14px;background:transparent;color:var(--s-muted);display:flex;flex-direction:column;align-items:center;gap:4px;font-size:11px;font-weight:650;cursor:pointer}
.shell-nav svg{width:22px;height:22px}.shell-nav:hover{color:var(--s-text);background:rgba(255,255,255,.04)}
.shell-nav[aria-current=true]{background:rgba(var(--s-glow),.13);color:var(--s-gold2)}
.shell-nav-end{margin-top:auto}
.shell-dot{position:absolute;top:5px;right:9px;min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:var(--s-red);color:#fff;font-size:10.5px;font-weight:800;display:grid;place-items:center}
.shell-dot[hidden]{display:none}
@media(min-width:1180px){.shell-rail .shell-nav[data-view=chat]{display:none}}
/* main */
.shell-main{overflow:auto;min-width:0;padding:18px 26px 28px;scrollbar-width:thin}
/* PC 계획표: room under the calendar so 주니 (bottom right) never sits on its last row for good — the Saturday column
   (9/29, QA #25). Only there: 오늘 stays one screen on a desktop. */
@media(min-width:761px){body.shell[data-view=plan] .shell-main{padding-bottom:150px}}
.shell-view[hidden]{display:none!important}
.s-viewhead{margin:4px 0 16px}.s-viewhead h1{margin:0;font-size:24px;font-weight:800;letter-spacing:-.02em}.s-viewhead p{margin:6px 0 0;color:var(--s-muted);font-size:14px;line-height:1.5}
.s-card{background:linear-gradient(180deg,var(--s-panel2),var(--s-panel));border:1px solid var(--s-line);border-radius:20px;padding:18px;min-width:0}
.s-card h2,.s-reports h2{margin:0 0 12px;font-size:15px;font-weight:750;display:flex;align-items:center;gap:8px}
.s-card h2 small{margin-left:auto;font-size:12px;color:var(--s-muted);font-weight:600}
.s-count{min-width:22px;height:22px;border-radius:11px;padding:0 7px;background:rgba(255,107,129,.16);color:#ffb3bf;font-size:12px;display:grid;place-items:center}
.s-btn{min-height:40px;padding:9px 14px;border-radius:11px;border:0;background:rgba(255,255,255,.08);color:var(--s-text);font:inherit;font-size:13px;font-weight:700;cursor:pointer;box-shadow:none}
.s-btn:hover{background:rgba(255,255,255,.13)}.s-btn:disabled{opacity:.45;cursor:not-allowed}
.s-primary{background:linear-gradient(180deg,var(--s-gold2),var(--s-gold));color:var(--s-ink)}.s-primary:hover{background:linear-gradient(180deg,#fae4b3,#e8c683)}
.s-danger{background:rgba(255,107,129,.13);color:#ffc2cc}.s-quiet{background:transparent;color:var(--s-muted)}
.s-wide{width:100%;margin-bottom:14px}
.s-link{border:0;background:none;padding:0;color:var(--s-gold2);font:inherit;font-size:12.5px;font-weight:700;cursor:pointer;text-align:left}
.s-empty{margin:4px 0;color:var(--s-muted);font-size:13.5px;line-height:1.6}
.s-eyebrow{margin:0 0 4px;font-size:12px;font-weight:750;color:var(--s-gold2);letter-spacing:.02em}
.s-tag{display:inline-flex;gap:6px;align-items:center;font-size:11px;font-weight:750;padding:3px 9px;border-radius:999px;background:rgba(255,255,255,.06);color:var(--s-muted)}
.s-tag i{width:6px;height:6px;border-radius:50%;background:var(--c,var(--ops))}
[data-team=video]{--c:var(--video)}[data-team=interior]{--c:var(--interior)}[data-team=venture]{--c:var(--venture)}[data-team=sales]{--c:var(--sales)}[data-team=ops]{--c:var(--ops)}
.s-av{width:40px;height:40px;flex:none;border-radius:50%;background:#1d2740;display:grid;place-items:center;overflow:hidden;box-shadow:0 0 0 2px var(--ring,#2a3350)}
.s-av svg{width:100%;height:100%;display:block}.s-av .station,.s-av .beacon{display:none}
.s-av.work{--ring:var(--s-green);animation:s-pulse 2s infinite}.s-av.wait{--ring:var(--s-amber)}.s-av.done{--ring:var(--s-blue)}.s-av.err{--ring:var(--s-red)}
@keyframes s-pulse{50%{box-shadow:0 0 0 2px var(--s-green),0 0 0 7px rgba(61,220,151,.15)}}
.s-pill{white-space:nowrap;display:flex;align-items:center;gap:8px;padding:8px 13px;border-radius:999px;background:var(--s-panel);border:1px solid var(--s-line);font-size:12.5px;color:var(--s-muted)}
.s-icon{width:40px;height:40px;border-radius:12px;border:1px solid var(--s-line);background:var(--s-panel);color:var(--s-muted);display:grid;place-items:center;cursor:pointer}.s-icon svg{width:20px;height:20px}
/* today header */
.t-top{display:flex;align-items:flex-end;gap:16px;margin-bottom:14px}
.t-hello h1{margin:0;font-size:24px;font-weight:800;letter-spacing:-.02em}.t-hello p{margin:5px 0 0;color:var(--s-muted);font-size:14px}.t-hello b{color:var(--s-gold2)}
.t-status{margin-left:auto;display:flex;gap:8px;align-items:center}
.t-conn i{width:8px;height:8px;border-radius:50%;background:var(--s-green);box-shadow:0 0 0 4px rgba(61,220,151,.14)}
.t-conn[data-state=wait] i{background:var(--s-amber);box-shadow:0 0 0 4px rgba(245,181,74,.14)}.t-conn[data-state=off] i{background:var(--s-dim);box-shadow:none}
.t-cost b{color:var(--s-text)}.t-bar{width:64px;height:5px;border-radius:9px;background:rgba(255,255,255,.07);overflow:hidden}.t-bar b{display:block;height:100%;background:linear-gradient(90deg,var(--s-green),var(--s-gold))}
.t-grid{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);gap:14px}
/* session card */
.t-session{grid-column:1/-1;display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:10px 20px;padding:14px 18px;background:linear-gradient(120deg,rgba(var(--s-glow),.14),rgba(var(--s-panel-rgb),.92) 45%)}
.t-gos{display:flex;gap:10px;grid-column:1;grid-row:1}
.t-go{display:flex;align-items:center;gap:12px;min-height:56px;padding:10px 22px;border:0;border-radius:16px;background:linear-gradient(180deg,var(--s-gold2),var(--s-gold));color:var(--s-ink);font:inherit;cursor:pointer;box-shadow:0 14px 30px -14px rgba(var(--s-glow),.9);text-align:left}
.t-go.alt{background:rgba(var(--s-glow),.12);color:var(--s-gold2);box-shadow:none;border:1px solid rgba(var(--s-glow),.4)}
.t-go:disabled{opacity:.5;cursor:not-allowed}
.t-go-ico{width:30px;height:30px;border-radius:50%;background:rgba(0,0,0,.14);display:grid;place-items:center;font-size:13px}.t-go.alt .t-go-ico{background:rgba(var(--s-glow),.2)}
.t-go-text{display:flex;flex-direction:column;line-height:1.25}.t-go-text b{font-size:17px;font-weight:850}.t-go-text small{font-size:11.5px;font-weight:650;opacity:.78;margin-top:2px}
.t-focus{grid-column:1;grid-row:2;justify-self:start;display:flex;gap:6px;padding:5px;border-radius:14px;background:rgba(0,0,0,.25);max-width:100%;overflow-x:auto;scrollbar-width:none}
.t-chip{white-space:nowrap;min-height:38px;padding:8px 14px;border:0;border-radius:10px;background:transparent;color:var(--s-muted);font:inherit;font-size:13px;font-weight:650;cursor:pointer}
.t-chip[aria-pressed=true]{background:rgba(255,255,255,.1);color:var(--s-text)}
.t-last{grid-column:2;grid-row:1/3;justify-self:end;display:flex;flex-direction:column;align-items:flex-end;gap:3px;text-align:right;font-size:12.5px;color:var(--s-muted);line-height:1.5}
.t-block{color:var(--s-amber)!important}
.t-countdown{grid-column:1/-1;display:flex;align-items:center;gap:14px;flex-wrap:wrap}.t-countdown strong{font-size:18px}.t-countdown p{margin:0;color:var(--s-muted);font-size:13px;flex:1}
.t-session.is-active{display:block}
.t-session-head{display:flex;gap:16px;align-items:center}
.t-ring{position:relative;width:86px;height:86px;flex:none;display:grid;place-items:center;text-align:center}
.t-ring svg{position:absolute;inset:0;transform:rotate(-90deg)}.t-ring circle{fill:none;stroke-width:6}.t-ring .bg{stroke:rgba(255,255,255,.08)}.t-ring .fg{stroke:var(--s-gold);stroke-linecap:round}
.t-ring b{font-size:17px;line-height:1}.t-ring small{position:absolute;bottom:20px;font-size:10.5px;color:var(--s-muted)}.t-ring b{margin-top:-8px}
.t-session-info h2{margin:0 0 10px;font-size:17px}.t-session-acts{display:flex;gap:8px;flex-wrap:wrap}
.t-lanes{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:8px;margin-top:14px}
.t-lane{display:flex;gap:10px;align-items:flex-start;padding:10px 12px;border-radius:14px;border:1px solid var(--s-line);border-left:3px solid var(--c);background:rgba(255,255,255,.03);color:var(--s-text);font:inherit;text-align:left;cursor:pointer;min-height:64px}
.t-lane .s-av{width:34px;height:34px}.t-lane-body{display:flex;flex-direction:column;gap:3px;min-width:0}.t-lane-body strong{font-size:13px}.t-lane-body>span{font-size:12.5px;color:var(--s-muted);line-height:1.45;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.s-steps{display:flex;gap:3px;margin:4px 0 0;padding:0;list-style:none}.s-steps li{flex:1;min-width:0;padding:3px 2px;border-radius:6px;background:rgba(255,255,255,.06);font-size:10px;white-space:nowrap;text-align:center;color:var(--s-dim)}
.s-steps li[data-state=done]{background:rgba(167,139,250,.25);color:#ddd2ff}.s-steps li[data-state=now]{background:var(--video);color:#1b1433;font-weight:800}
.t-hourly{margin:12px 0 0;font-size:12.5px;color:var(--s-muted);line-height:1.5}
/* decisions */
.t-decision{display:grid;grid-template-columns:76px minmax(0,1fr);gap:14px;padding:11px;border-radius:16px;background:rgba(255,255,255,.03);border:1px solid var(--s-line);margin-bottom:10px}
.t-thumb{height:76px;border-radius:12px;display:grid;place-items:center;font-size:26px;font-weight:900;color:#fff;background:linear-gradient(160deg,#9aa6c2,#46506b)}
.t-thumb[data-team=video]{background:linear-gradient(160deg,#f7a8c8,#a78bfa 55%,#4c3a8f)}.t-thumb[data-team=venture]{background:linear-gradient(160deg,#fed7aa,#fb923c 60%,#7c2d12)}
.t-thumb[data-team=sales]{background:linear-gradient(160deg,#fbcfe8,#f472b6 60%,#831843)}.t-thumb[data-team=interior]{background:linear-gradient(160deg,#99f6e4,#2dd4bf 60%,#134e4a)}
.t-decision h3{margin:7px 0 4px;font-size:15px;line-height:1.4}.t-decision p{margin:0;color:var(--s-muted);font-size:12.5px;line-height:1.55}
.t-acts{display:flex;gap:6px;margin-top:10px;flex-wrap:wrap}
.t-decision p.t-cost{margin-top:5px;color:#e9c46a;font-weight:700;font-size:12.5px}
.st-brief,.st-gauto{margin-top:16px;padding-top:14px;border-top:1px solid var(--s-line)}.st-brief h3,.st-gauto h3{margin:0 0 6px;font-size:14px}
.st-brief select,.st-gauto select,.st-key input{min-height:40px;padding:8px 10px;border-radius:11px;border:1px solid rgba(255,255,255,.12);background:rgba(0,0,0,.25);color:var(--s-text);font:inherit;font-size:13px}
.st-key input{flex:1 1 220px;min-width:0}
.st-news .wn-item{padding:10px 0;border-top:1px solid var(--s-line)}.st-news .wn-item:first-of-type{border-top:0}
.st-news .wn-item b{display:block;font-size:14px}.st-news .wn-item small{display:block;color:var(--s-muted);font-size:11.5px;margin-top:2px}
.st-news .wn-item p{margin:6px 0 0;font-size:13px;line-height:1.6;color:var(--s-text)}
.st-news .wn-copy{width:100%;margin-top:10px;padding:10px;border-radius:11px;border:1px solid rgba(255,255,255,.12);background:rgba(0,0,0,.25);color:var(--s-text);font:inherit;font-size:12px}
.t-tools{display:none}
@media(max-width:760px){.t-tools{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}.t-tools .s-btn{flex:1 1 auto;min-height:44px}}
/* goals */
.t-goal{padding:12px 0;border-top:1px solid var(--s-line)}.t-goal:first-of-type{border-top:0;padding-top:2px}
.t-goal-row{display:flex;align-items:center;gap:10px;font-size:14px;font-weight:700}.t-goal-row em{margin-left:auto;font-style:normal;font-size:13px;color:var(--s-gold2);white-space:nowrap}
.t-meter{height:7px;border-radius:9px;background:rgba(255,255,255,.07);margin:9px 0 7px;overflow:hidden}.t-meter b{display:block;height:100%;border-radius:9px;background:var(--c)}
.t-goal p{margin:0;font-size:12.5px;color:var(--s-muted);line-height:1.5}
/* pods */
.t-office{grid-column:1/-1}
.t-pods{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px}
.t-pod{position:relative;display:flex;flex-direction:column;align-items:flex-start;gap:8px;padding:12px;border-radius:16px;background:rgba(255,255,255,.025);border:1px solid var(--s-line);color:var(--s-text);font:inherit;text-align:left;cursor:pointer;overflow:hidden}
.t-pod::before{content:"";position:absolute;inset:0 0 auto;height:3px;background:var(--c);opacity:.8}.t-pod:hover{background:rgba(255,255,255,.05)}
.t-pod-name{font-size:13px;font-weight:750}.t-people{display:flex;gap:6px}.t-pod-line{font-size:12px;color:var(--s-muted);line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.t-pod-line b{color:var(--s-text);font-weight:650}
/* reports */
.s-reports{display:flex;flex-direction:column;gap:8px;margin-bottom:18px}
.t-report{display:flex;flex-direction:column;gap:4px;padding:13px 15px;border-radius:14px;border:1px solid var(--s-line);background:var(--s-panel);color:var(--s-text);font:inherit;text-align:left;cursor:pointer}.t-report small{color:var(--s-muted)}
.shell #view-reports .side{position:static;top:auto;height:auto;min-height:0;max-height:none;border-radius:20px}
/* Here the work center grows with its content and the page scrolls. The classic layout's inner pane scroller (with
   overscroll-behavior:contain) swallowed swipes that started inside it, so the page never moved (2026-09-27). */
.shell #view-reports .ac-pane{max-height:none;overflow:visible;overscroll-behavior:auto}
/* A report window scrolls itself; a short one no longer drags the page behind it along. */
.shell #command-detail{overscroll-behavior:contain}
/* 사모님 그림책 오피스 card (book-link.js) */
.t-bookoffice{display:grid;gap:10px;margin-bottom:14px}
.bl-head{display:flex;align-items:baseline;justify-content:space-between;gap:8px;flex-wrap:wrap}.bl-head h2{margin:0;font-size:15px}.bl-head small{color:var(--s-muted);font-size:12px}
.bl-money{margin:0;display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}.bl-money b{font-size:22px}.bl-money span{color:var(--s-muted);font-size:13px}
.bl-bar{height:8px;border-radius:999px;background:rgba(255,255,255,.08);overflow:hidden}.bl-bar i{display:block;height:100%;background:linear-gradient(90deg,var(--s-green),var(--s-gold))}.bl-bar[data-warn=true] i{background:linear-gradient(90deg,var(--s-amber),#ef6f6c)}
.bl-limits{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.bl-limits>span{font-size:12px;color:var(--s-muted);margin-right:4px}.bl-limits .s-btn,.bl-acts .s-btn{min-height:34px;padding:5px 12px;font-size:12px}.bl-limits .s-btn[aria-pressed=true]{background:linear-gradient(180deg,var(--s-gold2),var(--s-gold));color:var(--s-ink)}
.bl-facts,.bl-note{margin:0;font-size:12.5px;color:var(--s-muted)}
.bl-requests{display:grid;gap:8px;padding-top:10px;border-top:1px solid var(--s-line)}.bl-requests h3{margin:0;font-size:14px}
.bl-request{display:grid;gap:5px;padding:10px 12px;border-radius:12px;background:rgba(255,255,255,.03);border:1px solid var(--s-line)}.bl-request[data-status=new]{border-color:rgba(233,196,106,.5)}.bl-request[data-status=done]{opacity:.65}
.bl-request p{margin:0;white-space:pre-wrap;overflow-wrap:anywhere;font-size:13.5px;line-height:1.6}.bl-request small{color:var(--s-muted);font-size:12px;overflow-wrap:anywhere}
.bl-tag{justify-self:start;padding:2px 9px;border-radius:999px;background:rgba(233,196,106,.14);color:var(--s-gold);font-size:11px;font-weight:700}
.bl-acts{display:flex;flex-wrap:wrap;gap:6px}
.shell #view-office section.office{padding:16px;border-radius:20px}
.shell #view-settings .topbar,.shell #view-settings .commandbar,.shell #view-settings .readiness{margin:0 0 14px}
.shell #view-settings .s-settings{display:flex;flex-direction:column}
.shell .s-decisions .t-decision{margin-bottom:10px}
/* chat column */
.shell-chat{min-height:0;border-left:1px solid var(--s-line);background:rgba(12,16,28,.75);display:flex;flex-direction:column}
.shell .team-chat{display:flex!important;flex-direction:column;position:static!important;height:100%!important;min-height:0!important;border:0!important;border-radius:0!important;background:transparent!important;overflow:hidden}
.shell .team-chat-head{padding:18px 18px 10px;border-bottom:1px solid var(--s-line)}.shell .team-chat-head .eyebrow{display:none}.shell .team-chat-head h2{margin:0;font-size:17px}.shell .team-chat-head>.hint{display:none}
.shell .chat-tools{display:flex;gap:6px;margin-top:10px;flex-wrap:wrap}.shell .chat-tools button,.shell .team-chat-head>button{min-height:34px;padding:6px 11px;font-size:12px;border-radius:999px}
.shell .chat-members{display:flex;gap:4px;padding:10px 12px;border-bottom:1px solid var(--s-line);overflow-x:auto;scrollbar-width:none}
.shell .chat-member{flex:none;display:flex;flex-direction:column;align-items:center;gap:3px;width:46px;min-height:58px;padding:4px 2px;border:0!important;border-radius:12px!important;background:transparent;color:var(--s-muted);font-size:11px}
.shell .chat-member .chat-portrait{width:32px;height:32px;border-radius:50%;background:#1d2740;box-shadow:0 0 0 2px #2a3350}
.shell .chat-log{flex:1;min-height:0;overflow:auto;padding:14px 14px;overscroll-behavior:contain}
.shell .chat-request-card{border:0;border-left:0;background:transparent;padding:0;margin-bottom:16px}
.shell .chat-request-head{font-size:12px;color:var(--s-muted)}.shell .chat-request-title{font-size:12.5px;color:var(--s-text)}.shell .chat-request-head .chat-portrait{width:26px;height:26px;border-radius:50%;background:#1d2740}
.shell .chat-request-summary{margin:8px 0;max-width:92%;width:fit-content;padding:10px 13px;border-radius:16px 16px 16px 5px;background:var(--s-panel2);border:1px solid var(--s-line);font-size:13.5px;line-height:1.55}
.shell .chat-request-summary.is-juno{margin-left:auto;max-width:88%;border:0;border-radius:16px 16px 5px 16px;background:linear-gradient(180deg,#f3d493,#dcb46a);color:var(--s-ink);font-weight:600}
.shell .chat-request-outcome{max-width:92%;padding:10px 13px;border-radius:16px 16px 16px 5px;background:var(--s-panel2);border:1px solid var(--s-line);border-left:3px solid var(--team-color,#8eaff5);font-size:13.5px}
.shell .chat-request-quick button,.shell .chat-request-menu button{min-height:34px;border-radius:999px}
.shell .chat-composer{padding:10px 14px 14px;border-top:1px solid var(--s-line);background:transparent}
.shell .chat-composer textarea{width:100%;box-sizing:border-box;min-height:64px;max-height:160px;resize:vertical;border:1px solid var(--s-line);border-radius:14px;background:var(--s-panel2);color:var(--s-text);padding:11px 12px;font:inherit;font-size:14px;line-height:1.5}
.shell .chat-composer-controls{display:flex;gap:6px;margin-top:8px;align-items:center}.shell .chat-composer-controls select{max-width:110px;min-height:40px;padding:8px;border-radius:10px;background:var(--s-panel2);border:1px solid var(--s-line);color:var(--s-text)}
.shell .chat-composer-controls .primary{margin-left:auto;min-height:40px}.shell .chat-composer .hint,.shell .chat-connection{font-size:11px;color:var(--s-dim);margin:6px 0 0}
.shell .chat-quick{display:flex;gap:6px;margin-bottom:8px;overflow-x:auto;scrollbar-width:none}.shell .chat-quick button{flex:none;min-height:34px;padding:6px 12px;border:0;border-radius:999px;background:rgba(255,255,255,.07);color:var(--s-muted);font:inherit;font-size:12px;font-weight:650;cursor:pointer}
.shell .chat-latest{position:sticky;bottom:8px;margin:0 auto;display:block}
/* tablet: no chat column; chat is a view */
@media(max-width:1179px){
  .shell-frame{grid-template-columns:76px minmax(0,1fr)}
  .shell-chat{display:none}
  body.shell[data-view=chat] .shell-chat{display:flex;grid-column:2;grid-row:1;height:100dvh}
  body.shell[data-view=chat] .shell-main{display:none}
}
/* phone */
@media(max-width:760px){
  .shell-frame{display:block;height:auto;min-height:100dvh;padding-bottom:78px}
  .shell-rail{display:none}
  .shell-main{overflow:visible;padding:14px 16px 20px}
  .shell-tabbar{display:grid;grid-template-columns:repeat(5,1fr);position:fixed;left:0;right:0;bottom:0;z-index:15;height:calc(66px + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);background:rgba(var(--s-dark),.96);border-top:1px solid var(--s-line);backdrop-filter:blur(12px)}
  .shell-tabbar .shell-nav{width:auto;min-height:0;border-radius:0;justify-content:center;background:transparent!important}
  .shell-tabbar .shell-nav[aria-current=true]{color:var(--s-gold2)}.shell-tabbar .shell-dot{right:calc(50% - 22px)}
  body.shell[data-view=chat] .shell-chat{display:flex;height:calc(100dvh - 66px - env(safe-area-inset-bottom))}
  .shell .chat-members,.shell .team-chat-head>p.hint{display:none}.shell .team-chat-head{display:flex;flex-wrap:wrap;align-items:center;gap:6px;padding:12px 14px}.shell .team-chat-head h2{flex:1 0 100%;font-size:17px}.shell .chat-tools{margin:0}
  .shell .chat-composer textarea{min-height:52px}.shell .chat-quick button{min-height:38px}
  .t-decisions h2 small{display:none}.s-card h2{font-size:16px}
  .t-top{align-items:flex-start;margin-bottom:12px}.t-hello h1{font-size:19px}.t-hello p{font-size:13px;line-height:1.5}
  .t-conn,.t-cost-label,.t-bar{display:none!important}.t-cost{padding:7px 10px}.t-status{gap:6px}.s-icon{width:38px;height:38px}
  .t-grid{grid-template-columns:minmax(0,1fr);gap:12px}
  .t-session{display:flex;flex-direction:column;align-items:stretch;gap:12px;padding:14px}
  .t-gos{display:grid;grid-template-columns:1fr 1fr;gap:8px}.t-go{justify-content:center;min-width:0;padding:12px 8px;gap:0}.t-go-ico{display:none}.t-go-text{align-items:center;text-align:center}.t-go-text b{font-size:16px}
  .t-focus{align-self:stretch}.t-last{align-items:flex-start;text-align:left}
  .t-session-head{align-items:flex-start}.t-ring{width:74px;height:74px}.t-ring small{bottom:15px}
  .t-lanes{grid-template-columns:minmax(0,1fr)}
  .t-decision{grid-template-columns:60px minmax(0,1fr);gap:12px}.t-thumb{height:60px;font-size:22px}
  .t-acts .s-btn{min-height:44px;flex:1 1 auto}
  .t-pods{display:flex;overflow-x:auto;gap:8px;padding-bottom:4px;scroll-snap-type:x mandatory}.t-pod{flex:0 0 210px;scroll-snap-align:start}
  .s-viewhead h1{font-size:21px}
  .shell .toast{bottom:84px}
}
/* Mascots (2026-09-25): 콩이 = approvals, 도토리 = PC work. CSS switches mood; motion respects user settings. */
.t-mascot{display:inline-flex;align-items:center;gap:8px;margin-left:auto;padding:4px 10px 4px 4px;border:1px solid var(--s-line);border-radius:999px;background:rgba(255,255,255,.04);color:var(--s-text);font:inherit;font-size:12.5px;font-weight:700;cursor:pointer;min-height:44px;max-width:100%}
.t-mascot:hover{background:rgba(255,255,255,.08)}.t-mascot-say{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.t-mascot .mascot-svg{width:40px;height:40px;flex:none;overflow:visible}
.t-kongi .k-closed,.t-kongi .k-z,.t-dotori .d-closed,.t-dotori .d-z{display:none}
.t-mascot.t-kongi[data-mood=alert]{border-color:rgba(245,217,154,.5);background:rgba(var(--s-glow),.12);color:var(--s-gold2)}
.t-kongi[data-mood=alert] .mascot-svg{animation:m-hop 1.8s ease-in-out infinite}
.t-kongi[data-mood=alert] .k-tail{transform-box:fill-box;transform-origin:0% 100%;animation:m-wag .45s ease-in-out infinite alternate}
.t-kongi[data-mood=rest] .k-paper,.t-kongi[data-mood=rest] .k-wag,.t-kongi[data-mood=rest] .k-open{display:none}
.t-kongi[data-mood=rest] .k-closed,.t-kongi[data-mood=rest] .k-z{display:inline}
.t-dotori[data-mood=work] .d-wheel{transform-box:fill-box;transform-origin:center;animation:m-spin 1.3s linear infinite}
.t-dotori[data-mood=work] .d-ham{animation:m-bob .3s ease-in-out infinite alternate}
.t-dotori:not([data-mood=work]) .d-lines{display:none}
.t-dotori:not([data-mood=work]) .d-open{display:none}
.t-dotori:not([data-mood=work]) .d-closed,.t-dotori:not([data-mood=work]) .d-z{display:inline}
.t-dotori[data-mood=off]{color:var(--s-muted)}.t-dotori[data-mood=off] .mascot-svg{filter:grayscale(1);opacity:.65}
.t-session-head .t-dotori{margin-left:auto;align-self:flex-start}
.t-last .t-dotori{margin:0 0 4px}
@keyframes m-wag{from{transform:rotate(-10deg)}to{transform:rotate(14deg)}}
@keyframes m-hop{0%,72%,100%{transform:translateY(0)}82%{transform:translateY(-4px)}}
@keyframes m-spin{to{transform:rotate(360deg)}}
@keyframes m-bob{to{transform:translateY(-2px)}}
@media (prefers-reduced-motion:reduce){.t-mascot *,.m-pet *{animation:none!important}}
body.motion-paused .t-mascot *,body.motion-paused .m-pet *{animation:none!important}
@media(max-width:760px){.t-decisions h2{flex-wrap:wrap}.t-decisions h2 .t-mascot{margin-left:0;flex-basis:100%;justify-content:flex-start}.t-session-head .t-dotori .t-mascot-say{display:none}.t-session-head .t-dotori{padding:4px}}
/* Floating mascots: above the page on every tab; bottom-right of the main column (above the phone tab bar). */
.m-dock{position:fixed;right:16px;bottom:16px;z-index:16;display:flex;flex-direction:column;align-items:flex-end;gap:2px;touch-action:none;user-select:none;-webkit-user-select:none}
.m-dock[hidden]{display:none}
@media(min-width:1180px){.m-dock{right:calc(clamp(360px,28vw,460px) + 20px)}}
@media(max-width:760px){.m-dock{right:8px;bottom:calc(74px + env(safe-area-inset-bottom))}}
.m-pet{position:relative;width:84px;height:84px;padding:0;border:0;background:none;cursor:grab;filter:drop-shadow(0 8px 14px rgba(0,0,0,.45))}
.m-pet:active{cursor:grabbing}.m-pet .mascot-svg{width:100%;height:100%;overflow:visible;display:block}
.m-badge{position:absolute;top:0;right:4px;min-width:22px;height:22px;padding:0 6px;border-radius:11px;background:var(--s-red,#ff6b81);color:#fff;font-size:12px;font-weight:800;display:grid;place-items:center;box-shadow:0 0 0 2px #0a0e18}
.m-badge[hidden]{display:none}
.m-say{position:absolute;right:0;bottom:100%;margin-bottom:4px;max-width:min(260px,80vw);padding:9px 13px;border:0;border-radius:14px 14px 4px 14px;background:#fff;color:var(--s-ink);font:inherit;font-size:13px;font-weight:700;line-height:1.4;text-align:left;box-shadow:0 10px 24px rgba(0,0,0,.35);cursor:pointer;white-space:nowrap;animation:m-pop .2s ease-out}
.m-say[hidden]{display:none}
/* When each message came (JUNO 9/28): bubbles, 결재 cards, chat lines */
.m-say-time{display:block;margin-top:3px;font-size:11px;font-weight:600;color:#6b6252}
.t-when{margin-left:8px;font-size:12px;font-weight:600;color:var(--s-muted);white-space:nowrap}
.m-hide{position:absolute;top:-4px;left:-4px;width:24px;height:24px;border-radius:50%;border:1px solid rgba(255,255,255,.15);background:#1b2438;color:#b6c0d4;font-size:14px;line-height:1;display:grid;place-items:center;cursor:pointer;opacity:0;transition:opacity .15s}
.m-dock:hover .m-hide,.m-dock:focus-within .m-hide{opacity:1}
@media(hover:none){.m-hide{opacity:.9}}
@media(max-width:760px){.m-pet{width:64px;height:64px}.m-say{font-size:12.5px;white-space:normal}}
.s-pets{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 14px}
@keyframes m-pop{from{transform:translateY(6px);opacity:0}}
@media(max-width:1179px){body.shell[data-view=chat] .m-dock{display:none}}
.m-row{display:flex;align-items:flex-end;gap:2px}
.m-tools{display:flex;gap:2px;padding:3px;align-self:center;border-radius:999px;background:rgba(var(--s-panel-rgb),.94);border:1px solid rgba(255,255,255,.1);opacity:0;transition:opacity .15s}
.m-dock:hover .m-tools,.m-dock:focus-within .m-tools{opacity:1}
@media(hover:none){.m-tools{opacity:1}}
.m-tool{width:36px;height:36px;padding:0;border:0;border-radius:50%;background:transparent;color:#cfd8ea;display:grid;place-items:center;cursor:pointer}
.m-tool svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.m-tool:hover{background:rgba(255,255,255,.08)}.m-tool.on{color:var(--s-gold2,#f5d99a);background:rgba(var(--s-glow),.14)}
.m-compose{position:absolute;right:0;bottom:100%;margin-bottom:8px;width:330px;padding:14px 12px 10px;border-radius:16px;background:#141c2e;border:1px solid rgba(255,255,255,.12);box-shadow:0 18px 40px rgba(0,0,0,.55);display:flex;flex-direction:column;gap:8px;cursor:auto;user-select:text;-webkit-user-select:text;touch-action:auto}
.m-compose[hidden]{display:none}
.m-compose textarea{width:100%;box-sizing:border-box;resize:none;border:1px solid rgba(255,255,255,.12);border-radius:12px;background:#0f1626;color:#eef1f7;padding:10px 12px;font:inherit;font-size:14px;line-height:1.5}
.m-compose-row{display:flex;justify-content:flex-end;align-items:center;gap:6px}
.m-send{width:40px;height:40px;border:0;border-radius:50%;background:linear-gradient(180deg,var(--s-gold2),var(--s-gold));color:var(--s-ink);font-weight:900;font-size:18px;cursor:pointer}
.m-close{align-self:flex-end;margin:-6px -2px 0 0;border:0;background:none;color:#8d97ab;font:inherit;font-size:12px;cursor:pointer;padding:2px 4px}
.m-note{margin:0;font-size:12px;color:#8d97ab;line-height:1.45}.m-note:empty{display:none}
.m-orb{width:52px;height:52px;border-radius:50%;align-self:center;background:radial-gradient(circle at 35% 30%,#fff,#c9d6ff 40%,#7d93ff);animation:m-orb 1.1s ease-in-out infinite}
.m-orb[hidden]{display:none}
@keyframes m-orb{50%{transform:scale(1.12);box-shadow:0 0 0 12px rgba(125,147,255,0)}0%,100%{box-shadow:0 0 0 0 rgba(125,147,255,.55)}}
@media(max-width:760px){.m-tools{order:-1}.m-compose{position:fixed;left:8px;right:8px;bottom:calc(74px + env(safe-area-inset-bottom));width:auto}}
/* QA 9/28: on the phone the × sat on the first tool (a tap on 물어보기 hid 주니) — it moves beside 주니 instead, and the page
   ends above the tab bar and the tool row so the last buttons are never under them. */
@media(max-width:760px){.m-hide{top:auto;left:auto;right:70px;bottom:10px;width:34px;height:34px}}
/* QA 9/28: on the phone every tap target is at least about 40px (주니 tools, 오늘 비용, links, fold-outs). */
@media(max-width:760px){.m-tool{width:40px;height:40px}.t-top .t-cost{min-height:40px;box-sizing:border-box}
  .shell .s-link{min-height:40px;display:inline-flex;align-items:center}.shell details>summary{padding-top:9px;padding-bottom:9px}}
@media (prefers-reduced-motion:reduce){.m-orb{animation:none}}
@media(max-width:760px){.m-dock.composing .m-row,.m-dock.composing .m-tools,.m-dock.composing .m-hide,.m-dock.composing .m-say{visibility:hidden}}
/* 주니 (2026-09-25): the face screen shows one state; antenna = approvals, chest = PC work. */
.m-robot{width:104px;height:116px}
@media(max-width:760px){.m-robot{width:80px;height:90px}}
.t-juni .j-face>g{display:none}
.t-juni[data-face=happy] .f-happy,.t-juni[data-face=approval] .f-approval,.t-juni[data-face=work] .f-work,.t-juni[data-face=listen] .f-listen,.t-juni[data-face=sleep] .f-sleep,.t-juni[data-face=off] .f-sleep{display:inline}
.t-juni[data-face=off] .mascot-svg{filter:grayscale(1) brightness(.85);opacity:.75}
.t-juni[data-alert=on] .j-bulb{fill:#ff6b81;animation:j-blink 1s steps(2,jump-none) infinite}
.t-juni[data-alert=on] .j-halo{fill:#ff6b81;animation:j-halo 1s ease-in-out infinite}
.t-juni[data-work=on] .j-chest{fill:#7ff5ff;animation:j-pulse 1.2s ease-in-out infinite}
.t-juni[data-face=approval] .mascot-svg{animation:m-hop 1.8s ease-in-out infinite}
.t-juni .f-bar{transform-box:fill-box;transform-origin:left center;animation:j-bar 1.6s ease-in-out infinite}
.t-juni .f-eq{transform-box:fill-box;transform-origin:center;animation:j-eq .7s ease-in-out infinite alternate}
.t-juni .f-eq:nth-of-type(2){animation-delay:.1s}.t-juni .f-eq:nth-of-type(3){animation-delay:.2s}.t-juni .f-eq:nth-of-type(4){animation-delay:.3s}.t-juni .f-eq:nth-of-type(5){animation-delay:.4s}
.t-juni[data-face=sleep] .j-head{transform-box:fill-box;transform-origin:center bottom;animation:j-nod 3.2s ease-in-out infinite}
.t-juni[data-face=happy] .j-arm-r{transform-box:fill-box;transform-origin:top center;animation:j-wave .45s ease-in-out 4 alternate}
/* Awake idle faces (2026-09-25): blink, look around, think, hum. Sleep is for the night only. */
.t-juni[data-face=idle] .f-idle,.t-juni[data-face=look] .f-look,.t-juni[data-face=think] .f-think,.t-juni[data-face=hum] .f-hum{display:inline}
.t-juni .j-eye{transform-box:fill-box;transform-origin:center;animation:j-eye 4.6s ease-in-out infinite}
.t-juni .j-gaze{animation:j-gaze 3.6s ease-in-out infinite}
.t-juni .j-dots circle{animation:j-dot 1.5s ease-in-out infinite}.t-juni .j-dots circle:nth-child(2){animation-delay:.2s}.t-juni .j-dots circle:nth-child(3){animation-delay:.4s}
.t-juni .j-notes{animation:j-note 2.4s ease-in-out infinite}
.t-juni[data-face=hum] .j-head{transform-box:fill-box;transform-origin:center bottom;animation:j-sway 2.4s ease-in-out infinite}
.t-juni[data-pc=off] .j-chest{fill:#5d6780}
@keyframes j-eye{0%,92%,100%{transform:scaleY(1)}95%{transform:scaleY(.1)}}
@keyframes j-gaze{0%,20%{transform:translateX(0)}35%,55%{transform:translateX(9px)}70%,88%{transform:translateX(-2px)}100%{transform:translateX(0)}}
@keyframes j-dot{0%,100%{opacity:.25}50%{opacity:1}}
@keyframes j-note{0%{transform:translateY(3px);opacity:0}30%{opacity:1}100%{transform:translateY(-6px);opacity:0}}
@keyframes j-sway{0%,100%{transform:rotate(-3deg)}50%{transform:rotate(3deg)}}
@media (prefers-reduced-motion:reduce){.t-juni .j-eye,.t-juni .j-gaze,.t-juni .j-dots circle,.t-juni .j-notes,.t-juni[data-face=hum] .j-head{animation:none}}
@keyframes j-blink{50%{opacity:.35}}
@keyframes j-halo{50%{opacity:.6;transform-box:fill-box}}
@keyframes j-pulse{50%{opacity:.4}}
@keyframes j-bar{0%{transform:scaleX(.12)}100%{transform:scaleX(1)}}
@keyframes j-eq{to{transform:scaleY(.35)}}
@keyframes j-nod{50%{transform:rotate(-3deg) translateY(1px)}}
@keyframes j-wave{to{transform:rotate(-38deg)}}
/* Review fixes (2026-09-25): phone 주니 covers less and fades while scrolling; settings numbers never overlap. */
.m-dock{transition:opacity .2s}
@media(max-width:760px){
  .m-robot{width:62px;height:70px}
  .m-dock.scrolling{opacity:.25;pointer-events:none}
  .shell-main{padding-bottom:calc(180px + env(safe-area-inset-bottom))}
  .shell .s-settings .metrics{grid-template-columns:repeat(3,minmax(0,1fr));row-gap:10px}
  .shell .s-settings .metric strong{white-space:normal;word-break:keep-all;font-size:14px}
}
/* Settings (2026-09-25): alerts card first; the old header's brand, clock, start button and counters stay hidden. */
.shell .s-settings{display:flex;flex-direction:column;gap:14px}
.shell .s-settings .brand,.shell .s-settings .clock,.shell .s-settings .metrics,.shell .s-settings .commandbar [data-command=auto_start]{display:none!important}
.st-line{margin:0 0 6px;font-size:14px;line-height:1.55;color:var(--s-muted)}.st-line[data-state=on]{color:var(--s-green)}
.st-sub{margin:0 0 4px;font-size:12.5px;color:var(--s-dim)}
.st-alerts .t-acts{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.st-push{margin-top:10px;padding-top:10px;border-top:1px solid var(--s-line)}
/* Lively office (2026-09-25): errand bubbles (hand-off, stand-up, report) replace the status bubble while shown */
.world-say{position:absolute;z-index:4;bottom:calc(100% + 7px);left:50%;transform:translateX(-50%);width:max-content;max-width:170px;padding:6px 9px;word-break:keep-all;border-radius:10px;
  background:#fff8e6;border:1px solid var(--s-gold);color:#4a3710;font-size:10.5px;font-weight:700;line-height:1.4;text-align:center;white-space:normal;box-shadow:0 4px 14px #0005;pointer-events:none}
.world-say::after{content:"";position:absolute;top:100%;left:50%;margin-left:-5px;border:5px solid transparent;border-top-color:var(--s-gold)}
.agent[data-acting=true] .bubble{visibility:hidden}
/* 콘텐츠 계획표 (2026-09-25): month grid on PC, two-week agenda on phones */
.pl-form{display:grid;grid-template-columns:160px 150px minmax(0,1fr) auto;gap:8px;margin-bottom:10px}
.pl-form input,.pl-form select{min-height:42px;padding:8px 10px;border-radius:10px;border:1px solid var(--s-line);background:rgba(0,0,0,.28);color:var(--s-text);font:inherit;font-size:15px;min-width:0}
.pl-legend{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 12px}
.pl-month-head{display:flex;align-items:center;gap:10px;margin-bottom:10px}.pl-month-head h2{margin:0}
.pl-nav{min-height:34px;padding:4px 12px}
.pl-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}
.pl-week{font-size:12px;color:var(--s-muted);text-align:center;padding:4px 0}
.pl-day{min-height:96px;padding:6px;border-radius:10px;background:rgba(255,255,255,.03);border:1px solid var(--s-line);display:flex;flex-direction:column;gap:3px;min-width:0}
.pl-day[data-out=true]{opacity:.45}.pl-day[data-today=true]{border-color:var(--s-gold);box-shadow:inset 0 0 0 1px var(--s-gold)}
.pl-num{font-size:12px;font-weight:750;color:var(--s-muted)}
.pl-chip{display:flex;align-items:center;gap:4px;min-width:0;padding:3px 6px;border-radius:7px;font-size:11px;line-height:1.35;background:rgba(255,255,255,.06);border-left:3px solid var(--k,#8d97ab)}
.pl-chip .pl-kind{flex:none;font-weight:750;color:var(--k,#8d97ab)}.pl-chip .pl-title{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pl-chip[data-kind=note]{--k:var(--s-gold2)}.pl-chip[data-kind=approval]{--k:#f5b54a}.pl-chip[data-kind=scheduled]{--k:#7aa7ff}.pl-chip[data-kind=posted]{--k:#3ddc97}.pl-chip[data-kind=video]{--k:#a78bfa}.pl-chip[data-kind=idea]{--k:#f472b6}
.pl-chip[data-done=true] .pl-title{text-decoration:line-through;color:var(--s-muted)}
/* 9/29 (QA #25): in the month grid the colour edge says what kind it is (the legend above), so the title gets the whole
   chip and up to two lines ("영상 제작 「…" showed nothing of the title); the kind stays in the tooltip. */
.pl-month .pl-chip:not(.pl-key) .pl-kind{display:none}.pl-sign{display:none;flex:none;font-size:10px;line-height:1.5}.pl-month .pl-sign{display:inline}
.pl-month .pl-chip{align-items:flex-start}
.pl-month .pl-chip .pl-title{white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow-wrap:anywhere}
.pl-chip[data-channel=teyo_veya]{--k:var(--s-gold2)}.pl-chip[data-channel=kelaroq]{--k:#2dd4bf}.pl-chip[data-channel=etc]{--k:#8d97ab}
.pl-chip[data-kind=note]:not(.pl-key){background:rgba(245,217,154,.08)}
.pl-key{display:inline-flex;font-weight:700;color:var(--k)}
.pl-tick,.pl-del{flex:none;border:0;background:none;color:var(--s-muted);font:inherit;font-size:12px;cursor:pointer;padding:0 2px;min-height:0}
.pl-more{font-size:11px;color:var(--s-muted)}
.pl-agenda{display:none}
.pl-aday{padding:10px 0;border-top:1px solid var(--s-line);display:flex;flex-direction:column;gap:6px}.pl-aday[data-today=true] strong{color:var(--s-gold2)}
@media(max-width:760px){
  .pl-form{grid-template-columns:1fr 1fr}.pl-form input:not([type]),.pl-form button{grid-column:1/-1}
  .pl-month{display:none}.pl-agenda{display:block}
  .pl-chip{font-size:13px;padding:6px 8px}.pl-chip .pl-title{white-space:normal}.pl-tick,.pl-del{font-size:16px;padding:2px 6px}
  .pl-tick,.pl-del{min-width:40px;min-height:40px;display:inline-grid;place-items:center}   /* phone tap size (QA #21) */
}
.t-goal-open{min-height:0;padding:0;line-height:inherit;font-size:inherit;font-weight:inherit;color:var(--s-text)}.t-goal-open:hover{color:var(--s-gold2);text-decoration:underline}
/* 트렌드 뷰어 (2026-09-25): videos the team collected during free research */
.tr-bar{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-bottom:12px}.tr-bar .s-primary{margin-left:auto}
.tr-chips{display:flex;gap:4px;padding:4px;border-radius:12px;background:rgba(0,0,0,.25)}
.tr-item{display:flex;gap:12px;align-items:flex-start;padding:12px 0;border-top:1px solid var(--s-line)}.tr-item:first-child{border-top:0}
.tr-rank{flex:none;width:28px;height:28px;border-radius:9px;display:grid;place-items:center;background:rgba(var(--s-glow),.14);color:var(--s-gold2);font-weight:800;font-size:13px}
.tr-body{min-width:0;display:flex;flex-direction:column;gap:3px}
.tr-title{color:var(--s-text);font-weight:700;font-size:14px;line-height:1.45;text-decoration:none}.tr-title:hover{color:var(--s-gold2);text-decoration:underline}
.tr-meta{margin:0;font-size:12.5px;color:var(--s-green)}.tr-from{margin:0;font-size:12px;color:var(--s-muted)}
@media(max-width:760px){.tr-bar .s-primary{margin-left:0;width:100%}}
/* 트렌드 (2026-09-26): 테요·베야 숏폼 · AI 핫 이슈 · 새 AI 도구 · 저장함, with a memo pad beside the list */
.tr-status{margin:0;font-size:12.5px;color:var(--s-muted);flex:1 1 260px;overflow-wrap:anywhere}
.tr-bar>.hint{flex:1 1 100%;margin:0;font-size:12px;color:var(--s-muted)}
.tr-tabs{display:flex;flex-wrap:wrap;gap:6px;margin:4px 0 12px}.tr-tab[aria-selected=true]{background:rgba(var(--s-glow),.18);color:var(--s-gold2)}
.tr-layout{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:16px;align-items:start}
.tr-main>.tr-chips{margin-bottom:10px;flex-wrap:wrap}
.tr-cards{display:grid;gap:10px}
.tr-card{padding:12px 14px;border-radius:14px;background:var(--s-card,rgba(255,255,255,.03));border:1px solid var(--s-line);display:grid;gap:5px;min-width:0}
.tr-card-top{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.tr-badge{font-size:11px;font-weight:800;padding:2px 8px;border-radius:999px;background:rgba(var(--s-glow),.14);color:var(--s-gold2)}
.tr-card[data-section=ai_hot] .tr-badge{background:rgba(120,170,255,.16);color:#9cc0ff}.tr-card[data-section=ai_new] .tr-badge{background:rgba(120,220,170,.16);color:#8fe3b8}
.tr-author{font-size:12px;color:var(--s-muted);overflow-wrap:anywhere}
.tr-why,.tr-how{margin:0;font-size:13px;line-height:1.55;overflow-wrap:anywhere}.tr-how{color:var(--s-gold2)}
.tr-acts{display:flex;gap:6px;align-items:center;flex-wrap:wrap}.tr-acts .s-btn{min-height:36px;padding:6px 12px}
.tr-source{margin-left:auto;font-size:11px;color:var(--s-muted)}
.tr-memo{position:sticky;top:12px;display:grid;gap:8px}.tr-memo h3{margin:0}
.tr-memo textarea{width:100%;box-sizing:border-box;min-height:320px;resize:vertical;padding:10px 12px;border-radius:12px;border:1px solid rgba(255,255,255,.12);background:rgba(0,0,0,.25);color:var(--s-text);font:inherit;font-size:14px;line-height:1.6}
.tr-memo-note{margin:0;font-size:12px;color:var(--s-muted)}
@media(max-width:900px){.tr-layout{grid-template-columns:minmax(0,1fr)}.tr-memo{position:static}.tr-memo textarea{min-height:160px;font-size:16px}}
/* Kelaroq 진행판 (2026-09-25): release candidate, latest free checks, fix list for GPT */
.k-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:14px;align-items:start}
.k-fix-card{grid-column:1/-1}
.k-state{margin:0 0 6px;font-size:15px;font-weight:750}.k-state[data-state=ok]{color:var(--s-green)}.k-state[data-state=wait]{color:var(--s-amber)}
.k-sub{display:block;margin:2px 0;font-size:12.5px;color:var(--s-muted);line-height:1.5}
.k-list{margin:8px 0 0;padding-left:18px;font-size:13px;line-height:1.6}.k-more{list-style:none;margin-left:-18px;color:var(--s-muted)}
.k-check{display:flex;gap:12px;align-items:center;padding:10px 0;border-top:1px solid var(--s-line)}
.k-check-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.k-check-body strong{font-size:14px}
.k-result{font-size:12.5px;font-weight:700}.k-result[data-state=ok]{color:var(--s-green)}.k-result[data-state=check]{color:var(--s-amber)}.k-result[data-state=fail]{color:var(--s-red)}
.k-fix{margin:0 0 10px;padding:12px 14px;border-radius:12px;background:rgba(0,0,0,.28);border:1px solid var(--s-line);white-space:pre-wrap;word-break:break-word;font:12.5px/1.6 ui-monospace,Consolas,monospace;color:var(--s-text);max-height:320px;overflow:auto}
@media(max-width:760px){.k-grid{grid-template-columns:minmax(0,1fr)}}
/* 부업 가게 (side shop, 2026-09-25): checklist, margin calculator, draft auto-scope, write-only keys */
.t-shop{display:flex;flex-direction:column;gap:9px;padding:14px 18px}
.t-shop[hidden]{display:none}.t-shop h2{margin:0}
/* Desktop: the card sits under 결정할 일 beside 오늘 목표, so 오늘 still fits one 1440x900 screen. */
@media(min-width:761px){.t-decisions{grid-column:1;grid-row:2}.t-goals{grid-column:2;grid-row:2/span 2}.t-shop{grid-column:1;grid-row:3}.t-office{grid-row:4}}
.p-meter{width:100%;height:5px;border-radius:9px;background:rgba(255,255,255,.08);overflow:hidden}
.p-meter b{display:block;height:100%;background:linear-gradient(90deg,var(--s-green),var(--s-gold))}
.p-next{display:flex;align-items:center;gap:10px}
.p-line{margin:0;flex:1;min-width:0;color:var(--s-muted);font-size:13px;line-height:1.45}
.p-back{display:none;margin-bottom:10px}
.p-grid{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:14px;align-items:start}
.p-steps{grid-row:span 2}.p-scope-card,.p-picks{grid-column:1/-1}
.p-phase{margin:14px 0 4px;font-size:12px;font-weight:750;color:var(--s-gold2)}
.p-step{display:flex;gap:12px;align-items:flex-start;padding:10px 0;border-top:1px solid var(--s-line)}
.p-tick{flex:none;width:30px;height:30px;margin-top:1px;border-radius:9px;border:1.5px solid rgba(255,255,255,.28);background:transparent;color:var(--s-ink);font:inherit;font-weight:900;cursor:pointer}
.p-step[data-done=true] .p-tick{background:var(--s-green);border-color:var(--s-green)}
.p-step[data-done=true] .p-step-body strong{color:var(--s-muted);text-decoration:line-through}
.p-step-body{display:flex;flex-direction:column;gap:3px;min-width:0}
.p-step-body strong{font-size:14px}.p-step-body span{font-size:12.5px;color:var(--s-muted);line-height:1.5}
.p-open{width:max-content;font-size:12.5px;font-weight:700;color:var(--s-gold2);text-decoration:none}
.p-note{margin:0 0 10px;font-size:12.5px;color:var(--s-muted);line-height:1.55}
.p-calc{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.p-calc label{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--s-muted)}
.p-calc input,.p-key input{width:100%;min-width:0;min-height:42px;padding:8px 10px;border-radius:10px;border:1px solid var(--s-line);background:rgba(0,0,0,.28);color:var(--s-text);font:inherit;font-size:16px}
.p-result{margin-top:12px;padding:12px 14px;border-radius:14px;background:rgba(0,0,0,.22);display:flex;flex-direction:column;gap:4px;font-size:13px;color:var(--s-muted)}
.p-result b{font-size:18px;color:var(--s-text)}
.p-result[data-ok=true] .p-verdict{color:var(--s-green)}.p-result[data-ok=false] .p-verdict{color:var(--s-amber)}
.p-lowest{color:var(--s-gold2)}
.p-scope{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:8px 16px;margin:0;font-size:13px;line-height:1.55}
.p-scope dt{color:var(--s-muted);font-weight:650}.p-scope dd{margin:0}
.p-key{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px 8px;padding:10px 0;border-top:1px solid var(--s-line)}
.p-key-label{grid-column:1/-1;display:flex;gap:8px;align-items:baseline;flex-wrap:wrap;font-size:13px}
.p-key-label span{font-size:12px;color:var(--s-muted)}.p-key-label span.on{color:var(--s-green)}
.p-remove{grid-column:1/-1;justify-self:start;min-height:32px;padding:4px 0}
@media(max-width:760px){
  .t-shop{padding:14px}.p-back{display:inline-block}
  .t-goals,.t-office{order:1}/* phone: the shop checklist comes right after 결정할 일 while JUNO signs up */
  .p-grid{grid-template-columns:minmax(0,1fr)}.p-steps{grid-row:auto}
  .p-scope{grid-template-columns:minmax(0,1fr);gap:2px}.p-scope dt{margin-top:8px}
}
/* 오늘 화면 날씨 (2026-09-26) */
.t-weather{cursor:pointer;white-space:nowrap;font:inherit;font-size:13px;margin-top:8px;display:inline-flex;align-items:center;gap:4px}.t-weather[data-rain=true]{color:#9cc0ff}
@media(max-width:420px){.t-weather{font-size:12px;padding:6px 8px}}
/* 영상 만들기 on 오늘 (2026-09-26): the video team's two buttons where JUNO looks first */
.t-video{display:grid;gap:8px;padding:14px 18px}.vf-pair{display:grid;grid-template-columns:1fr 1fr;gap:8px}.vf-pair .vf-go{min-height:48px;font-weight:800}.vf-pair .vf-auto{border:1px solid var(--s-gold,#d9b46c);color:var(--s-gold2,#f3d9a0)}.t-video h2{display:flex;justify-content:space-between;align-items:baseline;gap:8px;margin:0}.t-video h2 small{font-size:12px;font-weight:600;color:var(--s-muted)}.t-video .vf-go{min-height:48px}.t-video .vf-next{margin:0;font-size:13px;color:var(--s-gold2);line-height:1.55;overflow-wrap:anywhere}
.t-video-pop{position:relative}.t-video-pop>summary{list-style:none;cursor:pointer;min-height:36px;padding:6px 12px;font-size:13px;white-space:nowrap;display:flex;align-items:center}.t-video-pop>summary::-webkit-details-marker{display:none}.t-video-pop-panel{position:absolute;right:0;top:calc(100% + 8px);z-index:40;width:320px;display:grid;gap:8px;padding:14px;border-radius:14px;background:#141c2b;border:1px solid var(--s-line);box-shadow:0 14px 34px rgba(0,0,0,.45)}.t-video-pop-panel .vf-next{margin:0;font-size:12.5px;color:var(--s-gold2);line-height:1.55;overflow-wrap:anywhere}.t-video-pop-panel .s-btn{min-height:40px}
@media(min-width:761px){.t-video{display:none!important}}@media(max-width:760px){.t-video-pop{display:none!important}}
/* 영상 5단계 (bundle 21, JUNO 9/28 "어디까지 된 건지"): ✓ done · gold = here · dashed = start here · red = stopped · pulsing = working */
.vf-steps{display:flex;gap:4px;list-style:none;margin:0;padding:0}.vf-steps li{flex:1 1 0;min-width:0;display:flex;align-items:center;justify-content:center;min-height:38px;padding:4px 3px;border-radius:9px;border:1px solid var(--s-line,#2c3a52);font-size:11px;font-weight:600;line-height:1.25;text-align:center;color:var(--s-muted,#8e9ab0);word-break:keep-all;overflow-wrap:anywhere}.vf-steps li[data-done]{color:#a9c8ff;border-color:#7aa7ff55;background:#7aa7ff14}.vf-steps li[aria-current]{color:#1c1405;background:var(--s-gold,#d9b46c);border-color:var(--s-gold,#d9b46c);font-weight:800}.vf-steps li[aria-current][data-state=idle]{color:var(--s-gold2,#f3d9a0);background:transparent;border:1px dashed var(--s-gold,#d9b46c)}.vf-steps li[aria-current][data-state=stuck]{color:#fff;background:#d4604b;border-color:#d4604b}.vf-steps li[aria-current][data-state=run]{animation:vf-pulse 1.8s ease-in-out infinite}@keyframes vf-pulse{50%{opacity:.55}}@media (prefers-reduced-motion:reduce){.vf-steps li[aria-current][data-state=run]{animation:none}}
.vf-road:empty{display:none}.vf-pair.single{grid-template-columns:1fr}.vf-finish{min-height:50px;font-weight:800}.vf-main .vf-finish{min-height:52px;font-size:16px}.flova-panel .vf-steps{margin:0 0 12px}
/* SNS 게시 현황: one card per video — the steps, where it is now, each platform in plain words, one main button */
.sns-receipt .vf-steps{margin:8px 0}.sns-now{margin:6px 0;font-weight:800;color:var(--s-gold2,#f3d9a0);line-height:1.5}.sns-lines{list-style:none;margin:6px 0 10px;padding:0;display:grid;gap:4px}.sns-lines li{line-height:1.55;overflow-wrap:anywhere}.sns-receipt .sns-redo{width:100%;min-height:50px;font-size:16px;font-weight:800;margin-top:4px}.sns-more{margin-top:10px;border:1px solid #354760;border-radius:12px;padding:6px 12px}.sns-more>summary{cursor:pointer;min-height:40px;display:flex;align-items:center;font-weight:700}
/* 지금 진행 중 (JUNO 9/28): approved jobs moving step by step, at the top of 오늘 (phone and PC); hidden when nothing runs */
.t-progress{display:grid;gap:10px;padding:14px 18px;margin:0 0 14px;border:1px solid rgba(var(--s-glow),.4);background:linear-gradient(180deg,rgba(var(--s-glow),.10),rgba(255,255,255,.02))}.t-progress h2{display:flex;justify-content:space-between;align-items:baseline;gap:8px;margin:0;font-size:16px}.t-progress h2 small{font-size:12px;font-weight:600;color:var(--s-muted)}.tp-row{display:grid;gap:7px;padding:10px 12px;border-radius:12px;background:rgba(255,255,255,.045)}.tp-row[role=button]{cursor:pointer}.tp-row[role=button]:hover{background:rgba(255,255,255,.07)}.tp-head{display:flex;justify-content:space-between;align-items:baseline;gap:8px;font-size:14px}.tp-head b{overflow-wrap:anywhere}.tp-time{font-size:12px;color:var(--s-muted);white-space:nowrap}.tp-now{margin:0;font-size:13px;color:var(--s-gold2,#f3d9a0);line-height:1.5;overflow-wrap:anywhere}.t-progress.empty{padding:10px 16px;gap:0;border-color:var(--s-line,#2c3a52);background:rgba(255,255,255,.02)}@media(min-width:761px){.t-progress.empty{display:none!important}}.t-progress.empty h2{font-size:14px;flex-wrap:wrap}.tp-act{justify-self:start;min-height:40px;padding:8px 16px;font-weight:800}.tp-more{margin:0;font-size:12px;color:var(--s-muted)}.tp-more-btn{justify-self:start;min-height:40px}.ch-card .vf-steps{margin:6px 0 2px}.ch-now{margin:4px 0 0;font-size:13px;font-weight:700;color:var(--s-gold2,#f3d9a0);line-height:1.5}
/* 진행 막대 (JUNO 9/28): how far each job is and about how long is left (예상); gold flows while it runs, amber = someone's turn. */
.tp-bar{height:8px;border-radius:999px;background:rgba(255,255,255,.09);overflow:hidden}
.tp-bar i{display:block;height:100%;min-width:6px;border-radius:inherit;background:linear-gradient(90deg,var(--s-gold),var(--s-gold2));transition:width .9s cubic-bezier(.2,.8,.2,1)}
.tp-bar[data-state=run] i{background:linear-gradient(90deg,var(--s-gold) 0%,#fff0c8 50%,var(--s-gold) 100%);background-size:200% 100%;animation:tp-flow 1.8s linear infinite}
.tp-bar[data-state=wait] i{background:var(--s-amber,#f5b54a)}.tp-bar[data-state=stuck] i{background:#ff8a9a}.tp-bar[data-state=done] i{background:var(--s-green,#3ddc97)}
.tp-meta{display:flex;align-items:baseline;gap:8px;margin-top:-2px;font-size:12.5px;line-height:1.4;color:var(--s-muted)}.tp-pct{flex:none;font-size:14px;color:var(--s-text)}.tp-left{overflow-wrap:anywhere}
@keyframes tp-flow{to{background-position:-200% 0}}
@media(prefers-reduced-motion:reduce){.tp-bar i{transition:none;animation:none!important}}
/* 진행판 (2026-09-27): 새 소식 · 만드는 중 · 정할 것 in 설정, and one line on 오늘 while JUNO has something to decide */
.st-news .rm-tabs{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 12px}.st-news .rm-tab{min-height:36px;padding:7px 14px}
.st-news .rm-tab[aria-selected=true]{background:rgba(var(--s-glow),.18);color:var(--s-gold2)}
.st-news .rm-steps{list-style:none;margin:0;padding:0}.st-news .rm-step{padding:12px 0;border-top:1px solid var(--s-line)}.st-news .rm-step:first-child{border-top:0}
.st-news .rm-head{display:flex;gap:8px;align-items:flex-start}.st-news .rm-head b{font-size:14px;line-height:1.5}
.st-news .rm-no{flex:none;width:24px;height:24px;border-radius:8px;display:grid;place-items:center;background:rgba(var(--s-glow),.14);color:var(--s-gold2);font-weight:800;font-size:12.5px}
.st-news .rm-chips{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0 0 32px}
.st-news .rm-chip{font-size:11.5px;font-weight:700;padding:3px 9px;border-radius:999px;background:rgba(255,255,255,.07);color:var(--s-muted)}
.st-news .rm-chip.rm-live{background:rgba(61,220,151,.14);color:var(--s-green)}.st-news .rm-chip.rm-building{background:rgba(122,167,255,.15);color:var(--s-blue)}
.st-news .rm-chip.rm-waiting_juno{background:rgba(245,181,74,.15);color:var(--s-amber)}.st-news .rm-chip.rm-waiting_deploy{background:rgba(167,139,250,.15);color:var(--video)}
.st-news .rm-step p{margin:6px 0 0 32px;font-size:13px;line-height:1.6;color:var(--s-text)}.st-news .rm-step p.rm-needs{color:var(--s-amber);font-size:12.5px}
.st-news .rm-step .t-acts{margin:8px 0 0 32px;display:flex;flex-wrap:wrap;gap:8px;align-items:center}.st-news .rm-started{font-size:12.5px;color:var(--s-green);font-weight:700}
.st-news .rm-q{padding:12px 0;border-top:1px solid var(--s-line)}.st-news .rm-q b{display:block;font-size:14px}
.st-news .rm-q p{margin:6px 0 0;font-size:13px;line-height:1.6;color:var(--s-muted)}.st-news .rm-q.done b::after{content:' ✓';color:var(--s-green)}
.st-news .rm-opts{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}.st-news .rm-opt{min-height:36px;padding:7px 12px;white-space:normal;text-align:left}
.st-news .rm-note{width:100%;box-sizing:border-box;margin-top:8px;padding:9px 11px;border-radius:10px;border:1px solid rgba(255,255,255,.1);background:rgba(0,0,0,.22);color:var(--s-text);font:inherit;font-size:13px}
.st-news .rm-answered{display:block;margin-top:6px;font-size:11.5px;color:var(--s-green)}
.t-decisions h2 .rm-head-link{margin-left:auto;white-space:nowrap;font-size:12.5px}
/* AI 채널 보드 (2026-09-27): 계획표 → AI 채널 · 달력 tabs, cards from 후보 to 게시 */
.pl-tabs{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 14px}.pl-tab{min-height:38px;padding:8px 16px}.pl-tab[aria-selected=true]{background:rgba(var(--s-glow),.18);color:var(--s-gold2)}
.ch-board{display:grid;gap:14px;max-width:880px}
.ch-intro{margin:0;font-size:13px;line-height:1.6;color:var(--s-muted)}
.ch-add{justify-self:start}
.ch-group{display:grid;gap:10px}.ch-group>h3,.ch-group>summary{margin:6px 0 0;font-size:14px;font-weight:800;color:var(--s-text)}
.ch-group[data-group=turn]>h3{color:var(--s-gold2)}.ch-group>summary{cursor:pointer;color:var(--s-muted)}
.ch-card{background:var(--s-panel);border:1px solid var(--s-line);border-radius:14px;padding:14px 16px;display:grid;gap:8px;min-width:0}
.ch-group[data-group=turn] .ch-card{border-color:rgba(var(--s-glow),.35)}
.ch-head{display:flex;gap:8px;align-items:flex-start;justify-content:space-between}.ch-head b{font-size:14.5px;line-height:1.5;overflow-wrap:anywhere}
.ch-chip{flex:none;font-size:11.5px;font-weight:700;padding:3px 9px;border-radius:999px;background:rgba(167,139,250,.15);color:var(--video)}
.ch-steps{display:flex;flex-wrap:wrap;gap:4px;margin:0;padding:0;list-style:none}
.ch-steps li{font-size:11.5px;padding:3px 8px;border-radius:999px;background:rgba(255,255,255,.05);color:var(--s-dim)}
.ch-steps li[data-done=true]{color:var(--s-green)}.ch-steps li[data-on=true]{background:rgba(var(--s-glow),.18);color:var(--s-gold2);font-weight:800}
.ch-hook{margin:0;font-size:13.5px;font-weight:700;color:var(--s-text)}
.ch-why,.ch-memo,.ch-meta{margin:0;font-size:12.5px;line-height:1.6;color:var(--s-muted);overflow-wrap:anywhere}.ch-meta a{color:var(--s-gold2)}
.ch-wait{margin:0;font-size:13px;line-height:1.6;color:var(--s-amber)}
.ch-card .t-acts{display:flex;flex-wrap:wrap;gap:8px}
.ch-script{border-top:1px solid var(--s-line);padding-top:8px}.ch-script summary{cursor:pointer;font-size:13px;font-weight:700;color:var(--s-gold2)}
.ch-scenes{margin:8px 0;padding-left:20px;display:grid;gap:8px}.ch-scenes li{font-size:13px;line-height:1.55}
.ch-say{display:block;color:var(--s-text)}.ch-show,.ch-fx{display:block;font-size:12px;color:var(--s-muted)}.ch-fx{color:var(--s-blue)}
.ch-cover{margin:6px 0 0;font-size:12.5px;color:var(--s-text)}
.ch-film{border-radius:12px;overflow:hidden;background:#000;min-height:40px;width:100%;max-width:360px;justify-self:center}.ch-film .ch-wait{padding:10px 12px}.ch-video{display:block;width:100%;max-height:70vh;background:#000}
.ch-subhead{display:flex;align-items:center;justify-content:space-between;gap:8px}.ch-copy{min-height:30px;padding:4px 10px;font-size:12px}
.ch-caption,.ch-pack{margin-top:8px}.ch-caption b,.ch-pack b{font-size:12.5px}.ch-caption p,.ch-pack p{margin:4px 0 0;white-space:pre-wrap;font-size:12.5px;line-height:1.6;color:var(--s-muted);overflow-wrap:anywhere}
.ch-form{display:grid;gap:8px}.ch-form input,.ch-form textarea{width:100%;box-sizing:border-box;padding:9px 11px;border-radius:10px;border:1px solid rgba(255,255,255,.1);background:rgba(0,0,0,.22);color:var(--s-text);font:inherit;font-size:13px}
/* 자동으로 올리기 (주노 AI 오피스 채널, 9/29) */
.ch-auto .ch-check{display:flex;align-items:center;gap:8px;min-height:40px;font-size:14px}.ch-auto .ch-check input{width:20px;height:20px;flex:none}
.ch-auto .ch-check:has(input:disabled){color:var(--s-muted)}.ch-cover-look{width:90px;aspect-ratio:9/16;object-fit:cover;border-radius:8px;border:1px solid rgba(255,255,255,.12)}
.ch-post b{color:var(--s-gold2,#f5d99a)}.ch-post a{color:var(--s-gold2,#f5d99a)}
@media(max-width:760px){.ch-card{padding:12px}.ch-head{flex-wrap:wrap}}
/* 주니 비서 (secretary.js): a floating conversation window; full screen on phones. */
.sc-panel{position:fixed;right:18px;bottom:18px;z-index:40;width:min(420px,calc(100vw - 36px));height:min(640px,calc(100dvh - 36px));display:flex;flex-direction:column;border-radius:18px;border:1px solid var(--s-line,rgba(255,255,255,.08));background:var(--s-panel,#111827);color:var(--s-text,#eef1f7);box-shadow:0 18px 50px #0009;overflow:hidden}
.sc-panel[hidden]{display:none}
@media(min-width:1180px){.sc-panel{right:calc(clamp(360px,28vw,460px) + 20px)}}
.sc-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 14px;border-bottom:1px solid var(--s-line,rgba(255,255,255,.08))}
.sc-title{display:grid;gap:2px;min-width:0}
.sc-title b{font-size:15px}
.sc-state{color:var(--s-muted,#8d97ab);font-size:11px}
.sc-head-acts{display:flex;gap:6px;flex:0 0 auto}
.sc-head .s-btn{min-height:36px;padding:6px 10px;font-size:12px}
.sc-list{flex:1 1 auto;overflow-y:auto;padding:14px;display:flex;flex-direction:column;gap:10px;overscroll-behavior:contain}
.sc-msg{display:flex}
.sc-me{justify-content:flex-end}
.sc-bubble{max-width:88%;padding:10px 12px;border-radius:14px;font-size:14px;line-height:1.6;white-space:pre-wrap;overflow-wrap:anywhere}
.sc-me .sc-bubble{background:linear-gradient(180deg,var(--s-gold2,#f5d99a),var(--s-gold,#e2bd72));color:var(--s-ink,#1a1407);border-bottom-right-radius:4px}
.sc-juni .sc-bubble{background:rgba(255,255,255,.06);border:1px solid var(--s-line,rgba(255,255,255,.08));border-bottom-left-radius:4px}
.sc-bubble p{margin:0}
.sc-acts{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px;white-space:normal}
.sc-acts .s-btn{min-height:36px;padding:6px 10px;font-size:12px}
.sc-wait .sc-bubble{color:var(--s-muted,#8d97ab);animation:sc-pulse 1.4s ease-in-out infinite}
@keyframes sc-pulse{50%{opacity:.45}}
@media(prefers-reduced-motion:reduce){.sc-wait .sc-bubble{animation:none}}
.sc-hello{display:grid;gap:8px;padding:6px 2px;color:var(--s-muted,#8d97ab);font-size:13px;line-height:1.6}
.sc-hello b{color:var(--s-text,#eef1f7);font-size:15px}
.sc-hello p{margin:0}
.sc-hints{display:flex;flex-wrap:wrap;gap:6px}
.sc-hint{min-height:36px;padding:6px 12px;font-size:13px;border-radius:999px}
.sc-form{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:8px;padding:10px 12px;border-top:1px solid var(--s-line,rgba(255,255,255,.08))}
.sc-form textarea{width:100%;min-height:46px;max-height:120px;padding:10px 12px;border-radius:12px;border:1px solid rgba(255,255,255,.12);background:rgba(0,0,0,.25);color:var(--s-text,#eef1f7);font:inherit;font-size:15px;line-height:1.5;resize:none;box-sizing:border-box}
.sc-mic,.sc-send{min-width:46px;min-height:46px;padding:0 12px;font-size:17px}
.sc-mic.on{outline:2px solid var(--s-gold,#e2bd72);background:rgba(233,196,106,.15)}
.sc-mic svg,.sc-say svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;display:block}
.sc-say{min-width:36px;display:inline-grid;place-items:center}
.sc-send:disabled{opacity:.5}
.sc-foot{padding:0 12px 10px;display:grid;gap:6px}
.sc-note{margin:0;min-height:16px;color:var(--s-gold,#e2bd72);font-size:12px;line-height:1.5}
.sc-limits{display:flex;flex-wrap:wrap;gap:6px;align-items:center;color:var(--s-muted,#8d97ab);font-size:11px}
.sc-limit{min-height:30px;padding:4px 10px;font-size:11px}
@media(max-width:760px){.sc-limit{min-height:40px;font-size:12px}.sc-close{min-width:40px;min-height:40px}.ch-copy{min-height:40px}
  .ch-src{display:inline-block;padding:11px 4px;margin:-11px 0}}   /* phone tap size (QA #21) */
.sc-limit[aria-pressed=true]{background:linear-gradient(180deg,var(--s-gold2,#f5d99a),var(--s-gold,#e2bd72));color:var(--s-ink,#1a1407)}
.sc-privacy{margin:0;color:var(--s-muted,#8d97ab);font-size:10px;line-height:1.5}
@media(max-width:760px){
  .sc-panel{inset:0;width:auto;height:auto;border-radius:0;border:0}
  body.sc-open .m-dock{display:none}
}
/* 오피스 관리실 · 점검 (2026-09-27): one pill on 오늘, the report dialog, 소피's 🚨 on the map, her card section. */
.t-health{cursor:pointer;font:inherit;font-size:12.5px;font-weight:700;color:var(--s-muted)}.t-health:hover{background:rgba(255,255,255,.08)}
.t-health[data-level=ok]{color:#9fe3c2}.t-status .t-health~.t-conn{display:none}.t-hello .t-health{display:inline-flex;margin:8px 0 0 6px;vertical-align:top}
.t-health[data-level=warn]{border-color:rgba(245,181,74,.45);color:#f7cf86;background:rgba(245,181,74,.08)}
.t-health[data-level=problem]{border-color:rgba(255,107,129,.55);color:#ffc2cc;background:rgba(255,107,129,.12)}
.oh-desk{box-sizing:border-box;width:min(720px,calc(100vw - 24px));max-height:calc(100dvh - 24px);overflow:auto;padding:22px 24px;border:1px solid #46526a;border-radius:20px;background:#101827;color:#eef1f7;overscroll-behavior:contain;word-break:keep-all;overflow-wrap:anywhere}
.oh-desk::backdrop{background:#030610b8;backdrop-filter:blur(6px)}
.oh-top{display:flex;align-items:center;justify-content:space-between;gap:12px}.oh-top h2{margin:0;font-size:20px}
.oh-desk>.hint{color:#b9c5d6;line-height:1.6;margin:8px 0 12px}.oh-now{margin-bottom:6px}
.oh-meta{color:#8d97ab;font-size:12.5px;line-height:1.6;margin:6px 0 10px}
.oh-clear{margin:12px 0;padding:14px 16px;border-radius:14px;background:rgba(61,220,151,.1);color:#bff3da;font-weight:700}
.oh-group{margin:16px 0 8px;font-size:15px}
.oh-list{list-style:none;margin:0;padding:0;display:grid;gap:10px}
.oh-item{padding:13px 15px;border-radius:14px;background:#162133;border:1px solid #2c3a52;border-left:4px solid var(--oh,#7aa7ff)}
.oh-item[data-level=problem]{--oh:#ff6b81}.oh-item[data-level=warn]{--oh:#f5b54a}
.oh-head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:6px 10px}.oh-head b{font-size:14.5px;line-height:1.5}
.oh-owner{font-size:11.5px;font-weight:750;padding:3px 9px;border-radius:999px;background:rgba(255,255,255,.07);color:#cdd6e4;white-space:nowrap}
.oh-detail{margin:6px 0 0;color:#c3cedd;font-size:13px;line-height:1.6}
.oh-fix{margin:6px 0 0;color:#e7c987;font-size:12.5px;line-height:1.6}
.oh-note{margin:6px 0 0;color:#9fe3c2;font-size:12.5px;line-height:1.6}
.oh-when{display:block;margin-top:6px;color:#7d879b;font-size:11.5px}
.oh-fixed{margin-top:14px}.oh-fixed summary{cursor:pointer;color:#b9c5d6;font-size:13px;min-height:36px;display:flex;align-items:center}.oh-fixed .oh-item{opacity:.8}
.oh-card h3{margin:0 0 6px}.oh-card-line{margin:0 0 6px;font-weight:700}.oh-card-item{margin:4px 0;font-size:13px;color:#ffc2cc;line-height:1.5}.oh-card .s-btn{margin-top:6px}
.agent[data-health=problem]::after{content:"🚨";position:absolute;top:-8px;right:12px;font-size:18px;line-height:1;filter:drop-shadow(0 2px 3px #0008);animation:oh-blink 1.6s ease-in-out infinite;pointer-events:none;z-index:3}
@keyframes oh-blink{50%{opacity:.35}}
.motion-paused .agent[data-health=problem]::after{animation:none}
@media(prefers-reduced-motion:reduce){.agent[data-health=problem]::after{animation:none}}
/* 설정 · SNS 연결 (2026-09-27): the 오늘 video note points here; the buttons open the same SNS 계정 연결 window. */
.st-sns-sub{margin:12px 0 4px;font-size:14px}.st-sns-sub small{color:var(--s-muted);font-weight:600}
.st-sns-how{margin:8px 0}.st-sns-how summary{cursor:pointer;font-weight:700;padding:8px 0}.st-sns-how ol{margin:6px 0 0 18px;padding:0;display:grid;gap:6px;font-size:13px;line-height:1.5}
.st-sns .st-sns-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 0;border-top:1px solid var(--s-line)}.st-sns .st-sns-row:first-of-type{border-top:0}
.st-sns .st-sns-row b{font-size:14px}.st-sns .st-sns-row span{display:block;margin-top:3px;font-size:12.5px;line-height:1.5;color:var(--s-muted)}.st-sns .st-sns-row .s-btn{flex:none}.st-sns .st-sns-row[data-on=true] span{color:#9fe3c2}
.st-sns .hint{color:var(--s-muted);font-size:12.5px;line-height:1.6;margin:8px 0 0}
@media(max-width:760px){.oh-desk{width:calc(100vw - 12px);max-height:calc(100dvh - 12px);padding:16px;border-radius:16px}.t-health{padding:7px 10px;font-size:12px}}

/* Selected Twin Ribbon 02 brand, 2026-09-28. */
.shell-logo{background:#04144b;box-shadow:none;overflow:hidden}
.shell-logo img{display:block;width:100%;height:100%;object-fit:contain}
/* 업무 세션 보고서 삭제 (JUNO 9/28) */
.t-report-row{display:flex;align-items:stretch;gap:8px}.t-report-row .t-report{flex:1 1 auto;min-width:0}
.t-report-del{flex:none;min-height:44px;padding:0 14px;font-size:13px}.t-report-inside{display:flex;justify-content:flex-end;margin-top:12px}
.t-report-restore{margin-top:6px;font-size:13px}
/* 점검: a card per finding with its fix and 지우기 (JUNO 9/28) */
.oh-chip{flex:none;font-size:11.5px;font-weight:800;padding:2px 8px;border-radius:999px;background:rgba(245,181,74,.18);color:var(--s-amber,#f5b54a)}
.oh-item[data-level=problem] .oh-chip{background:rgba(255,107,129,.18);color:#ff8a9a}
.oh-desk .oh-head{display:flex;align-items:baseline;justify-content:flex-start;gap:8px}.oh-desk .oh-head b{flex:1 1 auto;min-width:0}
.oh-acts{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}.oh-acts .s-btn{min-height:40px;padding:6px 14px;font-size:13px}
.oh-gone{margin-top:10px}
/* bundle 28 · 디자인/트렌드/설정 (JUNO 9/28: cards and lines that stayed with no way to clear them) */
.dd-job{position:relative}.dd-job-head{padding-right:40px}
.dd-x,.dt-ai-x{position:absolute;top:2px;right:2px;display:grid;place-items:center;width:40px;height:40px;padding:0;border:0;border-radius:999px;background:transparent;color:var(--s-muted,#8d97ab);font:inherit;font-size:22px;line-height:1;cursor:pointer}
.dd-x:hover,.dd-x:focus-visible{background:rgba(255,255,255,.08);color:var(--s-text,#eef1f7)}
.dd-x:disabled,.dt-ai-x:disabled{opacity:.5;cursor:default}
.dd-gone{align-self:center;font-size:12px;color:var(--s-muted,#8d97ab)}
.dd-restore{justify-self:start;min-height:36px;font-size:13px}
.dt-ai-tile{position:relative}
.dt-ai-x{top:8px;right:8px;width:36px;height:36px;background:rgba(0,0,0,.6);color:#fff;font-size:19px}
.dt-ai-x:hover,.dt-ai-x:focus-visible{background:rgba(0,0,0,.8)}
.tr-ask{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.tr-ask-label{font-size:12.5px;font-weight:700;color:var(--s-muted)}
.tr-asked{font-size:13px;font-weight:700;color:var(--s-green);overflow-wrap:anywhere}.tr-asked[data-slow=true]{color:var(--s-amber)}
@media(max-width:760px){.tr-ask{flex:1 1 100%}.tr-ask .tr-scope{flex:1 1 auto;min-height:44px}.tr-ask .tr-ask-label{flex:1 1 100%}
  .tr-ask .tr-ask-change,.tr-ask .tr-ask-cancel,.tr-ask .tr-ask-keep{min-height:40px}}
.k-fix-acts{display:flex;flex-wrap:wrap;gap:8px}
.k-sent{margin:0 0 10px;font-size:13px;line-height:1.6;color:var(--s-muted)}
.k-pc-wait{color:var(--s-amber)}
.st-news .wn-read{margin:4px 0 0;font-size:13px;line-height:1.6;color:var(--s-muted)}
.st-news .wn-old{opacity:.8}
.st-news .rm-fold{margin:6px 0;border-top:1px solid var(--s-line)}
.st-news .rm-fold>summary{cursor:pointer;min-height:44px;display:flex;align-items:center;gap:6px;font-size:13px;font-weight:700;color:var(--s-muted)}
.st-news .rm-fold>summary::before{content:"▸";font-size:12px}.st-news .rm-fold[open]>summary::before{content:"▾"}
.st-news .rm-fold[open]>summary{color:var(--s-text)}
.t-weather[data-old=true]{opacity:.75}
/* bundle 28 · video/SNS */
/* 각각 해결 (JUNO 9/28 "의미 없이 떠 있는 창"): the video card's small settle buttons (inside the pair row), 빼기 · 숨기기 on
   지금 진행 중 rows, 목록에서 지우기 · 지난 기록 in SNS 게시 현황, 지난 게시 on the AI 채널 board. */
.vf-pair>.vf-extra{grid-column:1/-1;display:flex;flex-wrap:wrap;gap:8px}
.vf-extra .vf-mini{flex:1 1 0;min-width:0;min-height:40px;padding:8px 12px;font-size:13px;font-weight:700}
.vf-extra .vf-mini.s-quiet{border:1px solid var(--s-line,#2c3a52)}
.t-video-pop-panel .vf-extra .vf-mini{min-height:36px;font-size:12.5px}
.tp-side{display:inline-flex;align-items:center;gap:6px;flex:none}.tp-head:has(.tp-x){align-items:center}
.tp-x{min-height:32px;padding:4px 10px;font-size:12px;border:1px solid var(--s-line,#2c3a52)}
.tp-acts{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.tp-acts .tp-x{min-height:40px;padding:8px 14px}
@media(max-width:760px){.tp-x{min-height:36px}}
.sns-foot{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:6px;margin-top:10px}.sns-foot .hint{margin:0 auto 0 0;font-size:12.5px}
.sns-receipt .sns-settle{width:calc(100% - 8px);min-height:46px;font-weight:800}
.sns-old{margin:14px 0 6px;border:1px solid #354760;border-radius:14px;padding:4px 12px}
.sns-old>summary{cursor:pointer;min-height:44px;display:flex;align-items:center;font-weight:800;color:#b9c5d6}
.sns-restore{margin:10px 8px 6px 0}.sns-final-back{display:block}
.ch-old>summary{cursor:pointer;min-height:40px;display:flex;align-items:center;font-size:13px;font-weight:800;color:var(--s-muted)}
.ch-old>.ch-card{margin-top:10px}
/* bundle 28 · 오늘/보고서 (JUNO 9/28: "의미 없이 떠 있는 창", "삭제 버튼이 없네"): 지우기 · 다시 보기 · 나중에 on the cards that stayed */
@media(min-width:761px){.t-decisions{grid-row:2/span 2}.t-pods{grid-template-columns:none;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr)}}
.t-held{font-weight:600;color:var(--s-muted)}.t-office h2{flex-wrap:wrap;row-gap:2px}
.t-later,.t-gone{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;margin:6px 0 0;font-size:12.5px}
.t-later .s-link,.t-gone .s-link{min-height:32px;display:inline-flex;align-items:center}
.s-del{min-height:40px;padding:6px 12px;font-size:12.5px}
.s-x{display:inline-flex;align-items:center;min-height:30px;margin-left:8px;padding:0 6px;border:0;background:none;color:var(--s-muted,#8d97ab);font:inherit;font-size:12px;font-weight:700;text-decoration:underline;cursor:pointer}
.s-x:hover{color:#f4b8ba}
.legacy-fold{margin-top:8px}
.hidden-approval-note{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px}.hidden-approval-note[hidden]{display:none}
.hidden-approval-note .han-open{min-height:36px}
.ops-gone{margin:8px 0}
@media(max-width:760px){.s-x{min-height:36px}.t-later .s-link,.t-gone .s-link{min-height:40px}}
/* 오늘 AI 영상 카드 (9/28): 영상 만들기 = [테요·베야 | AI 채널] tabs on the phone card; the PC 🎬 panel shows both side by side,
   hung under the whole header row (not under the small 🎬 button) so two columns fit at any PC width; ch-card[data-focus] = the
   board card 오늘's button opened, for a moment. */
.vf-head{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.vf-head h2{margin:0}
.vf-tabs{display:flex;gap:4px;margin-left:auto;padding:4px;border-radius:12px;background:rgba(0,0,0,.25)}
.vf-tab{display:inline-flex;align-items:center;gap:6px;min-height:40px;padding:6px 14px;border:0;border-radius:9px;background:transparent;color:var(--s-muted);font:inherit;font-size:13px;font-weight:750;white-space:nowrap;cursor:pointer}
.vf-tab:hover{color:var(--s-text)}.vf-tab[aria-selected=true]{background:rgba(var(--s-glow),.18);color:var(--s-gold2)}
.vf-tab:focus-visible{outline:2px solid var(--s-gold2);outline-offset:1px}
.vf-count{min-width:20px;height:20px;padding:0 6px;border-radius:10px;background:rgba(255,107,129,.2);color:#ffb3bf;font-size:11.5px;font-weight:800;line-height:20px;text-align:center}
.vf-count[hidden]{display:none}
.vf-pane{display:grid;gap:8px;min-width:0}.vf-pane[hidden]{display:none}
.ai-sub{margin:0;font-size:12px;line-height:1.5;color:var(--s-muted)}
.ai-hint{margin:0;font-size:12.5px;line-height:1.55;color:var(--s-muted);overflow-wrap:anywhere}
.ai-go{width:100%;min-height:48px;font-weight:800}.ai-go:not(.s-primary){border:1px solid var(--s-line)}
.ai-hint[hidden],.ai-go[hidden],.ai-more[hidden]{display:none}
.ai-foot{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:2px 12px;font-size:12.5px;color:var(--s-muted)}
.ai-more{margin-right:auto}.ai-board{min-height:36px;display:inline-flex;align-items:center}
.t-top{position:relative}.t-video-pop{position:static}
.t-video-pop-panel{width:min(660px,100%);grid-template-columns:repeat(2,minmax(0,1fr));gap:0;padding:14px 0}
.vf-col{display:grid;gap:8px;align-content:start;min-width:0;padding:0 16px}.vf-col+.vf-col{border-left:1px solid var(--s-line)}
.vf-col-head{font-size:13.5px}.t-video-pop-panel .ai-go{min-height:44px}
.ch-card[data-focus]{outline:2px solid var(--s-gold);outline-offset:2px}
/* 할 일 보드 (9/28) */
/* The 할 일 view (was 가게, shop.js): the add line on top, 지금 진행 → 할 일, then 완료 · 휴지통 · 부업 가게 (보류 중) folded. */
.td-head h1{overflow-wrap:anywhere}
.td-add{display:flex;gap:8px;max-width:880px;margin:0 0 16px}
.td-in{box-sizing:border-box;width:100%;min-width:0;min-height:44px;padding:10px 12px;border-radius:12px;border:1px solid rgba(255,255,255,.12);background:rgba(0,0,0,.25);color:var(--s-text);font:inherit;font-size:16px}
.td-in:focus{outline:2px solid rgba(var(--s-glow),.55);outline-offset:1px}
.td-add .td-add-in{flex:1 1 auto}
.td-add-go{flex:none;min-height:44px;padding:10px 16px;font-size:14px;white-space:nowrap}
.td-board{display:grid;gap:14px;max-width:880px}
.td-alert{margin:0;padding:10px 14px;border-radius:12px;border:1px solid rgba(255,107,129,.4);background:rgba(255,107,129,.12);color:#ffc2cc;font-size:13.5px;font-weight:750;line-height:1.5}
.td-group h2{margin:0 0 8px;display:flex;align-items:center;gap:8px;font-size:15px;font-weight:800}
.td-count{min-width:22px;height:22px;padding:0 7px;border-radius:11px;display:inline-grid;place-items:center;background:rgba(255,255,255,.08);color:var(--s-muted);font-size:12px;font-weight:800}
.td-group[data-group=doing] .td-count{background:rgba(var(--s-glow),.2);color:var(--s-gold2)}
.td-list{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.td-item{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px 14px;padding:12px 14px;border-radius:14px;border:1px solid var(--s-line);border-left:3px solid rgba(255,255,255,.14);background:linear-gradient(180deg,var(--s-panel2),var(--s-panel))}
.td-item[data-status=doing]{border-left-color:var(--s-gold);background:linear-gradient(180deg,rgba(var(--s-glow),.11),var(--s-panel))}
.td-item[data-overdue=true]{border-color:rgba(255,107,129,.45);border-left-color:var(--s-red)}
.td-item[data-status=done],.td-item[data-status=trash]{border-left-color:transparent;background:rgba(255,255,255,.025)}
.td-item[data-status=done] .td-title{color:var(--s-muted);text-decoration:line-through}.td-item[data-status=trash] .td-title{color:var(--s-muted)}
.td-item.td-busy{opacity:.5;pointer-events:none}
.td-item.td-editing{grid-template-columns:minmax(0,1fr)}
.td-body{display:flex;flex-direction:column;gap:4px;min-width:0}
.td-title{font-size:14.5px;font-weight:750;line-height:1.45;overflow-wrap:anywhere}
.td-note{margin:0;font-size:13px;line-height:1.55;color:var(--s-muted);white-space:pre-line;overflow-wrap:anywhere}
.td-meta{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;font-size:12px;color:var(--s-muted)}
.td-chip{padding:2px 9px;border-radius:999px;background:rgba(255,255,255,.07);color:var(--s-muted);font-size:11.5px;font-weight:800}
.td-chip.today{background:rgba(245,181,74,.16);color:var(--s-amber)}
.td-chip.late{background:rgba(255,107,129,.2);color:#ff8a9a}
.td-started{color:var(--s-gold2);font-weight:700}
.td-acts{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:6px}
.td-acts .s-btn{min-height:40px;padding:8px 13px;font-size:13px;white-space:nowrap}
.td-acts .td-done{background:rgba(61,220,151,.15);color:#a6f2cd}.td-acts .td-done:hover{background:rgba(61,220,151,.25)}
.td-acts .td-start{background:rgba(var(--s-glow),.15);color:var(--s-gold2)}.td-acts .td-start:hover{background:rgba(var(--s-glow),.25)}
.td-acts .td-del{border:1px solid var(--s-line)}
.td-empty{margin:0;padding:10px 14px;border-radius:12px;border:1px dashed rgba(255,255,255,.12);color:var(--s-muted);font-size:13px;line-height:1.55}
.td-fold{border-top:1px solid var(--s-line)}
.td-fold>summary{cursor:pointer;list-style:none;min-height:44px;display:flex;align-items:center;gap:6px;font-size:13.5px;font-weight:800;color:var(--s-muted)}
.td-fold>summary::-webkit-details-marker{display:none}
.td-fold>summary::before{content:"▸";font-size:12px}.td-fold[open]>summary::before{content:"▾"}.td-fold[open]>summary{color:var(--s-text)}
.td-fold>.td-list{margin:2px 0 10px}
.td-hint{margin:0 0 8px;font-size:12.5px;line-height:1.5;color:var(--s-muted)}
.td-shop{margin-top:26px}.td-shop-body{padding:2px 0 8px}.td-shop-body .td-shop-note{color:var(--s-amber)}
.td-edit{display:grid;gap:8px;min-width:0}
.td-edit textarea.td-in{min-height:76px;resize:vertical;line-height:1.5}
.td-due-row{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.td-due-label{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:700;color:var(--s-muted)}
.td-in.td-date{width:auto;color-scheme:dark}
.td-edit .td-acts{justify-content:flex-start}
.td-undo{position:fixed;left:50%;bottom:24px;z-index:31;transform:translateX(-50%);display:flex;align-items:center;gap:12px;width:max-content;max-width:min(560px,calc(100vw - 32px));padding:8px 8px 8px 16px;border-radius:14px;background:#f4f1ea;color:#141a2c;box-shadow:0 20px 40px -12px rgba(0,0,0,.8);font-size:13.5px;font-weight:700}
.td-undo[hidden]{display:none}
.td-undo-text{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.td-undo .td-undo-go{flex:none;min-height:40px;background:#141a2c;color:var(--s-gold2)}.td-undo .td-undo-go:hover{background:#243050}
/* 주니's dock sits over the bottom-right of the column (about 170px tall on a PC): room to scroll the last buttons above it */
@media(min-width:761px){#view-shop{padding-bottom:170px}}
@media(max-width:760px){
  .td-head h1{font-size:21px}
  .td-item{grid-template-columns:minmax(0,1fr);padding:12px}
  .td-acts{justify-content:flex-start}.td-acts .s-btn{flex:1 1 auto;min-height:42px;padding:8px 10px}
  .td-undo{left:12px;right:12px;bottom:calc(84px + env(safe-area-inset-bottom));transform:none;width:auto;max-width:none}
}
@media(max-width:480px){.td-add{flex-direction:column}.td-add-go{width:100%}}
/* 직원 꾸미기 (9/28) · staff.js: 설정's "직원 이름·모습 바꾸기" card and its full-screen editor (list → form with a live
   preview). A full-screen sheet on a phone; the list and the form side by side from 900px. New classes start with sf- / st-staff. */
.st-staff-faces{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 10px}
.st-staff .st-line{margin-bottom:12px}
.st-staff-open{min-height:44px}
html.sf-lock,html.sf-lock body{overflow:hidden}
.sf-sheet{--sf-bg:var(--s-bg,#0a0e18);--sf-panel:var(--s-panel,#111827);--sf-panel2:var(--s-panel2,#161f33);--sf-line:var(--s-line,rgba(255,255,255,.07));
  --sf-text:var(--s-text,#eef1f7);--sf-muted:var(--s-muted,#8d97ab);--sf-gold:var(--s-gold,#e2bd72);--sf-gold2:var(--s-gold2,#f5d99a);--sf-red:var(--s-red,#ff6b81);
  box-sizing:border-box;position:fixed;inset:0;width:100%;height:100%;max-width:100%;max-height:100%;margin:0;padding:0;border:0;border-radius:0;
  background:var(--sf-bg);color:var(--sf-text);overflow:hidden;font-size:14px;line-height:1.5;word-break:keep-all;overflow-wrap:anywhere}
.sf-sheet[open]{display:flex;flex-direction:column}
.sf-sheet::backdrop{background:rgba(3,6,16,.74)}
.sf-sheet *{box-sizing:border-box}
.sf-sheet .shadow{fill:#000;opacity:.35}.sf-sheet .beacon,.sf-sheet .station{display:none}
.sf-head{flex:none;display:flex;align-items:center;gap:10px;padding:12px 12px 12px 16px;padding-top:max(12px,env(safe-area-inset-top));
  border-bottom:1px solid var(--sf-line);background:var(--sf-panel)}
.sf-titles{flex:1 1 auto;min-width:0}
.sf-head h2{margin:0;font-size:19px;font-weight:800;letter-spacing:-.02em}
.sf-sub{margin:2px 0 0;color:var(--sf-muted);font-size:12.5px}
.sf-x,.sf-back{flex:none;min-height:44px;border:0;border-radius:12px;background:rgba(255,255,255,.07);color:var(--sf-text);font:inherit;cursor:pointer}
.sf-x{display:grid;place-items:center;width:44px;padding:0;font-size:26px;line-height:1}
.sf-back{padding:0 12px;font-size:14px;font-weight:700}
.sf-x:hover,.sf-back:hover{background:rgba(255,255,255,.13)}
.sf-sheet[data-view=list] .sf-back{display:none}
.sf-notice,.sf-status{flex:none;margin:0;padding:8px 16px;font-size:13px;line-height:1.5}
.sf-notice{background:rgba(245,181,74,.12);color:#f7cf86}
.sf-status{background:rgba(255,255,255,.05);color:var(--sf-muted)}
.sf-status[data-tone=ok]{background:rgba(61,220,151,.1);color:#bff3da}
.sf-status[data-tone=bad]{background:rgba(255,107,129,.12);color:#ffc2cc}
.sf-notice[hidden],.sf-status[hidden]{display:none}
.sf-body{flex:1 1 auto;min-height:0;display:grid;grid-template-columns:minmax(0,1fr)}
.sf-list,.sf-form{min-width:0;min-height:0;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;padding:16px 16px calc(24px + env(safe-area-inset-bottom))}
/* 목록 */
.sf-list-title{margin:0 0 10px;font-size:15px;font-weight:800}
.sf-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:8px}
.sf-person{position:relative;display:flex;flex-direction:column;align-items:center;gap:4px;min-width:0;min-height:44px;padding:10px 6px;
  border:1px solid var(--sf-line);border-radius:14px;background:var(--sf-panel2);color:var(--sf-text);font:inherit;text-align:center;cursor:pointer}
.sf-person:hover{border-color:rgba(245,217,154,.4)}
.sf-person[aria-current=true]{border-color:var(--sf-gold2);box-shadow:0 0 0 1px var(--sf-gold2)}
.sf-face{width:56px;height:56px;flex:none;border-radius:50%;background:#1d2740;overflow:hidden;display:grid;place-items:center}
.sf-face svg{width:100%;height:100%;display:block}
.sf-who{display:flex;flex-direction:column;min-width:0;max-width:100%}
.sf-who b{font-size:14px;font-weight:800;line-height:1.3}
.sf-who small{font-size:11px;line-height:1.35;color:var(--sf-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sf-badge{position:absolute;top:6px;right:6px;padding:1px 6px;border-radius:999px;background:rgba(var(--s-glow),.18);color:var(--sf-gold2);font-size:10.5px;font-weight:800}
.sf-more{margin:14px 0 0;border-top:1px solid var(--sf-line)}
.sf-more>summary{cursor:pointer;min-height:44px;display:flex;align-items:center;font-size:13px;font-weight:700;color:var(--sf-muted)}
.sf-more[open]>summary{color:var(--sf-text)}
.sf-foot{display:flex;flex-direction:column;align-items:flex-start;gap:8px;margin-top:16px}
.sf-foot-line{margin:0;color:var(--sf-muted);font-size:12.5px}
.sf-reset-all{min-height:44px}
/* 꾸미기 */
.sf-empty{margin:0;color:var(--sf-muted)}
.sf-form-title{margin:0 0 12px;font-size:17px;font-weight:800;outline:none}
.sf-preview{display:flex;align-items:center;gap:14px;padding:12px;border-radius:16px;border:1px solid var(--sf-line);background:linear-gradient(180deg,var(--sf-panel2),var(--sf-panel))}
.sf-stage{flex:none;width:96px;height:156px;background:radial-gradient(55% 22% at 50% 88%,rgba(var(--s-glow),.22),transparent 72%)}
.sf-stage svg{width:100%;height:100%;display:block;overflow:visible}
.sf-preview-text{display:flex;flex-direction:column;align-items:flex-start;gap:4px;min-width:0}
.sf-tag{max-width:100%;padding:3px 12px;border-radius:999px;background:#10192dcc;border:1px solid #4b5e784d;font-size:15px;font-weight:800}
.sf-preview-sub{color:var(--sf-muted);font-size:12.5px}
.sf-intro{margin:2px 0 0;font-size:13px;line-height:1.5}
.sf-fields{display:flex;flex-direction:column;gap:16px;margin-top:16px}
.sf-field,.sf-group{display:flex;flex-direction:column;gap:6px;min-width:0}
.sf-label{display:flex;align-items:baseline;gap:8px;margin:0;font-size:13.5px}
.sf-label b{font-weight:800}.sf-label small{margin-left:auto;color:var(--sf-muted);font-size:12px}
.sf-input{width:100%;min-height:44px;padding:10px 12px;border-radius:12px;border:1px solid rgba(255,255,255,.14);background:rgba(0,0,0,.25);color:var(--sf-text);font:inherit;font-size:16px}
.sf-input:focus{outline:2px solid var(--sf-gold2);outline-offset:1px}
.sf-input[aria-invalid=true]{border-color:var(--sf-red)}
.sf-help{color:var(--sf-muted);font-size:12px;line-height:1.45}
.sf-err{color:#ffb3bf;font-size:12.5px;font-weight:700}
.sf-err[hidden]{display:none}
.sf-swatches,.sf-chips{display:flex;flex-wrap:wrap;gap:6px}
.sf-swatch{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:7px;min-width:44px;min-height:44px;padding:6px 4px;border:0;border-radius:12px;
  background:transparent;color:var(--sf-muted);font:inherit;font-size:10.5px;line-height:1.1;cursor:pointer}
.sf-swatch:hover{background:rgba(255,255,255,.06)}
.sf-swatch i{display:block;width:30px;height:30px;border-radius:50%;box-shadow:inset 0 0 0 1px rgba(255,255,255,.28)}
.sf-swatch[aria-pressed=true] i{box-shadow:0 0 0 3px var(--sf-bg),0 0 0 5px var(--sf-gold2)}
.sf-swatch[aria-pressed=true]{color:var(--sf-gold2)}
.sf-chip{min-height:40px;padding:8px 12px;border-radius:999px;border:1px solid var(--sf-line);background:rgba(255,255,255,.06);color:var(--sf-text);
  font:inherit;font-size:13px;font-weight:700;cursor:pointer}
.sf-chip[aria-pressed=true]{background:linear-gradient(180deg,var(--sf-gold2),var(--sf-gold));color:var(--s-ink,#1a1407);border-color:transparent}
.sf-acts{position:sticky;bottom:0;z-index:1;display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:18px;padding:12px 0 4px;background:var(--sf-bg);box-shadow:0 -12px 16px -12px rgba(0,0,0,.6)}
.sf-acts .s-btn{flex:1 1 130px;min-height:48px;font-size:14px}
/* Phones: the preview scrolls away while picking colours, so the bar carries a live face of the draft. */
.sf-mini{flex:none;width:48px;height:48px;border-radius:50%;background:#1d2740;overflow:hidden;box-shadow:0 0 0 2px rgba(245,217,154,.45)}
.sf-mini svg{width:100%;height:100%;display:block}
.sf-sheet .s-btn[disabled]{opacity:.5;cursor:default}
.sf-sheet :focus-visible{outline:2px solid var(--sf-gold2);outline-offset:2px}
@media(max-width:899px){.sf-sheet[data-view=list] .sf-form,.sf-sheet[data-view=form] .sf-list{display:none}}
@media(min-width:900px){
  .sf-body{grid-template-columns:minmax(300px,440px) minmax(0,1fr)}
  .sf-list{border-right:1px solid var(--sf-line)}
  .sf-back,.sf-mini{display:none}
  .sf-form{padding:20px 28px 28px}
  .sf-form>*{max-width:720px}
  /* A PC has the height: the preview stays in view while the fields scroll under it. */
  /* -20px: flush with the pane top over its padding; the first shadow hides what scrolls by above its round corners. */
  .sf-preview{position:sticky;top:-20px;z-index:2;box-shadow:0 -16px 0 4px var(--sf-bg),0 10px 18px -12px rgba(0,0,0,.7)}
  .sf-stage{width:120px;height:195px}
}
/* 자동 업무 일감표 (9/28) · free-session.js AutoWork: "무엇을 하나요?" under the 1·3시간 buttons, 만든 것 at the top of the
   session report, 촬영 준비표 on AI 채널 cards, 준비 자료 on 할 일, the 프롬프트 팩 link and its sheet. New classes: t-what, aw-, ch-sheet, td-prep. */
.t-what{max-width:100%;font-size:12.5px;color:var(--s-muted,#8d97ab)}
.t-what>summary{list-style:none;cursor:pointer;display:inline-flex;align-items:center;gap:4px;min-height:32px;color:var(--s-gold2,#f5d99a);font-weight:700}
.t-what>summary::-webkit-details-marker{display:none}
.t-what>summary::after{content:'\203A';display:inline-block;transition:transform .15s}
.t-what[open]>summary::after{transform:rotate(90deg)}
.t-what-body{display:grid;gap:3px;max-width:380px;margin-top:4px;padding:10px 12px;border-radius:12px;background:rgba(0,0,0,.28);text-align:left;line-height:1.5}
.t-what-body b{font-size:13px;color:var(--s-text,#eef1f7)}
.t-what-body p{margin:0 0 5px;overflow-wrap:anywhere}
.t-what-body .t-what-note{margin:2px 0 0;color:var(--s-dim,#5d6780)}
.aw-made h3{margin:4px 0 6px}
.aw-sum{margin:0 0 10px;font-size:16px;font-weight:800;line-height:1.5;color:var(--s-gold2);overflow-wrap:anywhere}
.aw-note{margin:0 0 8px;padding:8px 10px;border-radius:10px;background:rgba(245,181,74,.12);color:#f7cf86;font-size:13px;line-height:1.5}
.aw-now{margin:0 0 8px;font-size:13px;color:#bfe6d6}
.aw-lines{list-style:none;margin:0 0 10px;padding:0;display:grid;gap:6px}
.aw-go{display:grid;grid-template-columns:minmax(0,1fr);gap:2px;width:100%;box-sizing:border-box;min-height:44px;margin:0;padding:10px 12px;border-radius:12px;
  border:1px solid rgba(255,255,255,.1);background:rgba(0,0,0,.2);color:inherit;font:inherit;font-weight:400;text-align:left;white-space:normal}
button.aw-go{cursor:pointer}button.aw-go:hover{border-color:rgba(245,217,154,.45)}
.aw-who{font-size:11.5px;font-weight:800;color:#a4ddc9}
.aw-what{font-size:14px;line-height:1.5;overflow-wrap:anywhere}
.aw-meta{font-size:12px;color:#b8c7d6}
.aw-line[data-status=failed] .aw-what{color:#ffb3bf}.aw-line[data-status=skipped] .aw-what{color:#b8c7d6}
.aw-plan{margin:0 0 8px;font-size:13px}.aw-plan summary{cursor:pointer;color:#b6dacd}.aw-plan ul{margin:6px 0 0;padding-left:18px;line-height:1.6}
.aw-pack-link{justify-self:start;display:inline-flex;align-items:center;min-height:40px;margin:0 0 12px;padding:8px 14px;border-radius:999px;
  border:1px solid rgba(var(--s-glow),.35);background:rgba(var(--s-glow),.1);font-size:13.5px;font-weight:800}
.aw-pack-link:hover{background:rgba(var(--s-glow),.18)}
.ch-sheet{border-top:1px solid var(--s-line);padding-top:8px}.ch-sheet>summary{cursor:pointer;font-size:13px;font-weight:700;color:var(--s-green)}
.aw-scenes{margin:8px 0;padding-left:20px;display:grid;gap:8px}.aw-scenes li{font-size:13px;line-height:1.55;min-width:0}
.aw-scenes b{display:block;font-size:12px;color:var(--s-blue)}.aw-scenes span{display:block;font-size:12.5px;color:var(--s-muted);overflow-wrap:anywhere}
.aw-scenes .aw-cap{color:var(--s-text)}
.aw-part{display:grid;gap:4px;margin-top:8px;min-width:0}.aw-part>b,.aw-part-head b{font-size:12.5px}
.aw-part p{margin:0;white-space:pre-wrap;font-size:12.5px;line-height:1.6;color:var(--s-muted);overflow-wrap:anywhere}
.aw-part-head{display:flex;align-items:center;justify-content:space-between;gap:8px}
.aw-copy{min-height:32px;padding:4px 10px;font-size:12px}
.aw-thumbs{display:flex;flex-wrap:wrap;gap:6px}.aw-thumb{padding:4px 10px;border-radius:999px;background:rgba(var(--s-glow),.14);color:var(--s-gold2);font-size:12.5px;font-weight:700;overflow-wrap:anywhere}
.aw-check{margin:0;padding-left:18px;font-size:12.5px;line-height:1.6;color:var(--s-muted)}
.td-prep{margin-top:4px;padding-top:4px;border-top:1px dashed rgba(255,255,255,.1)}
.td-prep>summary{cursor:pointer;display:flex;align-items:center;min-height:34px;font-size:12.5px;font-weight:700;color:var(--s-green)}
.td-prep-sum{margin:4px 0;font-size:13px;color:var(--s-text)}
.td-prep-steps{margin:6px 0;padding-left:20px;display:grid;gap:6px}.td-prep-steps li{font-size:13px;line-height:1.5;min-width:0}
.td-prep-who{display:inline-block;margin-right:6px;padding:1px 7px;border-radius:999px;background:rgba(255,255,255,.07);color:var(--s-muted);font-size:11px;font-weight:800;vertical-align:1px}
.td-prep-steps li[data-owner=true] .td-prep-who{background:rgba(245,181,74,.18);color:var(--s-amber)}
.td-prep-text{overflow-wrap:anywhere}
.td-prep-label{display:block;margin-top:6px;font-size:12px}
.td-prep-check{margin:4px 0;padding-left:18px;font-size:12.5px;line-height:1.6;color:var(--s-muted)}
.td-prep-note{margin:4px 0;font-size:12.5px;color:var(--s-amber)}
.td-prep-copy{min-height:34px;padding:4px 10px;font-size:12px;margin-top:4px}
html.aw-lock,html.aw-lock body{overflow:hidden}
.aw-sheet{box-sizing:border-box;width:min(760px,calc(100vw - 32px));max-width:none;height:min(860px,calc(100dvh - 40px));max-height:none;margin:auto;padding:0;
  border:1px solid var(--s-line,rgba(255,255,255,.08));border-radius:18px;background:var(--s-bg,#0a0e18);color:var(--s-text,#eef1f7);overflow:hidden;
  font-size:14px;line-height:1.5;word-break:keep-all;overflow-wrap:anywhere}
.aw-sheet[open]{display:flex;flex-direction:column}
.aw-sheet::backdrop{background:rgba(3,6,16,.74)}
.aw-sheet *{box-sizing:border-box}
.aw-head{flex:none;display:flex;align-items:center;gap:10px;padding:12px 12px 12px 16px;border-bottom:1px solid var(--s-line,rgba(255,255,255,.07));background:var(--s-panel,#111827)}
.aw-titles{flex:1 1 auto;min-width:0}.aw-head h2{margin:0;font-size:18px;font-weight:800;letter-spacing:-.02em}
.aw-sub{margin:2px 0 0;font-size:12.5px;color:var(--s-muted,#8d97ab)}
.aw-x{flex:none;display:grid;place-items:center;width:44px;min-height:44px;padding:0;border:0;border-radius:12px;background:rgba(255,255,255,.07);color:inherit;font:inherit;font-size:26px;line-height:1;cursor:pointer}
.aw-x:hover{background:rgba(255,255,255,.13)}
.aw-body{flex:1 1 auto;min-height:0;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;padding:14px 16px calc(24px + env(safe-area-inset-bottom))}
.aw-bar{display:grid;gap:8px;margin-bottom:12px}
.aw-count{margin:0;font-size:13px;color:var(--s-muted,#8d97ab)}
.aw-chips{display:flex;flex-wrap:wrap;gap:6px}
.aw-chip{min-height:36px;padding:6px 12px;border-radius:999px;border:1px solid rgba(255,255,255,.1);background:rgba(255,255,255,.05);color:inherit;font:inherit;font-size:13px;font-weight:700;cursor:pointer}
.aw-chip[aria-pressed=true]{background:linear-gradient(180deg,var(--s-gold2,#f5d99a),var(--s-gold,#e2bd72));color:var(--s-ink,#1a1407);border-color:transparent}
.aw-copy-all{justify-self:start}
.aw-list{display:grid;gap:10px}
.aw-prompt{display:grid;gap:6px;min-width:0;padding:12px 14px;border-radius:14px;border:1px solid var(--s-line,rgba(255,255,255,.07));border-left:3px solid rgba(255,255,255,.14);
  background:linear-gradient(180deg,var(--s-panel2,#161f33),var(--s-panel,#111827))}
.aw-prompt[data-status=good]{border-left-color:var(--s-green,#3ddc97)}.aw-prompt[data-status=fix]{border-left-color:var(--s-amber,#f5b54a)}
.aw-prompt-head{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}.aw-prompt-head b{min-width:0;font-size:14px;line-height:1.45}
.aw-mark{flex:none;padding:2px 9px;border-radius:999px;background:rgba(255,255,255,.07);color:var(--s-muted,#8d97ab);font-size:11.5px;font-weight:800}
.aw-prompt[data-status=good] .aw-mark{background:rgba(61,220,151,.14);color:var(--s-green,#3ddc97)}.aw-prompt[data-status=fix] .aw-mark{background:rgba(245,181,74,.16);color:var(--s-amber,#f5b54a)}
.aw-cat,.aw-how,.aw-review{margin:0;font-size:12.5px;line-height:1.5;color:var(--s-muted,#8d97ab)}.aw-review{color:var(--s-text,#eef1f7)}
.aw-text>summary{cursor:pointer;font-size:12.5px;font-weight:700;color:var(--s-gold2,#f5d99a)}
.aw-text p{margin:6px 0 0;padding:10px;border-radius:10px;background:rgba(0,0,0,.28);font-size:12px;line-height:1.55;white-space:pre-wrap;overflow-wrap:anywhere}
.aw-acts{display:flex;flex-wrap:wrap;gap:6px}.aw-acts .s-btn{min-height:38px;padding:6px 14px;font-size:13px}
.aw-restore{margin-top:14px;min-height:40px}
.aw-empty,.aw-wait{margin:8px 0;color:var(--s-muted,#8d97ab)}
.aw-captions{list-style:none;margin:10px 0 0;padding:0;display:grid;gap:6px}
.aw-captions li{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 10px;border-radius:10px;background:rgba(255,255,255,.04)}
.aw-captions span{min-width:0;overflow-wrap:anywhere}.aw-captions .s-btn{flex:none}
@media(max-width:760px){
  .aw-sheet{width:100%;height:100%;max-height:100%;border:0;border-radius:0}
  .aw-head{padding-top:max(12px,env(safe-area-inset-top))}
  .aw-go{padding:10px}
  .t-what-body{max-width:none}
}
/* PC: the explanation opens as a small pop-over, so the session card keeps its size (오늘 stays one screen). */
@media(min-width:761px){
  .t-what{position:relative}
  .t-what-body{position:absolute;right:0;top:calc(100% + 4px);z-index:30;width:360px;background:#141c2b;border:1px solid var(--s-line,rgba(255,255,255,.08));box-shadow:0 14px 34px rgba(0,0,0,.45)}
}
.td-item:has(.td-prep[open]){align-items:start}
/* 9/29 theme ② 코발트 나이트 (JUNO: "3번"): deep royal navy, ivory buttons, cobalt accents. Main Office only; 그림책 오피스 (.bo) keeps gold. */
.shell:not(.bo){--s-bg:#0C1646;--s-panel:#152363;--s-panel2:#1B2C74;--s-line:rgba(169,192,255,.13);--s-text:#F4EFE3;--s-muted:#B3BCDF;--s-dim:#8E98C4;
  --s-gold:#F4EFE3;--s-gold2:#FFFBF2;--s-ink:#0C1646;--s-blue:#7C9CFF;--s-glow:124,156,255;--s-dark:10,18,58;--s-panel-rgb:21,35,99;
  background:radial-gradient(900px 500px at 15% -10%,rgba(124,156,255,.14),transparent 60%),radial-gradient(800px 500px at 100% 0,rgba(169,192,255,.08),transparent 60%),var(--s-bg)}
.shell:not(.bo) .shell-logo{box-shadow:0 8px 22px -8px rgba(124,156,255,.7)}
.shell:not(.bo){--gold:#F4EFE3;--gold2:#FFFBF2;--gold-ink:#0C1646;--bg:#0A123A;--bg2:#0C1646;--panel:rgba(21,35,99,.78);--panel2:rgba(27,44,116,.9);--inset:#0A123A;--text:#F4EFE3;--muted:#B3BCDF;--dim:#8E98C4}
.shell:not(.bo) .primary{box-shadow:0 10px 24px -12px rgba(124,156,255,.7),0 1px 0 rgba(255,255,255,.55) inset}
.shell:not(.bo) .chat-row.mine .chat-bubble{background:#F4EFE3;color:#0C1646}
.shell:not(.bo) .chat-go{color:#A9C0FF}
/* 9/29 JUNO: the mochi robots everywhere a face shows (라이브 오피스, 팀 채팅, 캐릭터 카드, 휴대폰 목록). */
.robot-face{display:block;width:100%;height:100%;background:url(/office-faces.png) no-repeat;background-size:1300% 600%;background-position:calc(var(--i) * 100% / 12) calc(var(--row,0) * 100% / 5)}
.robot-body{display:block;height:100%;aspect-ratio:64/80;margin:0 auto;background:url(/office-robots.png) no-repeat;background-size:1300% 600%;background-position:calc(var(--i) * 100% / 12) calc(var(--row,0) * 100% / 5);filter:drop-shadow(0 4px 4px #0008)}
.r0{--i:0}.r1{--i:1}.r2{--i:2}.r3{--i:3}.r4{--i:4}.r5{--i:5}.r6{--i:6}.r7{--i:7}.r8{--i:8}.r9{--i:9}.r10{--i:10}.r11{--i:11}.r12{--i:12}
.ac-mint{--row:1}.ac-purple{--row:2}.ac-pink{--row:3}.ac-orange{--row:4}.ac-green{--row:5}
.sf-face:has(.robot-face){background:#e9ecf6;border-radius:50%;overflow:hidden}
.sf-stage .robot-body{height:150px;flex:none}.sf-mini .robot-face{width:34px;height:34px;border-radius:50%;background-color:#e9ecf6}
.s-av:has(.robot-face),.chat-portrait:has(.robot-face),.mobile-avatar:has(.robot-face){background:#e9ecf6}
.card-avatar .robot-body{width:80px;height:100px}
@media(max-width:560px){.card-avatar .robot-body{width:60px;height:75px}}
body:not(.bo) dialog.card,body:not(.bo) dialog.card.team-message{background:linear-gradient(115deg,color-mix(in srgb,var(--team-color,#7C9CFF) 16%,#152363),#0C1646 85%)!important;border-color:rgba(124,156,255,.35)}
body:not(.bo) .card .agent-facts{background:rgba(10,18,58,.45)}
body:not(.bo) .friendly-card .card-head{background:#16266a}
.tr-hidden{margin-top:14px;padding:10px 12px;border:1px solid var(--s-line);border-radius:12px;background:rgba(var(--s-dark),.35)}
.tr-hidden summary{cursor:pointer;font-weight:700;color:var(--s-muted);min-height:32px;display:flex;align-items:center}
.tr-hidden-row{display:flex;align-items:center;gap:8px;padding:8px 0;border-top:1px solid var(--s-line)}
.tr-hidden-title{flex:1;min-width:0;font-size:13px;color:var(--s-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tr-hidden-row .s-btn{min-height:40px}
.ch-for{margin:4px 0 0;font-size:12.5px;font-weight:700;color:#A9C0FF}
.pl-for{flex:none;padding:0 6px;border-radius:999px;font-size:10.5px;font-weight:800;line-height:18px;background:rgba(124,156,255,.2);color:#DCE4FF}
.pl-chip[data-for=teyo] .pl-for{background:rgba(245,181,74,.2);color:#FFE2B0}
/* 9/29 JUNO 딸깍: examples first in 디자인 작업실; the slower ways fold under 다른 방법. */
.dai-examples{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:8px;margin:10px 0 6px}
.dai-example{display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto;column-gap:10px;align-items:center;text-align:left;padding:12px;min-height:64px;border-radius:14px;border:1px solid var(--s-line);background:rgba(var(--s-glow),.08);color:var(--s-text);font:inherit;cursor:pointer}
.dai-example:hover,.dai-example[aria-pressed=true]{border-color:#7C9CFF;background:rgba(var(--s-glow),.18)}
.dai-example-wrap{position:relative;display:grid}.dai-example-wrap .dai-example{height:100%;padding-right:34px;grid-template-rows:auto auto auto}.dai-example-icon{grid-row:1/4;font-size:26px}.dai-example .dai-example-age{font-size:11px;opacity:.85}.dai-ex-btn{position:absolute;right:4px;width:28px;height:28px;border-radius:50%;border:0;background:transparent;color:var(--s-text);font-size:15px;cursor:pointer;padding:0}.dai-ex-star{top:4px}.dai-ex-drop{top:34px;font-size:12px;opacity:.7}.dai-ex-btn:hover,.dai-ex-btn:focus-visible{background:rgba(var(--s-glow),.2);opacity:1}.dai-ex-head{grid-column:1/-1;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:6px}.dai-ex-head .dai-note{margin:0}.dai-ex-kept[aria-pressed=true]{outline:2px solid var(--s-accent,#F4EFE3)}.dai-ex-more{grid-column:1/-1;justify-self:start}.dai-recipe-box{margin:8px 0 4px}.dai-recipes{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}.dai-recipe[aria-pressed=true]{outline:2px solid var(--s-accent,#F4EFE3)}.dai-example b{font-size:14px}.dai-example small{font-size:12px;color:var(--s-muted)}
.dai-idea-label{margin:8px 0 4px}
.ago{margin-left:4px;font-size:.92em;color:var(--s-muted);white-space:nowrap}.ago:empty{display:none}
.ago.is-late{color:#FFB35C;font-weight:800}
/* 9/30: 오늘's session card — the big bar, one small bar per lane, the latest finished step. */
.t-kick{margin:10px 0 0;padding:8px 12px;border-radius:12px;background:rgba(124,156,255,.2);color:#F4EFE3;font-weight:800;animation:t-kick 1.4s ease-in-out 3}
@keyframes t-kick{50%{box-shadow:0 0 0 4px rgba(124,156,255,.35)}}
.t-sbar-label{margin:12px 0 6px;font-weight:800;color:var(--s-text)}
.t-sbar{height:12px;border-radius:999px;background:rgba(169,192,255,.18);overflow:hidden}
.t-sbar i{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#7C9CFF,#F4EFE3);transition:width 1s;position:relative;overflow:hidden}
.t-sbar i::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent,rgba(255,255,255,.55),transparent);animation:t-shine 1.8s linear infinite}
@keyframes t-shine{from{transform:translateX(-100%)}to{transform:translateX(100%)}}
.t-latest{margin:8px 0 0;font-size:13px;color:#BFF0D6}
.t-kick.t-paused{background:rgba(245,181,74,.18);animation:none}
.t-lane-bar{display:block;height:6px;margin-top:6px;border-radius:999px;background:rgba(169,192,255,.18);overflow:hidden}.t-lane-bar i{display:block;height:100%;border-radius:inherit;background:#7C9CFF}
.t-lane-count{display:block;margin-top:3px;font-size:11.5px;color:var(--s-muted)}
@media(prefers-reduced-motion:reduce){.t-kick,.t-sbar i::after{animation:none}}
.dai-more-row{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:10px}.dai-more-row .dai-note{flex-basis:100%;margin:0}.dai-more-row .s-btn{min-height:40px}
.dai-found{grid-column:1/-1;margin:0;color:#A9C0FF;font-weight:700}
.dai-make.dai-ready{animation:dai-ready 1.2s ease 2}@keyframes dai-ready{50%{box-shadow:0 0 0 6px rgba(124,156,255,.45)}}
.ds-more{margin-top:14px;padding:12px 14px;border:1px solid var(--s-line);border-radius:16px;background:rgba(var(--s-dark),.3)}
.ds-more>summary{cursor:pointer;font-weight:800;min-height:40px;display:flex;align-items:center;color:var(--s-muted)}
@media(max-width:560px){.dai-examples{grid-template-columns:1fr 1fr}.dai-example{grid-template-columns:1fr;text-align:center}.dai-example-icon{grid-row:auto}}
@media(max-width:560px){.dai-example-wrap .dai-example{padding-right:12px;padding-top:30px}.dai-ex-star{top:2px;right:32px}.dai-ex-drop{top:2px}}
/* 9/29 JUNO: the first "연결" window in our colors too. */
body:not(.bo) .gate{background:rgba(8,14,46,.72)}
body:not(.bo) .gate-card{background:linear-gradient(180deg,#1B2C74,#0C1646);border:1px solid rgba(124,156,255,.35);color:#F4EFE3;box-shadow:0 40px 100px -30px rgba(0,0,0,.9),0 0 70px -24px rgba(124,156,255,.5)}
body:not(.bo) .gate-card .eyebrow{color:#A9C0FF;letter-spacing:.14em}
body:not(.bo) .gate-card>p:not(.eyebrow),body:not(.bo) .gate-card .hint{color:#B3BCDF}
body:not(.bo) .gate-card input{background:#0A123A;border:1px solid rgba(169,192,255,.28);color:#F4EFE3}
body:not(.bo) .gate-card input::placeholder{color:#8E98C4}
body:not(.bo) .gate-card .ghost{background:rgba(124,156,255,.12);border:1px solid rgba(124,156,255,.4);color:#F4EFE3}
body:not(.bo) .gate-card .primary{background:#F4EFE3;color:#0C1646}
.shell:not(.bo) .chat-thread-line[data-actor=juno] b{color:#F4EFE3}
