/* One Team rankings, tools, birthdays, tasks (scoped) */
.otv .shell{max-width:980px;margin:auto;padding:0 18px 48px}
.otv .dot{width:6px;height:6px;border-radius:50%;background:currentColor}
@keyframes spin{to{transform:rotate(360deg)}}
.otv .tools-bar{max-width:980px;margin:auto;padding:12px 18px 0;display:flex;gap:8px}
.otv .chip{flex:1;min-width:0;display:flex;flex-direction:column;align-items:center;gap:7px;padding:12px 6px;border:1px solid var(--line);background:var(--surface);border-radius:14px;color:var(--text);text-decoration:none;font:700 10.5px var(--disp);letter-spacing:.04em;text-transform:uppercase;transition:.18s}
.otv .chip:hover{border-color:var(--orange);box-shadow:var(--shadow);transform:translateY(-1px)}
.otv .chip-ic{display:grid;place-items:center;width:36px;height:36px;border-radius:11px;background:var(--orange-soft);color:var(--orange-ink);transition:.18s}
.otv .chip:hover .chip-ic{background:var(--orange);color:#fff}
.otv .chip-ic svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.otv .chip-lb{line-height:1.15;text-align:center}
.otv .bd-ticker{overflow:hidden;background:#fff;color:#0b4fa8;border-top:1px solid #e3e8f0;border-bottom:1px solid #e3e8f0}
.otv .bd-name{display:inline-block;margin:0 1px 0 4px;padding:1px 9px;border-radius:999px;background:#0b4fa8;color:#fff;font-weight:800;letter-spacing:.03em}
.otv .bd-run,.otv .bd-slide{display:inline-block;flex:none;vertical-align:middle;transform:scaleX(-1)}
.otv .bd-run{width:17px;height:30px;margin-right:8px}
.otv .bd-slide{width:40px;height:22px}
.otv .bd-hearts{display:inline-flex;gap:5px;align-items:center;flex:none}
.otv .bd-hearts svg{width:24px;height:19px}
.otv .bd-run .l1{animation:bdLeg .32s steps(1) infinite}
.otv .bd-run .l2{animation:bdLeg .32s steps(1) infinite reverse}
.otv .bd-run .l2{opacity:0}
@keyframes bdLeg{0%{opacity:1}50%{opacity:0}}
.otv .bd-slide .dust{animation:bdDust .5s linear infinite}
@keyframes bdDust{from{transform:translateX(0);opacity:.7}to{transform:translateX(-10px);opacity:0}}
.otv .bd-track{display:inline-flex;align-items:center;gap:28px;white-space:nowrap;padding:8px 0;font:700 14px var(--disp);letter-spacing:.02em;animation:bdMove var(--bd-dur,22s) linear infinite;padding-left:100%}
.otv .bd-track span{display:inline}
@keyframes bdMove{from{transform:translateX(0)}to{transform:translateX(-100%)}}
@media (prefers-reduced-motion:reduce){.otv .bd-track{animation:none;padding-left:16px;white-space:normal;flex-wrap:wrap;gap:6px 24px}}
@keyframes show{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.otv .widget{background:var(--surface);border:1px solid var(--line);border-radius:14px;margin-bottom:14px}
.otv .widget{overflow:hidden;box-shadow:var(--shadow)}
.otv .widget-top{display:flex;align-items:center;gap:10px;padding:15px 18px;border-bottom:1px solid var(--line)}
.otv .trophy{width:30px;height:30px;display:grid;place-items:center;border-radius:9px;background:var(--orange-soft);color:var(--orange-ink);font-size:15px;flex:0 0 30px}
.otv .widget-title{font:700 16px var(--disp);letter-spacing:.06em;text-transform:uppercase}
.otv .widget-sub{margin-left:auto;font-size:11px;color:var(--muted);white-space:nowrap}
.otv .source{color:var(--green);font-weight:700}
.otv .ranking-list{padding:6px 14px 10px;scrollbar-width:thin;scrollbar-color:var(--faint) transparent}
.otv .rank-row{position:relative;display:grid;grid-template-columns:26px 1fr 92px 48px;align-items:center;gap:10px;
    padding:9px 8px;border-radius:10px;margin-bottom:2px;transition:background .15s;
    font-variant-numeric:tabular-nums;}
.otv .rank-row:hover{background:var(--soft)}
.otv .rank-row+.rank-row{border-top:1px solid var(--line);border-radius:0}
.otv .rank-row+.rank-row:hover{border-radius:0}
.otv .rank-num{color:var(--muted);font:700 12px var(--disp);text-align:center;
    background:var(--soft);border-radius:50%;width:24px;height:24px;display:grid;place-items:center;}
.otv .rank-row:nth-child(1) .rank-num{color:#fff;background:linear-gradient(135deg,#ffcc66,#c2570a);box-shadow:0 2px 5px rgba(0,0,0,.18)}
.otv .rank-row:nth-child(2) .rank-num{color:#fff;background:linear-gradient(135deg,#d7dbe3,#8a93a3);box-shadow:0 2px 5px rgba(0,0,0,.18)}
.otv .rank-row:nth-child(3) .rank-num{color:#fff;background:linear-gradient(135deg,#e3ae83,#9c6530);box-shadow:0 2px 5px rgba(0,0,0,.18)}
.otv .rank-row:nth-child(n+4):nth-child(-n+10) .rank-num{color:var(--orange-ink);background:var(--orange-soft);font-weight:800}
.otv .rank-name-wrap{min-width:0}
.otv .rank-name{font-weight:700;font-size:13.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.otv .rank-branch{font-size:10.5px;color:var(--muted);font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:1px;letter-spacing:.02em}
.otv .rank-segbar{display:flex;gap:2px;align-items:center;height:20px}
.otv .rank-seg{width:4px;height:16px;border-radius:2px;background:var(--line);flex-shrink:0}
.otv .rank-seg.on{background:var(--orange)}
.otv .rank-value{font:700 16px var(--disp);color:var(--orange);letter-spacing:.02em;text-align:right}
.otv .loading{display:grid;place-items:center;color:var(--muted);font-size:12.5px;min-height:120px}
.otv .error{color:var(--red);padding:16px 2px;font-size:12.5px;line-height:1.6}
.otv .pill{font:600 10.5px var(--disp);letter-spacing:.07em;text-transform:uppercase;padding:5px 10px;border:1px solid var(--line);background:var(--soft);color:var(--muted);border-radius:20px}
.otv .pill.open{color:var(--green);border-color:color-mix(in srgb,var(--green) 30%,transparent);background:var(--green-soft)}
.otv .pill.locked{color:var(--orange-ink);border-color:color-mix(in srgb,var(--orange) 30%,transparent);background:var(--orange-soft)}
.otv .grid{display:grid;grid-template-columns:repeat(4,1fr);padding:14px;gap:10px}
.otv .app{position:relative;min-height:112px;border:1px solid var(--line);border-radius:12px;background:var(--soft);padding:14px;cursor:pointer;text-align:left;color:var(--text);font:inherit;transition:.15s}
.otv .app:hover{border-color:var(--orange);background:var(--surface);box-shadow:var(--shadow)}
.otv .app-icon{display:grid;place-items:center;width:36px;height:36px;border-radius:10px;background:color-mix(in srgb,var(--c) 13%,transparent);color:var(--c)}
.otv .app-icon svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.otv .app-icon svg.run-ico{width:15px;height:28px;stroke:none;fill:initial}
.otv .app-icon.run-bg{background:#fff3e6}
.otv .run-ico .l1{animation:bdLeg .32s steps(1) infinite}
.otv .run-ico .l2{opacity:0;animation:bdLeg .32s steps(1) infinite reverse}
.otv .app-name{display:block;margin-top:16px;font:600 14.5px var(--disp);letter-spacing:.03em;text-transform:uppercase}
.otv .go{position:absolute;right:12px;top:13px;color:var(--faint);font-size:14px}
.otv .app:hover .go{color:var(--orange)}
.otv .task-toasts{position:fixed;left:50%;bottom:max(14px,env(safe-area-inset-bottom));transform:translateX(-50%);z-index:900;width:min(440px,calc(100% - 24px));display:flex;flex-direction:column;gap:8px;max-height:72vh;overflow:auto;pointer-events:none}
.otv .task-toast{pointer-events:auto;position:relative;border:1.5px solid var(--orange);border-radius:14px;box-shadow:0 10px 30px rgba(0,0,0,.28);animation:toastIn .25s ease}
.otv .task-toast .task{border:0;background:#fff;padding-right:40px}
.otv .task-x{position:absolute;top:8px;right:8px;width:28px;height:28px;border-radius:50%;border:1px solid #e3e6ea;background:#fff;color:#5f6672;font:700 14px/1 var(--disp);cursor:pointer;display:grid;place-items:center;z-index:1}
.otv .task-x:hover{color:#1b1f27;border-color:#c9ced6}
@keyframes toastIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.otv .chk-mini{margin:12px 0;border:1px solid var(--line);border-radius:14px;background:var(--surface);padding:10px 12px;display:flex;flex-direction:column;gap:8px}
.otv .chk-mini-top{display:flex;align-items:center;gap:10px}
.otv .chk-mini-top .chk-mk{flex:none}
.otv .chk-mini-t{font:700 13px var(--disp);letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}
.otv .chk-mini-s{margin-left:auto;text-align:right;font-size:13px;font-weight:700}
.otv .chk-mini-s small{display:block;font-size:11px;font-weight:500;color:var(--muted)}
.otv .chk-mini-s.ok{color:var(--green)}
.otv .chk-mini-s.mid{color:var(--orange-ink)}
.otv .chk-mini-s.bad{color:var(--red)}
.otv .chk-chips{display:flex;flex-wrap:wrap;gap:6px}
.otv .chk-chip{display:inline-flex;gap:5px;align-items:center;font:700 11px var(--disp);letter-spacing:.02em;padding:4px 9px;border-radius:20px;white-space:nowrap}
.otv .chk-chip.ok{background:var(--green-soft);color:var(--green)}
.otv .chk-chip.mid{background:var(--orange-soft);color:var(--orange-ink)}
.otv .chk-chip.bad{background:var(--red-soft);color:var(--red)}
.otv .chk-chip i{font-style:normal;font-weight:500;opacity:.85}
.otv .sb{display:inline-flex;align-items:center;gap:4px;height:18px;padding:0 3px 0 3px;border-radius:9px;flex:none;line-height:1;white-space:nowrap;box-shadow:inset 0 0 0 1px rgba(0,0,0,.12)}
.otv .sb i{font:800 8.5px/1 var(--disp);font-style:normal;letter-spacing:.04em;background:#fff;border-radius:6px;padding:2.5px 4px}
.otv .sb b{font:800 10.5px/1 var(--disp);padding-right:4px}
.otv .sb em{font:800 9px/1 var(--disp);font-style:normal;background:#e30613;color:#fff;border-radius:6px;padding:2.5px 4px;margin-left:-1px}
.otv .sb.t3{background:linear-gradient(160deg,#8a5328,#d39462 40%,#f0c08e 55%,#b06d38);color:#2e1a0b}
.otv .sb.t6{background:linear-gradient(160deg,#7d8794,#c3cad3 40%,#f4f7fa 55%,#9aa4b1);color:#1d232b}
.otv .sb.t12{background:linear-gradient(160deg,#a47a12,#dcb043 40%,#fbe7a1 55%,#c99a26);color:#2b1f02}
.otv .sb.ga i{color:#1f8a4c}
.otv .sb.kpi i{color:#e06a00}
.otv .rank-bdg{display:flex;margin-top:4px}
.otv .sbs{display:inline-flex;gap:6px}
.otv .rank-bdg .sb{cursor:pointer}
.otv .sb.new{position:relative;animation:sbGlow 1.6s ease-in-out infinite}
.otv .sb.new::after{content:"";position:absolute;top:-3px;right:-3px;width:8px;height:8px;border-radius:50%;background:#e30613;box-shadow:0 0 0 1.5px var(--surface)}
@keyframes sbGlow{0%,100%{box-shadow:inset 0 0 0 1px rgba(0,0,0,.12),0 0 0 0 rgba(255,121,0,0)}50%{box-shadow:inset 0 0 0 1px rgba(0,0,0,.12),0 0 9px 2px rgba(255,170,60,.85)}}
.otv .sb-tip{position:fixed;z-index:60;max-width:260px;background:var(--text);color:var(--surface);font-size:12px;line-height:1.45;padding:8px 10px;border-radius:10px;box-shadow:0 6px 18px rgba(0,0,0,.25);pointer-events:none}
.otv .sb-tip b{display:block;font-size:12.5px}
.otv .sb-tog{display:flex;align-items:center;gap:6px;width:100%;background:none;border:0;padding:0;font:700 12px var(--disp);color:var(--muted);cursor:pointer;text-align:left}
.otv .sb-tog .arr{margin-left:auto;transition:transform .2s}
.otv .sb-legend.open .sb-tog .arr{transform:rotate(180deg)}
.otv .sb-legend:not(.open){padding:8px 12px}
.otv .sb-body{display:flex;flex-direction:column;gap:9px}
.otv .sb-body[hidden]{display:none}
.otv .sb-legend{margin:6px 14px 4px;padding:11px 12px;border:1px solid var(--line);border-radius:12px;background:var(--soft);display:flex;flex-direction:column;gap:9px}
.otv .sb-legend .t{font:700 10.5px var(--disp);letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.otv .sb-legend .lead{font-size:12.5px;color:var(--text);line-height:1.45}
.otv .sb-legend .tiers{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}
.otv .sb-legend .tier{display:flex;flex-direction:column;align-items:center;gap:4px;padding:7px 4px;background:var(--surface);border:1px solid var(--line);border-radius:10px;font-size:11px;color:var(--muted);text-align:center}
.otv .sb-legend .tier>b{color:var(--text);font-size:12px}
.otv .sb-legend .r{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--muted)}
.otv .sb-legend .n{font-size:11px;color:var(--faint)}
.otv .rank-more{display:block;margin:8px auto 2px;border:1px solid var(--line);background:transparent;color:var(--text);border-radius:9px;padding:7px 14px;font:600 12px var(--disp);letter-spacing:.04em;cursor:pointer}
.otv .rank-more:hover{border-color:var(--orange)}
.otv .task-toasts{--surface:#fff;--soft:#f3f4f6;--line:#e3e6ea;
    --text:#1b1f27;--muted:#5f6672;--faint:#8a919c;
    --orange:#ff7900;--orange-ink:#c2570a;--orange-soft:#fff2e4;
    --red:#d9483f;--red-soft:#fbe9e8;
    color:var(--text)}
.otv .task{display:grid;grid-template-columns:36px minmax(0,1fr) auto;gap:4px 12px;align-items:center;padding:12px;border:1px solid var(--line);border-radius:12px;background:var(--soft)}
.otv .task.due-today{border-color:color-mix(in srgb,var(--orange) 45%,var(--line))}
.otv .task.late{border-color:color-mix(in srgb,var(--red) 45%,var(--line));background:var(--red-soft)}
.otv .task-ic{grid-row:1/3;width:36px;height:36px;border-radius:10px;display:grid;place-items:center;background:color-mix(in srgb,var(--c) 14%,transparent);color:var(--c)}
.otv .task-ic svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.otv .task-name{font:700 14px var(--disp);letter-spacing:.02em;min-width:0}
.otv .task-meta{grid-column:2/4;font-size:12px;color:var(--muted);line-height:1.5}
.otv .task-meta b{color:var(--text);font-weight:600}
.otv .task-line{display:block}
.otv .task-late{font-style:normal;font-weight:700;color:var(--red)}
.otv .chk-mk{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;font-weight:800;font-size:13px}
.otv .chk-mk.ok{background:var(--green-soft);color:var(--green)}
.otv .chk-mk.mid{background:var(--orange-soft);color:var(--orange-ink)}
.otv .chk-mk.bad{background:var(--red-soft);color:var(--red)}
.otv .pc-overlay{position:fixed;inset:0;z-index:50;display:none;align-items:flex-end;justify-content:center;background:rgba(10,12,16,.55);backdrop-filter:blur(3px);padding:0}
.otv .pc-overlay.open{display:flex;animation:pcFade .18s ease}
@keyframes pcFade{from{opacity:0}to{opacity:1}}
.otv .pc-modal{width:100%;max-width:520px;background:var(--surface);border:1px solid var(--line);border-radius:18px 18px 0 0;max-height:82vh;display:flex;flex-direction:column;animation:pcUp .22s ease}
@keyframes pcUp{from{transform:translateY(24px)}to{transform:none}}
.otv .pc-head{display:flex;align-items:center;justify-content:space-between;padding:16px 18px;border-bottom:1px solid var(--line)}
.otv .pc-title{font:700 17px var(--disp);letter-spacing:.05em;text-transform:uppercase}
.otv .pc-close{border:1px solid var(--line);background:var(--soft);color:var(--muted);width:32px;height:32px;border-radius:9px;cursor:pointer;font-size:14px}
.otv .pc-close:hover{color:var(--text);border-color:var(--faint)}
.otv .pc-list{padding:10px;overflow:auto;display:grid;grid-template-columns:1fr 1fr;gap:8px}
.otv .pc-item{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:14px;border:1px solid var(--line);border-radius:12px;background:var(--soft);color:var(--text);text-decoration:none;font:600 14px var(--disp);letter-spacing:.03em;text-transform:uppercase;transition:.15s}
.otv .pc-item:hover{border-color:var(--orange);background:var(--surface);box-shadow:var(--shadow)}
.otv .pc-go{color:var(--faint);font-size:13px}
.otv .pc-item:hover .pc-go{color:var(--orange)}
.otv .pc-list.confirm{grid-template-columns:1fr}
.otv .pc-row{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:12px 14px;border:1px solid var(--line);border-radius:12px;background:var(--soft)}
.otv .pc-dates{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.otv .pc-tag{font:600 11px var(--disp);letter-spacing:.03em;color:var(--muted);background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:3px 8px;white-space:nowrap}
.otv .pc-tag b{color:var(--orange);font-weight:700;margin-inline-end:4px}
@media(max-width:640px){.otv .grid{grid-template-columns:1fr 1fr}}
@media(max-width:420px){.otv .grid{grid-template-columns:1fr 1fr;gap:8px;padding:10px}
.otv .app{padding:11px}
.otv .app-icon{width:32px;height:32px}
.otv .app-name{margin-top:10px;font-size:13px}
.otv .rank-row{grid-template-columns:20px 1fr 70px 40px;gap:6px}
.otv .rank-seg{width:3px}
.otv .rank-value{font-size:14.5px}
.otv .app{min-height:84px}}