:root{font-family:"Microsoft JhengHei",system-ui,sans-serif;color:#243f35;background:#f4f7f3;font-size:15px;line-height:1.7}
.v2036{color:#c2410c}.v2036-note{padding:12px 16px;border:1px solid #efc7a8;border-left:3px solid #c2410c;border-radius:8px;background:#fff8f2;margin:16px 0;font-size:13px;overflow-wrap:anywhere}.v2036-note p{margin:6px 0}td.v2036{min-width:160px;max-width:280px}td.v2036 button{color:#c2410c;white-space:normal;text-align:left}#v2036-detail:empty{display:none}
@media(max-width:600px){.chart-toolbar label:has(#v2036-layer){grid-column:1/-1;min-height:44px;flex-direction:row;align-items:center}}
*{box-sizing:border-box}body{margin:0}header{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:20px max(24px,calc((100vw - 1160px)/2));border-bottom:1px solid #dce4dc;background:#fff;font-size:13px}a{color:#205a49}main{max-width:1160px;margin:auto;padding:38px 24px}.eyebrow{font-size:11px;letter-spacing:2px;color:#708479}h1{font-size:32px;line-height:1.4;margin:10px 0}h2{font-size:24px;margin:0}h3{font-size:17px}.intro{color:#64776b;margin-top:6px}.coverage{padding:12px 16px;border-left:3px solid #719481;background:#eaf0e8;font-size:13px}
button,input,select{font:inherit}button{border:1px solid #25684f;border-radius:6px;padding:8px 16px;background:#25684f;color:#fff;cursor:pointer;white-space:nowrap}button:hover{filter:brightness(.95)}button.secondary{background:#fff;color:#315b49;border-color:#c6d5c9}input,select{border:1px solid #c6d5c9;background:#fff;color:#243f35;border-radius:5px;padding:8px;min-width:0}input[type=checkbox]{width:17px;height:17px;accent-color:#26734d;vertical-align:middle}input:focus-visible,button:focus-visible,select:focus-visible,canvas:focus-visible{outline:2px solid #528f70;outline-offset:3px}
.controls{display:flex;align-items:end;gap:18px;flex-wrap:wrap;background:#fff;border:1px solid #dae4d9;border-radius:10px;padding:20px}.controls form{flex:1;min-width:250px}label{font-size:13px}.search-row{display:flex;gap:8px;margin-top:5px}.search-row input{flex:1;width:100%}.controls>label{display:flex;flex-direction:column;gap:5px}fieldset{display:flex;flex-wrap:wrap;border:0;gap:12px;margin:0;padding:0;width:100%}legend{font-size:13px;margin:12px 0 8px}fieldset label{background:#f7f9f6;border:1px solid #d7e2d7;border-radius:6px;padding:6px 12px}.controls p{margin:0;font-size:12px;color:#6a7b70}.stock-list{width:100%}.stock-list select{max-width:600px}#message{color:#986139;font-size:14px}
#analysis{background:#fff;border:1px solid #dae4d9;border-radius:12px;padding:24px}.stock-head{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-bottom:18px}#query-label{font-size:13px;color:#738479}.states{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.state{border:1px solid #e0e7dd;border-radius:8px;padding:13px 16px}.state h3{margin:0;font-size:13px;font-weight:500}.state strong{display:block;font-size:21px;margin:5px 0}.state p{font-size:12px;color:#718074;margin:4px 0}.state .buy{color:#a54531}.state .unknown{color:#7a807c}.chart-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin:24px 0 12px}.chart-toolbar input[type=date]{font-size:13px}.chart-toolbar button{font-size:13px;padding:6px 12px}.legend{display:flex;flex-wrap:wrap;gap:20px;font-size:13px;font-weight:650}.v296{color:#0369a1}.v1698{color:#7c3aed}.bottom{color:#a88800}canvas{width:100%;height:500px;display:block;touch-action:pan-y}.hint,#chart-note{font-size:12px;color:#76877a}.history-head{display:flex;justify-content:space-between;align-items:center;gap:16px}.history-head span{font-size:12px;color:#718074}.table-wrap{max-height:340px;overflow:auto}table{width:100%;border-collapse:collapse;font-size:13px}th{text-align:left;background:#f4f7f1;position:sticky;top:0}td,th{padding:10px 12px;border-bottom:1px solid #e6ece2}td button{border:0;padding:0;background:none;color:#25684f;text-decoration:underline}details{border-top:1px solid #dce4d8;margin-top:24px;padding-top:16px;font-size:13px}summary{cursor:pointer}#details p{margin:10px 0}.notes{font-size:12px;color:#718074;margin-top:24px}.notes p{margin:8px 0}footer{text-align:center;font-size:12px;color:#79887e;padding:20px}[hidden]{display:none!important}
@media(max-width:650px){header{padding:14px 16px;flex-wrap:wrap}header>span{display:none}main{padding:24px 12px}h1{font-size:26px}.controls{padding:16px;gap:12px}#analysis{padding:14px}.states{grid-template-columns:1fr}.state{display:grid;grid-template-columns:1fr 1.4fr;gap:3px 8px}.state strong{font-size:18px;margin:0}.state p{grid-column:1/-1}canvas{height:430px}.stock-head{align-items:start;flex-direction:column}.history-head{align-items:start;flex-direction:column;gap:0}.chart-toolbar{gap:8px}.legend{gap:10px;font-size:12px}td,th{padding:8px;font-size:12px}}
.brand{font-weight:750;text-decoration:none}main{max-width:1500px}h1{font-size:30px}.pool-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:20px 0}.pool-stat{border:1px solid #dce5dc;border-radius:8px;background:#fff;padding:12px 18px;display:flex;align-items:center;justify-content:space-between;gap:12px}.pool-stat span{font-size:13px}.pool-stat strong{font-size:27px}.controls .chart-toolbar{margin:0;width:100%}.overview{margin-top:30px}.overview-head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px}.overview-head span{font-size:12px;color:#718074}.stock-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;margin-top:18px}.stock-card{background:#fff;border:1px solid #dce5dc;border-radius:10px;padding:18px;min-width:0;content-visibility:auto;contain-intrinsic-size:auto 460px}.card-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.card-head button{background:none;color:#243f35;border:0;padding:0;font-size:20px;font-weight:700;text-align:left}.card-head small{font-size:12px;color:#738479}.card-signals{display:flex;gap:12px;flex-wrap:wrap;font-size:12px;margin-top:12px}.stock-card canvas{height:300px}.card-note{font-size:12px;color:#718074;margin:8px 0 0}.card-note.error{color:#a54531}.stock-card a{font-size:12px}#empty-state{border:1px dashed #b9caba;padding:35px;text-align:center;color:#718074}dialog{width:min(1140px,96vw);max-height:92vh;border:1px solid #c6d5c9;border-radius:12px;padding:16px;background:#f4f7f3;color:#243f35}dialog::backdrop{background:#18322799}.close-detail{display:block;margin:0 0 12px auto}dialog #analysis{border:0}dialog .legend{margin-top:20px}
@media(min-width:1750px){main{max-width:1850px}.stock-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:760px){.stock-grid{grid-template-columns:1fr}.pool-summary{grid-template-columns:repeat(2,1fr)}.pool-stat{padding:10px 12px}.pool-stat strong{font-size:23px}.overview-head{align-items:start;flex-direction:column}.stock-card{padding:14px}.stock-card canvas{height:300px}h1{font-size:25px}.card-signals{gap:8px}dialog{padding:8px}}

#chart{touch-action:none;user-select:none;-webkit-user-select:none;cursor:grab}#chart:active{cursor:grabbing}
.zoom-toolbar{display:flex;gap:8px;flex-wrap:wrap;margin-top:16px;align-items:center}.zoom-toolbar button{min-width:44px;min-height:44px;padding:8px 12px;font-size:14px}.zoom-toolbar button:disabled{opacity:.4;cursor:default}#zoom-range{margin:8px 0}
/* A phone in landscape or desktop-site mode must still get a full-width chart. */
@media(max-width:1100px),(pointer:coarse){
  .stock-grid{grid-template-columns:minmax(0,1fr)}
  .stock-card{padding:14px;contain-intrinsic-size:auto 520px}
  .stock-card canvas{height:clamp(340px,55svh,480px)}
  .card-head button,.stock-card a{min-height:44px;display:flex;align-items:center}
  .stock-card a{font-size:14px;padding:8px}
  .card-head button{gap:8px}
  .card-signals{font-size:14px;gap:6px 14px}
  .controls button,.controls select,.controls input:not([type=checkbox]){min-height:44px;font-size:16px}
  fieldset label{min-height:46px;display:flex;align-items:center;gap:7px;font-size:15px}
  input[type=checkbox]{width:21px;height:21px;flex-shrink:0}
  .close-detail{position:sticky;top:0;z-index:5;min-height:48px;background:#fff;box-shadow:0 2px 8px #243f3514}
  td button{min-height:44px;display:inline-flex;align-items:center}
}
@media(max-width:600px){
  header{padding:10px 12px;gap:8px}header a{min-height:44px;display:flex;align-items:center}
  main{padding:22px 8px}h1{font-size:25px}.intro{font-size:14px}
  .coverage{padding:10px 12px;overflow-wrap:anywhere}
  .pool-summary{gap:8px;margin:14px 0}.pool-stat{padding:9px 10px;gap:6px}.pool-stat span{font-size:12px}.pool-stat strong{font-size:21px;white-space:nowrap}
  .controls{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;padding:12px;gap:12px}
  .controls form{grid-column:1/-1;min-width:0;width:100%}
  .search-row{display:grid;grid-template-columns:minmax(0,1fr) auto}.search-row button{padding:8px 12px}
  .controls>label{min-width:0}.controls>label:has(#filter-mode){grid-column:1/-1}
  .controls fieldset{grid-column:1/-1;display:grid;grid-template-columns:minmax(0,1fr);gap:8px;min-width:0}
  .controls fieldset legend{margin:0 0 8px}.controls fieldset label{width:100%;padding:9px 12px}
  #clear-filters{justify-self:end;padding:6px 12px}
  .controls .chart-toolbar{grid-column:1/-1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
  .chart-toolbar label{min-width:0;display:flex;flex-direction:column;gap:4px}
  .chart-toolbar input[type=date]{width:100%;min-width:0;font-size:16px}
  .chart-toolbar label:has(#yellow){grid-column:1/-1;min-height:44px;flex-direction:row;align-items:center}
  #filter-note{grid-column:1/-1;overflow-wrap:anywhere}
  .stock-grid{gap:16px}.stock-card{padding:10px 6px;border-radius:8px}.card-head,.card-signals,.card-note{padding-inline:6px}
  .card-head{gap:6px}.card-head button{font-size:20px;min-width:0;flex-wrap:wrap;gap:4px}.stock-card a{font-size:13px;white-space:nowrap}
  .card-signals{font-size:13px}.stock-card canvas{height:clamp(340px,55svh,440px)}
  .overview-head{gap:4px}.overview-head h2{font-size:22px}
  dialog{width:100%;max-width:100%;height:100dvh;max-height:100dvh;margin:0;border:0;border-radius:0;padding:8px;padding-bottom:max(12px,env(safe-area-inset-bottom));overscroll-behavior:contain}
  dialog #analysis{padding:10px 0}.close-detail{width:100%;top:0}.stock-head,.states{margin-inline:4px}
  dialog canvas{height:clamp(350px,58svh,480px)}
  dialog .legend{font-size:12px;gap:8px}.table-wrap{max-height:none}td,th{padding:6px}
}

/* Shared current-year and historical research view. */
.top{color:#7c3aed}.pool-summary{grid-template-columns:repeat(5,minmax(0,1fr))}.states{grid-template-columns:repeat(2,minmax(0,1fr))}.research-note{border:1px solid #ddd0f3;border-left:3px solid #7c3aed;background:#faf7ff;border-radius:8px;padding:14px 18px;margin:18px 0}.research-note h2{font-size:17px;color:#6d28d9}.research-note p{font-size:13px;margin:6px 0}input:disabled{opacity:.45}label:has(input:disabled){color:#7b837e}button:disabled{cursor:default;opacity:.5}
@media(max-width:900px){.pool-summary{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:650px){.states{grid-template-columns:1fr}}
@media(max-width:600px){.controls>label:has(#data-year){grid-column:1/-1}.chart-toolbar label:has(#red){grid-column:1/-1;min-height:44px;flex-direction:row;align-items:center}}

@media(max-width:600px){.controls>label:has(#top-model){grid-column:1/-1}}

/* Exact-date yellow signal prices and observed broker flow, visible by default. */
#yellow-evidence{margin:22px 0;padding:18px;border:1px solid #e0d49a;border-radius:10px;background:#fffdf3;min-width:0}.yellow-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px}.yellow-head h3{margin:0 0 10px}.yellow-head span,.yellow-clock,.player-provenance{font-size:12px;color:#687363}.yellow-picker{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.yellow-picker select{flex:1;min-width:0;max-width:420px;min-height:44px}.player-evidence h4{font-size:17px;margin:20px 0 12px}.yellow-price{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.yellow-price>div{padding:12px;background:#fff;border:1px solid #ece7cf;border-radius:8px}.yellow-price span{display:block;color:#6b7668;font-size:12px}.yellow-price strong{font-size:25px;font-variant-numeric:tabular-nums}.yellow-price small{font-size:12px;font-weight:400}.player-buyers{font-weight:650;color:#795d00}.yellow-actor-scroll{overflow:auto;max-height:420px;border:1px solid #e5e1cb;border-radius:6px;background:#fff}.yellow-actors{min-width:650px;font-variant-numeric:tabular-nums}.yellow-actors td:not(:last-child){text-align:right;white-space:nowrap}.yellow-actors th small{display:block;color:#798375;font-size:11px;font-weight:400}.yellow-actors tbody th{position:static;background:transparent;min-width:140px}.yellow-actors .volume-burst{background:#fff3c2}.burst-badge{font-size:12px;white-space:nowrap}.volume-burst .burst-badge{font-weight:700;color:#7b5800}.yellow-empty{padding:14px;background:#f1f3eb;color:#687363}.player-evidence details{margin-top:12px;padding-top:12px}
@media(max-width:600px){#yellow-evidence{padding:12px 8px}.yellow-head{display:block}.yellow-head span{display:block;margin-bottom:10px}.yellow-picker{display:block}.yellow-picker select{display:block;width:100%;max-width:none;margin-top:6px}.yellow-price{gap:6px}.yellow-price>div{padding:8px}.yellow-price strong{font-size:19px}.yellow-price span{font-size:11px}.yellow-actor-scroll{max-height:380px}.player-evidence h4{font-size:16px}}

/* Model-specific status and event colours match the plotted signals. */
.state-top h3,.state-top .buy,td.top button{color:#7c3aed}.state-v2036 h3,.state-v2036 .buy{color:#c2410c}.state-v296 h3,.state-v296 .buy{color:#0369a1}
