:root{--bg:#05090e;--panel:rgba(5,9,14,.78);--line:rgba(224,236,250,.16);--text:#eef6ff;--muted:#9aabbd;--blue:#b9ddff;--team:#9fd0ff}
*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden;background:var(--bg);color:var(--text);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}button,input{font:inherit;color:inherit}.voice-app{position:relative;width:100%;height:100dvh;overflow:hidden;background:radial-gradient(circle at 50% 42%,#101a25 0,#05090e 65%)}.voice-field{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:none;user-select:none;-webkit-user-select:none}.voice-loading{position:absolute;inset:0;display:grid;place-items:center;pointer-events:none;font:900 8px/1 ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.28em;color:#627183}.voice-loading.error{padding:32px;text-align:center;color:#ffb6b6}.field-context{position:absolute;z-index:18;left:calc(11px + env(safe-area-inset-left));top:calc(12px + env(safe-area-inset-top));max-width:55vw;font:900 8px/1.3 ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.12em;color:#9db0c4;pointer-events:none}.voice-toast{position:absolute;z-index:30;top:calc(11px + env(safe-area-inset-top));left:50%;transform:translate(-50%,-7px);min-height:22px;max-width:72vw;padding:5px 9px;border:1px solid transparent;border-radius:999px;background:rgba(5,9,14,.68);backdrop-filter:blur(10px);font:900 8px/1.25 ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.09em;color:#e8f3ff;opacity:0;transition:opacity .18s ease,transform .18s ease;pointer-events:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.voice-toast.show{opacity:1;transform:translate(-50%,0);border-color:rgba(255,255,255,.10)}.micro-control{position:absolute;z-index:35;width:35px;height:35px;border-radius:50%;border:1px solid var(--line);background:rgba(5,9,14,.56);backdrop-filter:blur(9px);display:grid;place-items:center;touch-action:manipulation}.undo-control{right:calc(10px + env(safe-area-inset-right));top:calc(10px + env(safe-area-inset-top));font-size:17px;color:#d7e3ef}.undo-control:disabled{opacity:.28}.mic-button{position:absolute;z-index:40;left:50%;bottom:calc(11px + env(safe-area-inset-bottom));transform:translateX(-50%);width:52px;height:52px;border-radius:50%;border:1px solid rgba(226,239,253,.18);background:rgba(5,9,14,.72);backdrop-filter:blur(11px);box-shadow:0 8px 30px rgba(0,0,0,.34);touch-action:none;-webkit-tap-highlight-color:transparent}.mic-dot{position:absolute;left:50%;top:50%;width:12px;height:18px;transform:translate(-50%,-56%);border:2px solid #c9d9e9;border-radius:7px}.mic-dot:after{content:"";position:absolute;left:50%;bottom:-7px;width:13px;height:8px;border:2px solid #c9d9e9;border-top:0;border-radius:0 0 9px 9px;transform:translateX(-50%)}.mic-button.listening{border-color:rgba(220,240,255,.75);box-shadow:0 0 0 8px rgba(188,224,255,.08),0 0 34px rgba(188,224,255,.20)}.mic-button.busy{opacity:.6}.ultimate-cell{cursor:pointer}.ultimate-cell[data-omitted="true"]{display:none!important}.ultimate-hex{fill:#0e1721;stroke:rgba(255,255,255,.14);stroke-width:1.05;vector-effect:non-scaling-stroke}.ultimate-cell.selected .ultimate-hex{stroke:#fff;stroke-width:2}.ultimate-cell.team-member .ultimate-hex{fill:#132534;stroke:var(--team);stroke-width:2}.ultimate-sprite{image-rendering:pixelated;pointer-events:none}.ultimate-name{font-size:5.8px;font-weight:900;fill:#c7d4e1;text-anchor:middle;paint-order:stroke;stroke:#05090e;stroke-width:2px;pointer-events:none}.ultimate-era{font-size:4.8px;font-weight:900;fill:#82a3bf;text-anchor:middle;paint-order:stroke;stroke:#05090e;stroke-width:1.8px;pointer-events:none}.partition-label{font:900 7px/1 ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.12em;fill:#8fa5ba;text-anchor:middle;paint-order:stroke;stroke:#05090e;stroke-width:2px}.field-detail{position:absolute;z-index:26;left:50%;bottom:calc(74px + env(safe-area-inset-bottom));transform:translateX(-50%);width:min(440px,calc(100% - 28px));max-height:34vh;overflow:auto;padding:10px 12px;border:1px solid rgba(255,255,255,.14);border-radius:14px;background:rgba(4,8,12,.88);backdrop-filter:blur(12px);font:750 10px/1.45 ui-monospace,SFMono-Regular,Consolas,monospace}.field-detail h2{margin:0 0 5px;font-size:10px;letter-spacing:.1em}.field-detail p{margin:3px 0;color:#aebfd0}.professor-layer,.starter-layer{position:absolute;z-index:28;left:50%;transform:translateX(-50%);width:min(520px,calc(100% - 28px));pointer-events:auto}.professor-layer{top:12%;padding:14px 14px 12px;border:1px solid rgba(204,229,250,.16);border-radius:18px;background:rgba(6,11,17,.83);backdrop-filter:blur(13px);box-shadow:0 20px 70px rgba(0,0,0,.36)}.professor-layer p{margin:2px 50px 12px 0;color:#dce8f4;font-size:12px;line-height:1.45}.professor-mark{font:950 8px/1 ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.17em;color:#8ca8c0;margin-bottom:7px}.professor-partner{position:absolute;right:8px;top:7px;width:48px;height:48px;image-rendering:pixelated;object-fit:contain}.starter-layer{top:10%;}.starter-prompts{display:flex;flex-wrap:wrap;justify-content:center;gap:7px}.starter-prompts button{min-height:31px;max-width:100%;border:1px solid rgba(255,255,255,.14);border-radius:999px;background:rgba(7,13,20,.82);backdrop-filter:blur(10px);padding:7px 11px;font-size:10px;font-weight:800;text-align:left}.starter-prompts button:hover,.starter-prompts button:focus-visible{border-color:rgba(210,234,255,.5);outline:none}.debug-harness{position:absolute;z-index:60;left:8px;right:8px;bottom:calc(72px + env(safe-area-inset-bottom));padding:9px;border:1px solid rgba(255,255,255,.17);border-radius:12px;background:rgba(4,8,12,.94);backdrop-filter:blur(12px);font:700 10px/1.35 ui-monospace,SFMono-Regular,Consolas,monospace}.debug-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.debug-title{font-size:8px;letter-spacing:.12em;color:#9cabbc}.debug-toggle{height:26px;border:1px solid rgba(255,255,255,.14);border-radius:999px;background:#0b121a;padding:0 9px;font:900 8px/1 ui-monospace,SFMono-Regular,Consolas,monospace}.debug-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:5px}.debug-row input,.debug-row button{height:34px;border:1px solid rgba(255,255,255,.14);border-radius:8px;background:#0b121a;padding:0 9px}.debug-harness pre{margin:7px 0 5px;max-height:130px;overflow:auto;color:#aebdcd;white-space:pre-wrap}.debug-harness .debug-parsed{max-height:86px;padding:6px;border-left:2px solid rgba(159,208,255,.38);color:#d5e6f7}.debug-harness a{color:#d7e8f8;text-decoration:none;font-size:8px}.debug-harness.collapsed{left:auto;right:calc(10px + env(safe-area-inset-right));bottom:calc(76px + env(safe-area-inset-bottom));width:auto;padding:4px;border-radius:999px;background:rgba(4,8,12,.72)}.debug-harness.collapsed .debug-title,.debug-harness.collapsed .debug-row,.debug-harness.collapsed pre,.debug-harness.collapsed a{display:none}.debug-harness.collapsed .debug-head{display:block}.debug-harness.collapsed .debug-toggle{height:30px}@media(min-width:760px){.voice-app{max-width:1200px;margin:auto;border-inline:1px solid rgba(255,255,255,.08)}.mic-button{width:56px;height:56px}.professor-layer{top:15%}}@media(prefers-reduced-motion:reduce){.voice-toast{transition:none}}

/* v0.7 Crystal Voice Core */
.voice-state{position:absolute;z-index:42;left:50%;bottom:calc(69px + env(safe-area-inset-bottom));transform:translateX(-50%);max-width:82vw;padding:5px 10px;border-radius:999px;background:rgba(5,9,14,.70);backdrop-filter:blur(10px);font:900 8px/1.25 ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.12em;color:#dbe9f7;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;pointer-events:none}
.starter-layer{top:auto;bottom:calc(104px + env(safe-area-inset-bottom));width:min(640px,calc(100% - 30px));pointer-events:none}
.starter-prompts{pointer-events:auto;gap:6px}
.starter-prompts button{min-height:28px;padding:6px 10px;background:rgba(5,9,14,.72);font-size:9px;color:#dbe7f2;box-shadow:0 4px 22px rgba(0,0,0,.18)}
.mic-button{touch-action:manipulation}
.mic-button[data-state="listening"]{border-color:rgba(174,222,255,.9);box-shadow:0 0 0 8px rgba(174,222,255,.08),0 0 34px rgba(174,222,255,.28)}
.mic-button[data-state="processing"]{opacity:.72}
.mic-button[data-state="error"]{border-color:rgba(255,120,120,.75);box-shadow:0 0 0 7px rgba(255,90,90,.08)}
@media(max-width:520px){.starter-layer{bottom:calc(102px + env(safe-area-inset-bottom))}.starter-prompts button{font-size:8px;max-width:31vw;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.voice-state{bottom:calc(67px + env(safe-area-inset-bottom))}}

/* v0.7.2 Voice-First Historical Timeline */
.ultimate-cell{cursor:default;pointer-events:none}
.field-detail{display:none!important}
.history-timeline{position:absolute;z-index:16;inset:0;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;padding:calc(54px + env(safe-area-inset-top)) 18px calc(190px + env(safe-area-inset-bottom)) 18px;background:radial-gradient(circle at 50% 10%,rgba(22,37,52,.48),rgba(5,9,14,0) 32%);scrollbar-width:none}
.history-timeline::-webkit-scrollbar{display:none}.history-timeline[hidden]{display:none}
.timeline-header{position:relative;margin:0 0 30px 42px;max-width:560px}.timeline-eyebrow{font:900 8px/1 ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.20em;color:#7892aa;margin-bottom:8px}.timeline-header h1{margin:0;font-size:clamp(26px,7vw,46px);line-height:.98;letter-spacing:-.035em;color:#f2f7fc;text-transform:uppercase}.timeline-header p{margin:10px 0 0;max-width:42ch;font-size:12px;line-height:1.45;color:#90a2b4}
.timeline-era{position:relative;margin:0 0 44px;padding-left:42px;max-width:720px}.timeline-era:before{content:"";position:absolute;left:13px;top:-24px;bottom:-48px;width:1px;background:linear-gradient(to bottom,rgba(224,238,252,.18),rgba(224,238,252,.48) 15%,rgba(224,238,252,.20))}.timeline-era:last-child:before{bottom:12px}.timeline-node{position:absolute;left:8px;top:10px;width:11px;height:11px;border:2px solid #dcecff;border-radius:50%;background:#081019;box-shadow:0 0 0 5px rgba(151,203,246,.07),0 0 18px rgba(151,203,246,.20)}
.timeline-era-head{position:relative;margin-bottom:18px;padding-bottom:11px;border-bottom:1px solid rgba(226,239,253,.10)}.timeline-era-head h2{margin:0;font:900 16px/1.05 ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.08em;color:#e9f4ff}.timeline-era-code{margin-top:6px;font:800 8px/1 ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.16em;color:#6f8aa3}.timeline-era-count{position:absolute;right:0;top:1px;font:900 8px/1 ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.12em;color:#9eb0c0}
.timeline-section-label{margin:0 0 10px;font:900 8px/1 ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.16em;color:#b6d9f7}.timeline-carry-label{margin-top:18px;color:#677c90}.timeline-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px 8px}.timeline-pokemon{position:relative;min-width:0;min-height:100px;padding:9px 4px 8px;border:1px solid rgba(224,238,252,.10);border-radius:15px;background:linear-gradient(160deg,rgba(18,30,42,.78),rgba(7,13,19,.72));display:flex;flex-direction:column;align-items:center;justify-content:center;box-shadow:0 8px 24px rgba(0,0,0,.14)}.timeline-pokemon.muted{min-height:82px;background:rgba(8,14,20,.52);border-color:rgba(224,238,252,.06);opacity:.62}.timeline-sprite{width:58px;height:58px;object-fit:contain;image-rendering:pixelated;filter:drop-shadow(0 7px 6px rgba(0,0,0,.32))}.timeline-pokemon.muted .timeline-sprite{width:44px;height:44px}.timeline-pokemon-name{width:100%;margin-top:5px;text-align:center;font-size:10px;line-height:1.12;font-weight:760;color:#eef5fb;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.timeline-pokemon.muted .timeline-pokemon-name{font-size:9px;color:#a8b6c3}.timeline-badge{position:absolute;right:5px;top:5px;padding:3px 5px;border-radius:999px;background:#b9ddff;color:#081019;font:950 6px/1 ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.11em}.timeline-none{grid-column:1/-1;padding:12px 14px;border:1px dashed rgba(224,238,252,.12);border-radius:12px;font-size:10px;line-height:1.4;color:#6f8192}
.timeline-mode .field-context{position:fixed;z-index:23;background:rgba(5,9,14,.72);backdrop-filter:blur(8px);padding:5px 8px;border-radius:999px}.timeline-mode .starter-layer,.timeline-mode .voice-state,.timeline-mode .mic-button,.timeline-mode .undo-control{position:fixed}.timeline-mode .starter-layer{z-index:45}.timeline-mode .voice-state{z-index:46}.timeline-mode .mic-button,.timeline-mode .undo-control{z-index:47}
@media(min-width:560px){.history-timeline{padding-left:max(24px,calc((100vw - 760px)/2));padding-right:max(24px,calc((100vw - 760px)/2))}.timeline-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}@media(max-width:380px){.history-timeline{padding-left:12px;padding-right:12px}.timeline-era{padding-left:36px}.timeline-era:before{left:11px}.timeline-node{left:6px}.timeline-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.timeline-header{margin-left:36px}}

/* PokéField public static surface v0.1 */
:root{--pf-aqua:#75e5db;--pf-ink:#06151a;--pf-glass:rgba(3,14,18,.78)}
.pokefield-app{background:radial-gradient(circle at 50% 40%,#123238 0,#07171b 44%,#041014 100%)}
.pokefield-brand{position:absolute;z-index:24;left:calc(12px + env(safe-area-inset-left));top:calc(11px + env(safe-area-inset-top));pointer-events:none;display:flex;flex-direction:column;gap:3px;text-shadow:0 2px 12px rgba(0,0,0,.4)}
.pokefield-brand strong{font:950 13px/1 ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.16em;color:#f4fffe}
.pokefield-brand span{font:850 6px/1 ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.18em;color:#78aaa8}
.pokefield-app .field-context{top:calc(48px + env(safe-area-inset-top));color:#76a5a3}
.pokefield-app .undo-control{border-color:rgba(117,229,219,.22);color:#bffcf7;background:rgba(3,16,20,.68)}
.field-command{position:absolute;z-index:48;left:50%;bottom:calc(18px + env(safe-area-inset-bottom));transform:translateX(-50%);display:grid;grid-template-columns:minmax(0,1fr) 42px;width:min(720px,calc(100% - 24px));height:48px;border:1px solid rgba(117,229,219,.26);border-radius:16px;background:var(--pf-glass);backdrop-filter:blur(14px);box-shadow:0 16px 50px rgba(0,0,0,.38),0 0 0 1px rgba(255,255,255,.02) inset;overflow:hidden}
.field-command:focus-within{border-color:rgba(117,229,219,.72);box-shadow:0 16px 50px rgba(0,0,0,.38),0 0 26px rgba(117,229,219,.10)}
.field-command input{min-width:0;border:0;outline:0;background:transparent;padding:0 4px 0 14px;color:#effffd;font-size:14px;font-weight:750;caret-color:var(--pf-aqua)}
.field-command input::placeholder{color:#789592;font-weight:650}
.field-command button{border:0;border-left:1px solid rgba(117,229,219,.14);background:rgba(117,229,219,.08);color:#adfbf5;font-size:17px;font-weight:950;cursor:pointer}
.field-command button:disabled{opacity:.35}
.pokefield-footnote{position:absolute;z-index:24;left:50%;bottom:calc(70px + env(safe-area-inset-bottom));transform:translateX(-50%);width:calc(100% - 28px);text-align:center;pointer-events:none;font:850 6px/1 ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.16em;color:#527c79}
.pokefield-app .starter-layer{bottom:calc(92px + env(safe-area-inset-bottom));}
.pokefield-app .starter-prompts button{background:rgba(3,18,22,.76);border-color:rgba(117,229,219,.14);color:#d8fbf7}
.pokefield-app .starter-prompts button:hover,.pokefield-app .starter-prompts button:focus-visible{border-color:rgba(117,229,219,.55)}
.pokefield-app .voice-state{display:none}
.pokefield-app .mic-button{bottom:calc(77px + env(safe-area-inset-bottom));width:44px;height:44px;border-color:rgba(117,229,219,.25)}
@media(max-width:520px){.field-command{height:46px;bottom:calc(12px + env(safe-area-inset-bottom));border-radius:14px}.field-command input{font-size:13px}.pokefield-footnote{bottom:calc(65px + env(safe-area-inset-bottom))}.pokefield-app .starter-layer{bottom:calc(84px + env(safe-area-inset-bottom));}.pokefield-brand strong{font-size:12px}}

/* PokéField public static surface v0.1.1 */
.source-link{position:absolute;z-index:36;right:calc(54px + env(safe-area-inset-right));top:calc(10px + env(safe-area-inset-top));width:35px;height:35px;border:1px solid rgba(117,229,219,.22);border-radius:50%;background:rgba(3,16,20,.68);backdrop-filter:blur(9px);display:grid;place-items:center;text-decoration:none;-webkit-tap-highlight-color:transparent}
.source-link img{width:17px;height:17px;filter:invert(1);opacity:.82}
.source-link:hover,.source-link:focus-visible{border-color:rgba(117,229,219,.62);outline:none}.source-link:active{transform:scale(.96)}
.field-decorations{pointer-events:none}.field-decorations>*{vector-effect:non-scaling-stroke;fill:none}
.pokeball-outline{stroke:rgba(117,229,219,.22);stroke-width:1.15}
.pokeball-band{stroke:rgba(117,229,219,.22);stroke-width:1.15}
.pokeball-button{stroke:rgba(191,252,247,.34);stroke-width:1.4;fill:rgba(3,16,20,.12)}
.type-orbit-ring{stroke:rgba(117,229,219,.12);stroke-width:1;stroke-dasharray:4 5}
.partition-label.type-orbit-label,.partition-label.type-center-label{fill:#8fd1cc;stroke:#041014;stroke-width:2.2px;font-size:6.6px;letter-spacing:.10em}
.ultimate-cell[data-dual-type="true"] .ultimate-hex{stroke:rgba(191,252,247,.24)}
.voice-field[data-layout="pokeball"] .ultimate-name{display:none}
.voice-field[data-layout="pokeball"] .ultimate-hex{stroke:rgba(117,229,219,.11);fill:#0b1a20}
.voice-field[data-layout="pokeball"] .ultimate-sprite{filter:drop-shadow(0 1px 1px rgba(0,0,0,.35))}
@media(max-width:520px){.source-link{right:calc(53px + env(safe-area-inset-right));width:34px;height:34px}.source-link img{width:16px;height:16px}.partition-label.type-orbit-label,.partition-label.type-center-label{font-size:6.2px}}


/* PokéField v0.1.4 — desktop field clearance
   Desktop only: reserve a real control dock below the SVG field.
   Mobile layout is intentionally unchanged. */
@media (min-width:760px){
  .pokefield-app::after{
    content:"";
    position:absolute;
    z-index:20;
    left:0;
    right:0;
    bottom:0;
    height:136px;
    pointer-events:none;
    background:
      linear-gradient(to bottom,
        rgba(4,16,20,0) 0,
        rgba(4,16,20,.78) 18px,
        rgba(4,16,20,.96) 42px,
        rgba(4,16,20,1) 100%);
    border-top:1px solid rgba(117,229,219,.07);
  }

  /* The projection engine now measures only the unobstructed field area. */
  .pokefield-app .voice-field{
    top:0;
    right:0;
    bottom:136px;
    left:0;
    width:100%;
    height:auto;
  }

  /* Keep all interaction controls inside the reserved dock. */
  .pokefield-app .starter-layer{
    z-index:30;
    bottom:88px;
  }
  .pokefield-app .pokefield-footnote{
    z-index:31;
    bottom:64px;
  }
  .pokefield-app .field-command{
    z-index:32;
    bottom:10px;
  }

  /* Desktop gets a little more breathing room without touching iOS. */
  .pokefield-app .starter-prompts{
    gap:8px;
  }
  .pokefield-app .starter-prompts button{
    min-height:30px;
    padding:6px 13px;
    font-size:10px;
  }
}

/* PokéField v0.1.5 — about / SEO surface */
.about-link{position:absolute;z-index:36;right:calc(98px + env(safe-area-inset-right));top:calc(10px + env(safe-area-inset-top));height:35px;padding:0 11px;border:1px solid rgba(117,229,219,.22);border-radius:999px;background:rgba(3,16,20,.68);backdrop-filter:blur(9px);display:flex;align-items:center;justify-content:center;text-decoration:none;font:900 8px/1 ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.14em;color:#d8fbf7;-webkit-tap-highlight-color:transparent}
.about-link:hover,.about-link:focus-visible{border-color:rgba(117,229,219,.62);outline:none}.about-link:active{transform:scale(.96)}
@media(max-width:520px){.about-link{right:calc(96px + env(safe-area-inset-right));height:34px;padding:0 10px;font-size:7px}}

.about-page{min-height:100dvh;overflow:auto;background:radial-gradient(circle at 50% 0%,#123238 0,#07171b 44%,#041014 100%);color:#effffd}
.about-shell{max-width:940px;margin:0 auto;padding:calc(28px + env(safe-area-inset-top)) 18px calc(40px + env(safe-area-inset-bottom))}
.about-topbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:28px}
.about-mark{text-decoration:none;color:#effffd;display:flex;flex-direction:column;gap:4px}.about-mark strong{font:950 16px/1 ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.16em}.about-mark span{font:850 7px/1 ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.18em;color:#78aaa8}
.about-actions{display:flex;flex-wrap:wrap;gap:10px}.about-actions a{height:38px;padding:0 14px;border:1px solid rgba(117,229,219,.22);border-radius:999px;background:rgba(3,16,20,.68);backdrop-filter:blur(9px);display:inline-flex;align-items:center;justify-content:center;text-decoration:none;font:900 11px/1 ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.08em;color:#d8fbf7}
.about-hero{margin-bottom:20px;padding:22px;border:1px solid rgba(117,229,219,.14);border-radius:24px;background:rgba(3,14,18,.68);backdrop-filter:blur(12px);box-shadow:0 18px 60px rgba(0,0,0,.25)}
.about-kicker{margin-bottom:10px;font:900 8px/1 ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.18em;color:#7bc9c4}
.about-hero h1{margin:0 0 12px;font-size:clamp(28px,6vw,56px);line-height:.95;letter-spacing:-.04em}
.about-hero p{max-width:70ch;margin:0 0 14px;color:#c7dad8;font-size:15px;line-height:1.6}
.about-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin:22px 0}
.about-card{padding:18px;border:1px solid rgba(117,229,219,.12);border-radius:20px;background:rgba(3,14,18,.58)}
.about-card h2,.about-card h3{margin:0 0 10px}.about-card p,.about-card li{color:#c7dad8;line-height:1.6}
.about-card ul{margin:0;padding-left:18px}
.about-wide{grid-column:1/-1}
.about-footer{margin-top:24px;color:#82a7a4;font-size:13px;line-height:1.5}
@media(max-width:760px){.about-grid{grid-template-columns:1fr}.about-topbar{align-items:flex-start;flex-direction:column}.about-actions a{height:36px;font-size:10px}.about-hero{padding:18px}.about-shell{padding-left:14px;padding-right:14px}}

/* PokéField v0.1.6 — one-tap full-field shape + type rail */
.pokefield-app .starter-prompts button.field-icon-action{
  width:40px;
  min-width:40px;
  max-width:40px;
  height:36px;
  min-height:36px;
  padding:0;
  display:grid;
  place-items:center;
  font-size:17px;
  line-height:1;
  text-align:center;
  border-color:rgba(117,229,219,.18);
}
.pokefield-app .starter-prompts button.field-icon-action.active{
  border-color:rgba(117,229,219,.82);
  background:rgba(117,229,219,.14);
  box-shadow:0 0 0 1px rgba(117,229,219,.10) inset,0 0 20px rgba(117,229,219,.08);
}
.pokefield-app .starter-prompts button.field-icon-action:hover,
.pokefield-app .starter-prompts button.field-icon-action:focus-visible{
  border-color:rgba(117,229,219,.70);
}
@media(max-width:520px){
  .pokefield-app .starter-prompts button.field-icon-action{
    width:38px;
    min-width:38px;
    max-width:38px;
    height:34px;
    min-height:34px;
    font-size:16px;
  }
}

/* PokéField v0.2.0 — Type Shapes
   Meaning can now change field shape. Structural shapes remain the ALL-state
   presentation layer; type commands activate semantic geometry automatically. */
.semantic-shape-label{
  fill:#bffcf7;
  stroke:#041014;
  stroke-width:2.4px;
  font-size:7.4px;
  letter-spacing:.15em;
}
.semantic-vein,.semantic-head-ring{
  stroke:rgba(191,252,247,.20);
  stroke-width:1.15;
  fill:none;
}
.voice-field[data-layout^="type-shape-"] .ultimate-hex{
  fill:#0a1a1f;
  stroke:rgba(191,252,247,.16);
}
.voice-field[data-layout^="type-shape-"] .ultimate-name{
  display:none;
}
.voice-field[data-layout^="type-shape-"] .ultimate-sprite{
  filter:drop-shadow(0 1px 2px rgba(0,0,0,.42));
}
.voice-field[data-layout="type-shape-water"] .semantic-shape-label{fill:#a9c7ff}
.voice-field[data-layout="type-shape-fire"] .semantic-shape-label{fill:#ffb18a}
.voice-field[data-layout="type-shape-grass"] .semantic-shape-label{fill:#aee89d}
.voice-field[data-layout="type-shape-electric"] .semantic-shape-label{fill:#ffe67b}
.voice-field[data-layout="type-shape-dragon"] .semantic-shape-label{fill:#c4a8ff}

@media(max-width:520px){
  .pokefield-app .starter-prompts{gap:5px}
  .pokefield-app .starter-prompts button.field-icon-action{
    width:36px;
    min-width:36px;
    max-width:36px;
    height:34px;
    min-height:34px;
    font-size:15px;
  }
}
@media(max-width:360px){
  .pokefield-app .starter-prompts{gap:4px}
  .pokefield-app .starter-prompts button.field-icon-action{
    width:31px;
    min-width:31px;
    max-width:31px;
    height:32px;
    min-height:32px;
    font-size:14px;
  }
}

/* ============================================================
   PokéField CALL prototype v0.3
   The field is no longer searched. A CALL is broadcast into the
   currently answering population; matching Pokémon acknowledge it.
   ============================================================ */
.pokefield-app .field-command,
.pokefield-app .starter-layer,
.pokefield-app .undo-control,
.pokefield-app .voice-state,
.pokefield-app .mic-button{display:none!important}

.pokefield-app .voice-field{bottom:82px;height:auto}
.pokefield-app .pokefield-footnote{bottom:calc(76px + env(safe-area-inset-bottom));font-size:5.5px;letter-spacing:.14em;color:#8f7043;opacity:.78}

.call-dock{
  position:absolute;z-index:72;left:50%;bottom:calc(10px + env(safe-area-inset-bottom));transform:translateX(-50%);
  width:min(570px,calc(100% - 18px));height:60px;display:grid;grid-template-columns:42px minmax(0,1fr) 42px;gap:7px;align-items:center;
  -webkit-tap-highlight-color:transparent
}
.call-main{
  height:60px;display:grid;grid-template-columns:minmax(0,1fr) 64px;overflow:hidden;border-radius:18px;
  border:1px solid rgba(255,171,64,.88);background:linear-gradient(180deg,#f59b27,#d66f12);box-shadow:0 12px 38px rgba(0,0,0,.44),0 0 28px rgba(244,137,26,.14)
}
.call-action,.call-target,.call-undo,.call-reset{border:0;cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent}
.call-action{display:flex;align-items:center;justify-content:center;gap:10px;background:transparent;color:#160d05;text-shadow:0 1px rgba(255,255,255,.16)}
.call-action strong{font:950 22px/1 ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.16em}
.call-flute{font-size:25px;line-height:1;filter:saturate(.92) drop-shadow(0 1px rgba(255,255,255,.22))}
.call-action.armed{background:linear-gradient(180deg,rgba(255,194,86,.42),rgba(255,255,255,0))}
.call-action:active{filter:brightness(.92)}
.call-target{position:relative;display:grid;place-items:center;background:rgba(47,22,5,.23);border-left:1px solid rgba(64,28,4,.25);color:#211105}
.call-target:active{background:rgba(47,22,5,.34)}
.call-target-icon{width:48px;height:48px;display:grid;place-items:center;font-size:26px;line-height:1}
.call-target-icon img{width:45px;height:45px;object-fit:contain;image-rendering:pixelated;filter:drop-shadow(0 3px 2px rgba(51,22,3,.28))}
.call-undo,.call-reset{width:42px;height:42px;border-radius:50%;border:1px solid rgba(255,171,64,.30);background:rgba(23,18,13,.74);backdrop-filter:blur(10px);color:#eeb46e;font-size:20px;box-shadow:0 8px 24px rgba(0,0,0,.22)}
.call-undo:disabled,.call-reset:disabled{opacity:.18;cursor:default}
.call-undo:not(:disabled):active,.call-reset:not(:disabled):active{transform:scale(.94)}

.call-chain{position:absolute;z-index:55;left:50%;bottom:calc(82px + env(safe-area-inset-bottom));transform:translateX(-50%);max-width:calc(100% - 28px);height:37px;display:flex;align-items:center;justify-content:center;gap:4px;padding:3px 7px;border-radius:999px;background:rgba(4,18,20,.54);backdrop-filter:blur(9px);border:1px solid rgba(255,171,64,.12);overflow-x:auto;scrollbar-width:none}
.call-chain[hidden]{display:none}.call-chain::-webkit-scrollbar{display:none}
.call-chain-node{flex:0 0 auto;width:29px;height:29px;padding:0;display:grid;place-items:center;border:1px solid rgba(255,171,64,.21);border-radius:50%;background:rgba(12,24,24,.76);color:#f5bd77;font-size:15px;line-height:1}
.call-chain-node img{width:26px;height:26px;object-fit:contain;image-rendering:pixelated}.call-chain-root{font-size:10px;color:#8bd2cb}.call-chain-arrow{color:#7e6a52;font-size:12px}

.call-picker{position:absolute;z-index:86;inset:calc(65px + env(safe-area-inset-top)) 9px calc(82px + env(safe-area-inset-bottom));border:1px solid rgba(255,171,64,.22);border-radius:24px;background:radial-gradient(circle at 50% 110%,rgba(130,70,17,.20),rgba(4,17,20,.96) 50%,rgba(3,12,15,.985));backdrop-filter:blur(18px);box-shadow:0 24px 90px rgba(0,0,0,.56);overflow:hidden}
.call-picker[hidden]{display:none}
.call-picker-head{height:54px;display:grid;grid-template-columns:46px minmax(0,1fr) 46px;align-items:center;border-bottom:1px solid rgba(255,171,64,.10);background:rgba(0,0,0,.08)}
.call-picker-back,.call-picker-close{width:36px;height:36px;margin:auto;border:1px solid rgba(255,171,64,.16);border-radius:50%;background:rgba(9,25,27,.72);color:#efb46d;font-size:24px;line-height:1}
.call-picker-back:disabled{opacity:.18}
.call-picker-path{text-align:center;font-size:18px;letter-spacing:.16em;color:#e4b271;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.call-picker-grid{height:calc(100% - 54px);overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;padding:14px;display:grid;grid-template-columns:repeat(auto-fill,minmax(58px,1fr));align-content:start;gap:9px;scrollbar-width:none}
.call-picker-grid::-webkit-scrollbar{display:none}
.call-picker-tile{position:relative;aspect-ratio:1;border:1px solid rgba(255,171,64,.15);border-radius:17px;background:linear-gradient(155deg,rgba(15,38,40,.92),rgba(6,21,23,.80));display:grid;place-items:center;padding:4px;color:#f0c084;box-shadow:0 5px 20px rgba(0,0,0,.16)}
.call-picker-tile:active{transform:scale(.94);border-color:rgba(255,171,64,.68);background:rgba(111,59,13,.34)}
.call-picker-glyph{font-size:27px;line-height:1;filter:drop-shadow(0 3px 5px rgba(0,0,0,.28))}
.call-root-tile{border-color:rgba(255,171,64,.26);background:radial-gradient(circle at 50% 38%,rgba(124,74,22,.29),rgba(7,27,29,.88) 66%)}
.call-root-tile .call-picker-glyph{font-size:34px}
.call-generation-tile .call-picker-glyph{width:38px;height:38px;border-radius:50%;display:grid;place-items:center;border:1px solid rgba(255,171,64,.34);font:950 18px/1 ui-monospace,SFMono-Regular,Consolas,monospace;color:#ffc677}
.call-pokemon-tile{border-color:rgba(117,229,219,.10);background:rgba(6,25,27,.72)}
.call-pokemon-tile img{width:52px;height:52px;object-fit:contain;image-rendering:pixelated;filter:drop-shadow(0 5px 5px rgba(0,0,0,.30))}

.call-wave{position:absolute;z-index:44;left:50%;bottom:28px;width:min(98vw,760px);aspect-ratio:1;transform:translate(-50%,50%);pointer-events:none;opacity:0}
.call-wave i{position:absolute;inset:50%;border:1px solid rgba(255,180,85,.58);border-radius:50%;transform:translate(-50%,-50%) scale(.06);opacity:0;box-shadow:0 0 18px rgba(255,151,38,.12)}
.call-wave.active{opacity:1}
.call-wave.active i{animation:pf-call-wave .72s cubic-bezier(.12,.72,.19,1) forwards}
.call-wave.active i:nth-child(2){animation-delay:.08s}.call-wave.active i:nth-child(3){animation-delay:.16s}
@keyframes pf-call-wave{0%{width:8%;height:8%;opacity:.82}75%{opacity:.34}100%{width:100%;height:100%;opacity:0}}

.call-response-ring{fill:none;stroke:#f7a33a;stroke-width:1.8;opacity:0;pointer-events:none;vector-effect:non-scaling-stroke;transform-box:fill-box;transform-origin:center}
.ultimate-cell.call-ack .call-response-ring{animation:pf-call-ack .62s ease-out var(--call-delay,0ms) both}
@keyframes pf-call-ack{0%{opacity:0;transform:scale(.36)}18%{opacity:.95}100%{opacity:0;transform:scale(1.85)}}

.ultimate-cell{transition:opacity .28s ease,filter .28s ease}
.ultimate-cell.call-muted{opacity:.18;filter:saturate(.32) brightness(.64)}
.ultimate-cell.call-current{opacity:1;filter:saturate(1.13) brightness(1.10)}
.ultimate-cell.call-current .ultimate-hex{stroke:rgba(255,174,65,.50);stroke-width:1.35;fill:#102225}
.ultimate-cell.call-current .ultimate-sprite{filter:drop-shadow(0 0 4px rgba(255,165,48,.42)) drop-shadow(0 2px 2px rgba(0,0,0,.44))}

@media(max-width:520px){
  .pokefield-app .voice-field{bottom:74px}
  .call-dock{bottom:calc(7px + env(safe-area-inset-bottom));height:56px;grid-template-columns:38px minmax(0,1fr) 38px;gap:5px}
  .call-main{height:56px;grid-template-columns:minmax(0,1fr) 59px;border-radius:17px}
  .call-action{gap:8px}.call-action strong{font-size:20px;letter-spacing:.14em}.call-flute{font-size:23px}
  .call-target-icon{width:44px;height:44px;font-size:24px}.call-target-icon img{width:42px;height:42px}
  .call-undo,.call-reset{width:38px;height:38px;font-size:18px}
  .call-chain{bottom:calc(72px + env(safe-area-inset-bottom));height:34px}
  .pokefield-app .pokefield-footnote{display:none}
  .call-picker{inset:calc(58px + env(safe-area-inset-top)) 7px calc(72px + env(safe-area-inset-bottom));border-radius:21px}
  .call-picker-grid{grid-template-columns:repeat(5,minmax(0,1fr));gap:7px;padding:11px}
  .call-picker-tile{border-radius:15px}.call-picker-glyph{font-size:25px}.call-root-tile .call-picker-glyph{font-size:32px}
  .call-pokemon-tile img{width:46px;height:46px}
  .about-link{right:calc(54px + env(safe-area-inset-right))}
  .source-link{display:none}
}
@media(max-width:365px){.call-picker-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.call-action strong{font-size:18px}.call-main{grid-template-columns:minmax(0,1fr) 54px}}
@media(min-width:760px){
  .pokefield-app::after{height:96px}
  .pokefield-app .voice-field{bottom:96px}
  .call-dock{bottom:18px}
  .call-chain{bottom:84px}
  .pokefield-app .pokefield-footnote{bottom:8px;left:calc(50% + 320px);width:auto;transform:none;white-space:nowrap}
  .call-picker{left:50%;right:auto;width:min(760px,calc(100% - 38px));transform:translateX(-50%);bottom:108px}
  .call-picker-grid{grid-template-columns:repeat(auto-fill,minmax(70px,1fr));gap:11px;padding:18px}
  .call-picker-tile{border-radius:19px}.call-picker-glyph{font-size:31px}.call-root-tile .call-picker-glyph{font-size:39px}
  .call-pokemon-tile img{width:60px;height:60px}
}
@media(prefers-reduced-motion:reduce){.ultimate-cell{transition:none}.call-wave{display:none}.ultimate-cell.call-ack .call-response-ring{animation:none}}

/* ============================================================
   PokéField CALL v0.3.1 — radial game UI visual target
   Reference-driven mobile revision: huge field, disabled CALL,
   plus-triggered parent/child fan, no blocking picker surface.
   ============================================================ */
:root{
  --pf-call-orange:#f59a24;
  --pf-call-orange-2:#d97113;
  --pf-call-aqua:#71e6dc;
  --pf-call-ink:#081619;
}

.pokefield-app{
  background:
    radial-gradient(circle at 50% 42%,rgba(20,63,66,.72) 0,rgba(6,26,31,.94) 42%,#031014 82%),
    #031014;
}
.pokefield-app::before{
  content:"";position:absolute;inset:0;pointer-events:none;z-index:0;
  background-image:radial-gradient(circle,rgba(113,230,220,.14) 0 1px,transparent 1.4px);
  background-size:43px 43px;opacity:.055;
  mask-image:linear-gradient(to bottom,transparent 0,#000 20%,#000 78%,transparent 100%);
}

/* Header deliberately sits outside the main field. */
.pokefield-brand{
  left:calc(20px + env(safe-area-inset-left));top:calc(20px + env(safe-area-inset-top));gap:5px;
}
.pokefield-brand strong{font-size:15px;letter-spacing:.19em}
.pokefield-brand span{font-size:6.5px;letter-spacing:.20em;color:#75a9a7}
.pokefield-app .field-context{
  left:calc(20px + env(safe-area-inset-left));top:calc(75px + env(safe-area-inset-top));
  min-height:28px;display:flex;align-items:center;padding:0 10px;border-radius:999px;
  border:1px solid rgba(113,230,220,.10);background:rgba(2,14,17,.24);backdrop-filter:blur(7px);
  color:#8ed1cc;font-size:8px;letter-spacing:.16em;
}
.about-link{
  right:calc(18px + env(safe-area-inset-right));top:calc(20px + env(safe-area-inset-top));height:42px;padding:0 15px;
  border-color:rgba(113,230,220,.32);background:rgba(3,18,21,.48);font-size:8px;box-shadow:0 0 20px rgba(113,230,220,.05)
}
.source-link{display:none!important}

/* Give the field an explicit, tall viewport. The Poké Ball therefore
   fills the screen width instead of shrinking into the top region. */
.pokefield-app .voice-field{
  top:calc(102px + env(safe-area-inset-top))!important;
  right:0!important;
  bottom:calc(150px + env(safe-area-inset-bottom))!important;
  left:0!important;
  width:100%!important;
  height:auto!important;
  overflow:visible;
}
.pokeball-outline{stroke:rgba(113,230,220,.58);stroke-width:1.6;filter:drop-shadow(0 0 5px rgba(113,230,220,.16))}
.pokeball-band{stroke:rgba(113,230,220,.42);stroke-width:1.3}
.pokeball-button{stroke:rgba(151,255,246,.66);stroke-width:1.5;fill:rgba(3,24,27,.24);filter:drop-shadow(0 0 5px rgba(113,230,220,.14))}
.voice-field[data-layout="pokeball"] .ultimate-hex{stroke:rgba(246,157,45,.31);fill:rgba(8,25,28,.74)}
.voice-field[data-layout="pokeball"] .ultimate-sprite{filter:drop-shadow(0 1px 1px rgba(0,0,0,.52)) saturate(.90)}

/* CALL responders answer in aqua; orange belongs to the instrument. */
.ultimate-cell.call-muted{opacity:.22;filter:saturate(.35) brightness(.55)}
.ultimate-cell.call-current{opacity:1;filter:saturate(1.15) brightness(1.13)}
.ultimate-cell.call-current .ultimate-hex{stroke:rgba(100,241,230,.88)!important;stroke-width:1.7!important;fill:rgba(7,41,42,.82)!important;filter:drop-shadow(0 0 3px rgba(100,241,230,.42))}
.ultimate-cell.call-current .ultimate-sprite{filter:drop-shadow(0 0 5px rgba(100,241,230,.48)) drop-shadow(0 2px 2px rgba(0,0,0,.54))}
.call-response-ring{stroke:#68efe3;stroke-width:1.7;filter:drop-shadow(0 0 3px rgba(104,239,227,.55))}

/* Dock is now the single visual instrument. */
.call-dock{
  z-index:92;bottom:calc(18px + env(safe-area-inset-bottom));width:min(720px,calc(100% - 42px));height:78px;
  display:block;
}
.call-undo,.call-reset{display:none!important}
.call-main{
  width:100%;height:78px;grid-template-columns:minmax(0,1fr) 82px;border-radius:25px;
  border:1px solid rgba(113,230,220,.24);
  background:linear-gradient(180deg,rgba(15,30,31,.97),rgba(6,20,22,.97));
  box-shadow:0 13px 42px rgba(0,0,0,.48),0 0 0 1px rgba(255,255,255,.018) inset,0 0 20px rgba(113,230,220,.035);
  transition:border-color .24s ease,box-shadow .24s ease,background .24s ease;
}
.call-action{justify-content:flex-start;gap:16px;padding:0 18px 0 28px;text-align:left;transition:background .22s ease,color .22s ease,opacity .22s ease}
.call-flute{font-size:28px;filter:grayscale(.32) saturate(.75) brightness(.92) drop-shadow(0 2px 3px rgba(0,0,0,.42))}
.call-copy{min-width:0;display:flex;flex-direction:column;gap:7px;align-items:flex-start}
.call-action strong{font-size:25px;letter-spacing:.19em;color:#6e7776;text-shadow:none}
.call-action small{max-width:100%;font:850 7px/1 ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.14em;color:#465c5b;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.call-action:disabled{cursor:default;opacity:1;filter:none}
.call-main.is-armed{
  border-color:rgba(255,170,60,.92);
  background:linear-gradient(180deg,#f6a02a 0,#db7414 100%);
  box-shadow:0 14px 44px rgba(0,0,0,.44),0 0 28px rgba(245,145,31,.22),0 0 0 1px rgba(255,231,184,.18) inset;
}
.call-main.is-armed .call-action strong{color:#201105}
.call-main.is-armed .call-action small{color:#6e360b}
.call-main.is-armed .call-flute{filter:saturate(.9) brightness(.68) drop-shadow(0 1px rgba(255,255,255,.18))}
.call-target{
  border-left:1px solid rgba(255,171,64,.20);background:linear-gradient(180deg,#f3921d,#c9660f);color:#201105;
  transition:filter .18s ease,box-shadow .18s ease,background .18s ease;
}
.call-target-icon{width:64px;height:64px;font-size:43px;font-weight:300}
.call-target-icon img{width:52px;height:52px}
.call-main:not(.is-armed):not(.is-picker-open) .call-target{animation:pf-plus-ready 1.9s ease-in-out infinite;box-shadow:inset 0 0 0 1px rgba(255,224,174,.12)}
.call-main.is-picker-open .call-target{background:rgba(20,25,23,.92);color:#f4a33f;border-left-color:rgba(244,163,63,.34);box-shadow:inset 0 0 22px rgba(0,0,0,.24)}
.call-main.is-picker-open .call-target-icon{font-size:40px}
@keyframes pf-plus-ready{0%,100%{box-shadow:0 0 0 0 rgba(246,151,31,0),inset 0 0 0 1px rgba(255,224,174,.10)}50%{box-shadow:0 0 24px 2px rgba(246,151,31,.22),inset 0 0 0 1px rgba(255,236,201,.26)}}

/* History becomes a tiny connection trail, not a toolbar. */
.call-chain{
  z-index:69;bottom:calc(104px + env(safe-area-inset-bottom));height:34px;max-width:70vw;background:rgba(3,19,21,.45);
  border-color:rgba(113,230,220,.10);box-shadow:none;
}
.call-chain-node{border-color:rgba(113,230,220,.18);background:rgba(4,24,25,.72);color:#8ee3dc}
.call-chain-arrow{color:#5b8884}

/* The selector is not a panel. It is a transparent game-like fan. */
.call-picker{
  z-index:88;left:0!important;right:0!important;top:auto!important;bottom:calc(96px + env(safe-area-inset-bottom))!important;
  width:100%!important;height:min(390px,45dvh)!important;transform:none!important;
  inset:auto 0 calc(96px + env(safe-area-inset-bottom)) 0!important;
  border:0!important;border-radius:0!important;background:transparent!important;backdrop-filter:none!important;box-shadow:none!important;
  overflow:visible!important;pointer-events:none;
}
.call-picker[hidden]{display:none!important}
.call-picker-head{display:none!important}
.call-picker-grid{
  position:absolute;inset:0;height:100%!important;padding:0!important;display:block!important;overflow:visible!important;pointer-events:none;
}
.call-picker::before,.call-picker::after{
  content:"";position:absolute;left:50%;bottom:-372px;transform:translateX(-50%);border-radius:50%;pointer-events:none;
  border:1px solid rgba(113,230,220,.18);box-shadow:0 0 30px rgba(113,230,220,.025);
}
.call-picker::before{width:min(760px,108vw);height:min(760px,108vw)}
.call-picker::after{width:min(430px,68vw);height:min(430px,68vw);bottom:-210px;border-color:rgba(245,155,38,.13)}
.call-picker-tile{
  position:absolute!important;left:calc(50% + var(--fan-x,0px))!important;top:calc(100% + var(--fan-y,0px))!important;
  width:52px!important;height:52px!important;aspect-ratio:1!important;padding:0!important;margin:0!important;
  transform:translate(-50%,-50%) scale(.2);opacity:0;pointer-events:auto;
  border:1px solid rgba(113,230,220,.35)!important;border-radius:50%!important;
  background:radial-gradient(circle at 38% 32%,rgba(20,55,55,.97),rgba(3,20,22,.96) 70%)!important;
  color:#d5fffb!important;box-shadow:0 6px 20px rgba(0,0,0,.42),0 0 0 5px rgba(6,35,36,.20),0 0 16px rgba(113,230,220,.08)!important;
  animation:pf-fan-in .30s cubic-bezier(.19,.85,.22,1.12) var(--fan-delay,0ms) forwards;
  transition:border-color .16s ease,box-shadow .16s ease,background .16s ease;
}
.call-picker-tile::before{
  content:"";position:absolute;inset:-8px;border-radius:50%;border:1px solid rgba(113,230,220,.08);pointer-events:none;
}
.call-picker-tile.active,.call-root-tile.active{
  border-color:rgba(255,174,64,.95)!important;color:#ffc269!important;
  background:radial-gradient(circle at 40% 34%,rgba(105,61,17,.95),rgba(30,27,18,.98) 72%)!important;
  box-shadow:0 8px 22px rgba(0,0,0,.45),0 0 0 6px rgba(240,142,26,.10),0 0 22px rgba(246,153,31,.22)!important;
}
.call-picker-tile:active{transform:translate(-50%,-50%) scale(.88)!important}
.call-picker-glyph{font-size:25px!important;filter:drop-shadow(0 3px 4px rgba(0,0,0,.40))}
.call-root-tile{width:48px!important;height:48px!important}
.call-root-tile .call-picker-glyph{font-size:23px!important}
.call-root-tile::after{
  content:attr(data-label);position:absolute;left:50%;top:calc(100% + 12px);transform:translateX(-50%);
  font:900 6px/1 ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.08em;color:#c5ddd9;white-space:nowrap;text-shadow:0 2px 4px #001;
}
.call-root-tile.active::after{color:#ffc36d}
.call-generation-tile .call-picker-glyph{width:auto!important;height:auto!important;border:0!important;font-size:17px!important;color:inherit!important}
.call-pokemon-tile img{width:46px!important;height:46px!important;object-fit:contain;image-rendering:pixelated;filter:drop-shadow(0 4px 4px rgba(0,0,0,.48))}
.call-nav-tile{border-color:rgba(246,157,45,.55)!important;color:#ffc06e!important}
@keyframes pf-fan-in{to{opacity:1;transform:translate(-50%,-50%) scale(var(--fan-scale,1))}}

/* Broadcast originates from the CALL instrument and can cross the full field. */
.call-wave{z-index:44;bottom:66px;width:min(150vw,1050px)}
.call-wave i{border-color:rgba(113,230,220,.52);box-shadow:0 0 20px rgba(113,230,220,.10)}

@media(max-width:520px){
  .pokefield-brand{left:calc(20px + env(safe-area-inset-left));top:calc(18px + env(safe-area-inset-top))}
  .pokefield-brand strong{font-size:14px}.pokefield-brand span{font-size:6px}
  .pokefield-app .field-context{top:calc(72px + env(safe-area-inset-top));left:calc(20px + env(safe-area-inset-left))}
  .about-link{right:calc(18px + env(safe-area-inset-right));top:calc(18px + env(safe-area-inset-top));height:40px;padding:0 14px;font-size:7px}
  .pokefield-app .voice-field{top:calc(96px + env(safe-area-inset-top))!important;bottom:calc(146px + env(safe-area-inset-bottom))!important;height:auto!important}
  .call-dock{bottom:calc(16px + env(safe-area-inset-bottom));height:74px;width:calc(100% - 38px)}
  .call-main{height:74px;grid-template-columns:minmax(0,1fr) 78px;border-radius:23px}
  .call-action{padding-left:24px;gap:14px}.call-action strong{font-size:23px}.call-action small{font-size:6px}.call-flute{font-size:26px}
  .call-target-icon{width:58px;height:58px;font-size:40px}.call-target-icon img{width:48px;height:48px}
  .call-chain{bottom:calc(98px + env(safe-area-inset-bottom))}
  .call-picker{bottom:calc(94px + env(safe-area-inset-bottom))!important;height:min(360px,43dvh)!important}
  .call-picker-tile{width:48px!important;height:48px!important}.call-root-tile{width:45px!important;height:45px!important}
  .call-picker-glyph{font-size:23px!important}.call-root-tile .call-picker-glyph{font-size:21px!important}
  .call-pokemon-tile img{width:42px!important;height:42px!important}
}

@media(max-width:365px){
  .call-dock{width:calc(100% - 24px)}
  .call-action{padding-left:18px;gap:10px}.call-action strong{font-size:20px;letter-spacing:.16em}.call-action small{max-width:180px}
  .call-main{grid-template-columns:minmax(0,1fr) 68px}
  .call-root-tile::after{font-size:5.5px}
}

@media(min-width:760px){
  .pokefield-app .voice-field{top:90px!important;bottom:150px!important;height:auto!important}
  .call-dock{bottom:24px;height:80px;width:min(700px,calc(100% - 80px))}
  .call-main{height:80px}.call-picker{bottom:112px!important;height:400px!important}
}
.call-picker-tile.fan-dense{width:42px!important;height:42px!important}
.call-picker-tile.fan-dense .call-picker-glyph{font-size:20px!important}

/* ============================================================
   PokéField CALL v0.3.2 — mobile field viewport correction
   iOS Safari treats an absolutely positioned SVG as a replaced element.
   With width:100% + height:auto, the previous top/bottom constraints could
   collapse to the SVG intrinsic ratio, producing the tiny high Poké Ball.
   Give the field a real viewport height so its projection can fill width.
   ============================================================ */
.pokefield-app .voice-field{
  top:calc(102px + env(safe-area-inset-top))!important;
  bottom:auto!important;
  left:0!important;
  right:0!important;
  width:100%!important;
  height:calc(100dvh - 252px - env(safe-area-inset-top) - env(safe-area-inset-bottom))!important;
  min-height:420px!important;
  max-height:none!important;
}

@media(max-width:520px){
  .pokefield-app .voice-field{
    top:calc(96px + env(safe-area-inset-top))!important;
    bottom:auto!important;
    width:100%!important;
    height:calc(100dvh - 242px - env(safe-area-inset-top) - env(safe-area-inset-bottom))!important;
    min-height:430px!important;
  }
}

@media(max-height:700px) and (max-width:520px){
  .pokefield-app .voice-field{
    height:calc(100dvh - 220px - env(safe-area-inset-top) - env(safe-area-inset-bottom))!important;
    min-height:350px!important;
  }
}

@media(min-width:760px){
  .pokefield-app .voice-field{
    top:90px!important;
    bottom:auto!important;
    height:calc(100dvh - 240px)!important;
    min-height:520px!important;
  }
}

/* ============================================================
   PokéField CALL v0.3.3 — three-part grammar
   ◎ FOCUS | 🪈 CALL | +
   + chooses, CALL broadcasts, FOCUS promotes the responders into
   the new visible field. Each stage lights only when it is actionable.
   ============================================================ */
.call-main{
  grid-template-columns:92px minmax(0,1fr) 82px!important;
  background:linear-gradient(180deg,rgba(15,30,31,.98),rgba(6,20,22,.98))!important;
  border-color:rgba(113,230,220,.24)!important;
  overflow:hidden;
}
.call-main.is-armed{
  background:linear-gradient(180deg,rgba(15,30,31,.98),rgba(6,20,22,.98))!important;
  border-color:rgba(113,230,220,.24)!important;
  box-shadow:0 13px 42px rgba(0,0,0,.48),0 0 0 1px rgba(255,255,255,.018) inset,0 0 20px rgba(113,230,220,.035)!important;
}
.call-focus{
  position:relative;display:flex;align-items:center;justify-content:center;gap:6px;min-width:0;
  border:0;border-right:1px solid rgba(113,230,220,.12);background:rgba(5,18,20,.92);color:#526563;
  cursor:default;touch-action:manipulation;-webkit-tap-highlight-color:transparent;
  transition:background .2s ease,color .2s ease,box-shadow .2s ease,border-color .2s ease;
}
.call-focus-icon{font:400 31px/1 system-ui,sans-serif;opacity:.42;transform:translateY(-1px)}
.call-focus-copy{display:flex;flex-direction:column;align-items:flex-start;gap:4px;min-width:0}
.call-focus-copy strong{font:950 11px/1 ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.08em;color:inherit}
.call-focus-copy small{font:900 5.5px/1 ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.13em;color:inherit;opacity:.72}
.call-focus:disabled{opacity:1}
.call-focus.armed{
  cursor:pointer;color:#bafff9;border-right-color:rgba(104,239,227,.46);
  background:linear-gradient(180deg,rgba(21,83,82,.86),rgba(6,44,45,.95));
  box-shadow:inset 0 0 0 1px rgba(104,239,227,.15),0 0 25px rgba(104,239,227,.12);
  animation:pf-focus-ready 1.65s ease-in-out infinite;
}
.call-focus.armed .call-focus-icon{opacity:1;filter:drop-shadow(0 0 7px rgba(104,239,227,.52))}
.call-focus.armed:active{filter:brightness(1.13)}
@keyframes pf-focus-ready{0%,100%{box-shadow:inset 0 0 0 1px rgba(104,239,227,.10),0 0 0 rgba(104,239,227,0)}50%{box-shadow:inset 0 0 0 1px rgba(104,239,227,.28),0 0 24px rgba(104,239,227,.16)}}

.call-action{border-radius:0!important;background:transparent!important;padding-left:18px!important;justify-content:center!important;text-align:center!important}
.call-copy{align-items:center!important;gap:6px!important}
.call-main.is-armed .call-action{
  background:linear-gradient(180deg,#f6a02a 0,#db7414 100%)!important;
  box-shadow:inset 0 0 0 1px rgba(255,231,184,.14),0 0 25px rgba(245,145,31,.16);
}
.call-main.is-armed .call-action strong{color:#201105!important}
.call-main.is-armed .call-action small{color:#6e360b!important}
.call-main.is-armed .call-flute{filter:saturate(.9) brightness(.68) drop-shadow(0 1px rgba(255,255,255,.18))!important}
.call-target{border-left:1px solid rgba(255,171,64,.22)!important}

.call-chain-focus{width:auto!important;min-width:36px!important;padding:0 6px!important;grid-template-columns:auto auto!important;display:grid!important;gap:3px!important;color:#aaf9f2!important;border-color:rgba(104,239,227,.30)!important}
.call-chain-focus span{font-size:15px;line-height:1}.call-chain-focus small{font:900 6px/1 ui-monospace,SFMono-Regular,Consolas,monospace;color:#78cfc8}

.ultimate-cell.focus-lock{opacity:1!important;filter:saturate(1.28) brightness(1.24)!important;animation:pf-focus-lock .48s ease-out both}
.ultimate-cell.focus-lock .ultimate-hex{stroke:#b8fff9!important;stroke-width:2.2!important;filter:drop-shadow(0 0 7px rgba(104,239,227,.72))!important}
.ultimate-cell.focus-release{animation:pf-focus-release .24s ease-in both}
@keyframes pf-focus-lock{0%{opacity:1}45%{opacity:1;filter:saturate(1.55) brightness(1.55)}100%{opacity:1}}
@keyframes pf-focus-release{from{opacity:.22}to{opacity:.025;filter:saturate(.05) brightness(.20)}}

@media(max-width:520px){
  .call-main{grid-template-columns:76px minmax(0,1fr) 78px!important}
  .call-focus-icon{font-size:27px}.call-focus-copy strong{font-size:9px}.call-focus-copy small{font-size:5px}
  .call-action{padding:0 8px!important;gap:9px!important}.call-action strong{font-size:21px!important;letter-spacing:.15em!important}.call-action small{max-width:130px!important;font-size:5.5px!important}
  .call-flute{font-size:24px!important}
}
@media(max-width:365px){
  .call-main{grid-template-columns:66px minmax(0,1fr) 68px!important}
  .call-focus-copy{display:none}.call-focus-icon{font-size:28px}
  .call-action strong{font-size:19px!important}.call-action small{display:none}.call-flute{font-size:22px!important}
}

/* ============================================================
   PokéField CALL v0.3.5 — transparent terminal palette
   Abstract concepts are text. Pokémon remain sprite objects.
   Type is the one glyph family promoted to a custom SVG language.
   ============================================================ */
.call-picker{
  z-index:88!important;
  left:18px!important;right:18px!important;top:auto!important;
  bottom:calc(104px + env(safe-area-inset-bottom))!important;
  width:auto!important;height:auto!important;max-height:min(420px,48dvh)!important;
  transform:none!important;inset:auto 18px calc(104px + env(safe-area-inset-bottom)) 18px!important;
  border:1px solid rgba(115,231,222,.20)!important;border-radius:18px!important;
  background:linear-gradient(180deg,rgba(3,18,21,.82),rgba(2,13,16,.74))!important;
  backdrop-filter:blur(18px) saturate(1.05)!important;-webkit-backdrop-filter:blur(18px) saturate(1.05)!important;
  box-shadow:0 18px 70px rgba(0,0,0,.36),inset 0 1px 0 rgba(180,255,248,.035)!important;
  overflow:hidden!important;pointer-events:auto!important;
}
.call-picker[hidden]{display:none!important}
.call-picker::before,.call-picker::after{display:none!important}
.call-picker-head{
  display:grid!important;grid-template-columns:40px minmax(0,1fr) 40px!important;align-items:center!important;
  height:44px!important;border-bottom:1px solid rgba(115,231,222,.10)!important;
  background:rgba(1,10,12,.26)!important;
}
.call-picker-back,.call-picker-close{
  display:grid!important;place-items:center!important;width:30px!important;height:30px!important;margin:auto!important;
  border:1px solid rgba(115,231,222,.14)!important;border-radius:9px!important;background:rgba(6,28,30,.60)!important;
  color:#9cebe5!important;font:700 18px/1 ui-monospace,SFMono-Regular,Consolas,monospace!important;
}
.call-picker-back:disabled{opacity:.16!important}
.call-picker-path{
  display:block!important;text-align:left!important;padding-left:4px!important;
  color:#91c9c5!important;font:850 8px/1 ui-monospace,SFMono-Regular,Consolas,monospace!important;
  letter-spacing:.16em!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important;
}
.call-picker-grid{
  position:static!important;inset:auto!important;height:auto!important;max-height:calc(min(420px,48dvh) - 44px)!important;
  overflow-y:auto!important;overflow-x:hidden!important;overscroll-behavior:contain!important;-webkit-overflow-scrolling:touch!important;
  padding:10px!important;display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;
  gap:7px!important;align-content:start!important;pointer-events:auto!important;scrollbar-width:none!important;
}
.call-picker-grid::-webkit-scrollbar{display:none!important}
.call-picker-tile{
  position:relative!important;left:auto!important;top:auto!important;width:auto!important;height:50px!important;aspect-ratio:auto!important;
  margin:0!important;padding:7px 9px!important;transform:none!important;opacity:1!important;pointer-events:auto!important;animation:none!important;
  display:flex!important;align-items:center!important;justify-content:flex-start!important;gap:9px!important;
  border:1px solid rgba(115,231,222,.10)!important;border-radius:11px!important;
  background:rgba(4,25,28,.46)!important;color:#d7f3f0!important;box-shadow:none!important;text-align:left!important;
}
.call-picker-tile::before,.call-picker-tile::after{display:none!important}
.call-picker-tile:active{transform:scale(.98)!important;background:rgba(20,70,69,.42)!important;border-color:rgba(121,239,229,.35)!important}
.call-picker-tile.active{border-color:rgba(244,161,57,.48)!important;background:rgba(108,59,17,.28)!important;color:#ffd08c!important;box-shadow:none!important}
.call-picker-visual{flex:0 0 30px;width:30px;height:30px;display:grid;place-items:center;color:#88dad3}
.call-picker-visual img{width:27px;height:27px;object-fit:contain;display:block}
.call-picker-glyph{font:900 11px/1 ui-monospace,SFMono-Regular,Consolas,monospace!important;letter-spacing:.02em!important;filter:none!important;color:inherit!important}
.call-picker-copy{min-width:0;display:flex;flex-direction:column;gap:3px;align-items:flex-start}
.call-picker-copy strong{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:inherit;font:900 9px/1 ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.09em}
.call-picker-copy small{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#688e8b;font:700 6px/1 ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.07em;text-transform:uppercase}

/* Root screen: a readable terminal index, not a wheel of symbols. */
.call-picker[data-section="root"] .call-picker-tile{height:54px!important}
.call-picker[data-section="root"] .call-picker-visual{border-right:1px solid rgba(115,231,222,.09);padding-right:8px;width:34px;flex-basis:34px}
.call-picker[data-section="root"] .call-picker-glyph{font-size:8px!important;color:#ef9f3c!important;letter-spacing:.12em!important}
.call-picker[data-section="root"] .call-picker-copy strong{font-size:10px!important;color:#ddf5f2!important}

/* Type earns glyphs: 18 coherent monochrome SVG marks + readable names. */
.call-picker[data-section="type"] .call-picker-grid{grid-template-columns:repeat(3,minmax(0,1fr))!important}
.call-type-tile{height:58px!important;flex-direction:column!important;justify-content:center!important;gap:4px!important;padding:5px!important;text-align:center!important}
.call-type-tile .call-picker-visual{width:26px;height:26px;flex-basis:auto!important}
.call-type-tile .call-picker-visual img{width:25px;height:25px;filter:drop-shadow(0 0 5px rgba(114,231,222,.20))}
.call-type-tile .call-picker-copy{align-items:center!important;gap:1px!important}
.call-type-tile .call-picker-copy strong{font-size:6.5px!important;letter-spacing:.07em!important}
.call-type-tile .call-picker-copy small{display:none!important}

/* Stats are language, not pictograms. */
.call-picker[data-section="stat"] .call-picker-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}
.call-stat-tile .call-picker-visual{width:42px;flex-basis:42px;border:1px solid rgba(115,231,222,.13);border-radius:8px;color:#b8faf5}
.call-stat-tile .call-picker-glyph{font-size:9px!important;letter-spacing:.08em!important}
.call-stat-tile .call-picker-copy strong{font-size:8px!important}
.call-stat-tile .call-picker-copy small{font-size:5.5px!important}

/* Generations are deliberately literal: G1, G2, ... */
.call-picker[data-section="generation"] .call-picker-grid,
.call-picker[data-section="pokemon"] .call-picker-grid{grid-template-columns:repeat(3,minmax(0,1fr))!important}
.call-generation-tile{height:54px!important}
.call-generation-tile .call-picker-visual{width:36px;flex-basis:36px;border:1px solid rgba(244,161,57,.18);border-radius:8px;color:#ffc272}
.call-generation-tile .call-picker-glyph{font-size:10px!important}

/* Pokémon remain literal objects. */
.call-pokemon-tile{height:72px!important;flex-direction:column!important;justify-content:center!important;gap:3px!important;padding:4px!important;text-align:center!important}
.call-pokemon-tile .call-picker-visual{width:42px;height:42px;flex-basis:42px!important}
.call-pokemon-tile .call-picker-visual img{width:42px!important;height:42px!important;object-fit:contain!important;image-rendering:pixelated!important;filter:drop-shadow(0 3px 3px rgba(0,0,0,.38))!important}
.call-pokemon-tile .call-picker-copy{align-items:center!important;width:100%}
.call-pokemon-tile .call-picker-copy strong{font-size:5.8px!important;max-width:100%!important;text-align:center!important}
.call-pokemon-tile .call-picker-copy small{display:none!important}
.call-nav-tile{border-color:rgba(244,161,57,.22)!important;color:#f7bd73!important}

/* Move and shape branches are compact readable command rows. */
.call-picker[data-section="move"] .call-picker-grid,
.call-picker[data-section="shape"] .call-picker-grid{grid-template-columns:1fr!important}
.call-text-tile,.call-shape-tile{height:42px!important}
.call-text-tile .call-picker-visual{display:none!important}
.call-text-tile .call-picker-copy strong,.call-shape-tile .call-picker-copy strong{font-size:8px!important}

/* The palette floats over the living field instead of replacing it. */
.pokefield-app.call-picker-open .voice-field{filter:none!important;opacity:1!important}
.pokefield-app.call-picker-open .call-chain{opacity:.34;transition:opacity .16s ease}

@media(max-width:520px){
  .call-picker{left:16px!important;right:16px!important;inset:auto 16px calc(104px + env(safe-area-inset-bottom)) 16px!important;max-height:min(400px,46dvh)!important;border-radius:16px!important}
  .call-picker-grid{padding:8px!important;gap:6px!important;max-height:calc(min(400px,46dvh) - 44px)!important}
  .call-picker-tile{height:48px!important;padding:6px 8px!important}
  .call-picker[data-section="type"] .call-picker-grid{grid-template-columns:repeat(3,minmax(0,1fr))!important}
  .call-type-tile{height:55px!important}
  .call-picker[data-section="pokemon"] .call-picker-grid{grid-template-columns:repeat(3,minmax(0,1fr))!important}
  .call-pokemon-tile{height:68px!important}
}
@media(max-width:365px){
  .call-picker{left:10px!important;right:10px!important;inset:auto 10px calc(98px + env(safe-area-inset-bottom)) 10px!important}
  .call-picker-grid{grid-template-columns:1fr!important}
  .call-picker[data-section="type"] .call-picker-grid{grid-template-columns:repeat(3,minmax(0,1fr))!important}
  .call-picker[data-section="generation"] .call-picker-grid,.call-picker[data-section="pokemon"] .call-picker-grid{grid-template-columns:repeat(3,minmax(0,1fr))!important}
}
.call-picker[data-section="weight"] .call-picker-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}
.call-picker[data-section="weight"] .call-picker-tile{height:48px!important}


/* ============================================================
   PokéField v0.3.5.2 — hard bounded stat target
   IMPORTANT: target abbreviations are typography, not icon glyphs.
   This class is attached directly to #callTargetIcon by JS.
   ============================================================ */
.call-target-icon.is-stat-target {
  box-sizing: border-box !important;
  width: 100% !important;
  max-width: 100% !important;
  height: 100% !important;
  min-width: 0 !important;
  padding: 0 8px !important;
  display: grid !important;
  place-items: center !important;
  overflow: hidden !important;
  white-space: nowrap !important;
  text-align: center !important;
  font-family: ui-monospace, SFMono-Regular, Consolas, monospace !important;
  font-size: 18px !important;
  font-weight: 900 !important;
  line-height: 1 !important;
  letter-spacing: .04em !important;
  transform: none !important;
}
.call-main.is-picker-open .call-target-icon.is-stat-target {
  font-size: 18px !important;
}
@media (max-width: 520px) {
  .call-target-icon.is-stat-target {
    padding-inline: 6px !important;
    font-size: 17px !important;
    letter-spacing: .025em !important;
  }
}
@media (max-width: 380px) {
  .call-target-icon.is-stat-target {
    font-size: 15px !important;
  }
}

/* PokéField v0.3.7 — RANK AS TIER LIST */
.ultimate-rank-value{display:none;font:900 5.5px/1 ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.05em;fill:#ffd28a;text-anchor:middle;paint-order:stroke;stroke:#05090e;stroke-width:1.7px;pointer-events:none}
.voice-field[data-layout="rank"] .ultimate-rank-value{display:block}
.voice-field[data-layout="rank"] .ultimate-era{display:none}
.voice-field[data-layout="rank"] .ultimate-hex{stroke:rgba(105,238,228,.34);fill:rgba(5,18,24,.78)}
.voice-field[data-layout="rank"][data-rank-density="dense"] .ultimate-name{display:none}
.voice-field[data-layout="rank"] .ultimate-cell[data-tier="SS"] .ultimate-hex{stroke:#ffd074;stroke-width:1.8}
.voice-field[data-layout="rank"] .ultimate-cell[data-tier="S"] .ultimate-hex{stroke:#73efe4;stroke-width:1.55}
.voice-field[data-layout="rank"] .ultimate-cell[data-tier="A"] .ultimate-hex{stroke:#b5d9d6;stroke-width:1.25}
.voice-field[data-layout="rank"] .ultimate-cell[data-tier="B"] .ultimate-hex{stroke:rgba(120,181,179,.76)}
.voice-field[data-layout="rank"] .ultimate-cell[data-tier="C"] .ultimate-hex{stroke:rgba(99,133,139,.58)}
.rank-tier-band{vector-effect:non-scaling-stroke;stroke-width:1;fill:rgba(7,25,31,.54)}
.rank-tier-band-ss{stroke:rgba(255,208,116,.48);fill:rgba(78,53,20,.20)}
.rank-tier-band-s{stroke:rgba(115,239,228,.40);fill:rgba(14,67,65,.18)}
.rank-tier-band-a{stroke:rgba(181,217,214,.30)}
.rank-tier-band-b{stroke:rgba(120,181,179,.24)}
.rank-tier-band-c{stroke:rgba(99,133,139,.20);fill:rgba(4,15,20,.50)}
.partition-label.rank-title{fill:#9fe8e2;font-size:7px;font-weight:900;letter-spacing:.18em;text-anchor:middle}
.partition-label.rank-tier-label{font-size:17px;font-weight:1000;letter-spacing:.03em;text-anchor:middle;dominant-baseline:middle}
.partition-label.rank-tier-label-ss{fill:#ffd074}
.partition-label.rank-tier-label-s{fill:#77efe5}
.partition-label.rank-tier-label-a{fill:#c0dedc}
.partition-label.rank-tier-label-b{fill:#85b9b6}
.partition-label.rank-tier-label-c{fill:#6e8d91}
.partition-label.rank-tier-count{fill:rgba(190,226,222,.62);font-size:5px;font-weight:800;letter-spacing:.12em;text-anchor:middle}
.field-action-rank{border-color:rgba(255,166,54,.28)!important;background:rgba(84,48,15,.16)!important}
.field-action-rank .call-picker-glyph{color:#ffc272!important}
.field-action-scatter{border-color:rgba(103,235,225,.24)!important;background:rgba(12,55,54,.14)!important}
.field-action-scatter .call-picker-glyph{color:#9cf4ec!important}
.call-picker[data-section="rank"] .call-picker-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}
.call-rank-tile.active{border-color:rgba(255,174,70,.52)!important;background:rgba(115,67,19,.28)!important}
.ultimate-cell.scatter-out{animation:pf-scatter-out .28s cubic-bezier(.2,.75,.2,1) both}
.voice-field.scatter-reveal .ultimate-cell{animation:pf-scatter-field-in .52s cubic-bezier(.18,.8,.2,1) both}
@keyframes pf-scatter-out{0%{opacity:1;filter:saturate(1.1) brightness(1.1)}55%{opacity:.8;filter:saturate(1.45) brightness(1.5)}100%{opacity:0;filter:saturate(.4) brightness(.35)}}
@keyframes pf-scatter-field-in{0%{opacity:.10}100%{opacity:1}}
@media(max-width:520px){
  .call-picker[data-section="rank"] .call-picker-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .ultimate-rank-value{font-size:5px}
}

@media(max-width:520px){
  .voice-field[data-layout="rank"] .ultimate-sprite{filter:saturate(1.06) contrast(1.02)}
  .partition-label.rank-tier-label{font-size:16px}
  .partition-label.rank-title{font-size:6.5px}
}


/* v0.3.8: selectable RANK tiers -> FOCUS */
.voice-field[data-layout="rank"] .field-decorations{pointer-events:none}
.voice-field[data-layout="rank"] .rank-tier-band{pointer-events:all;cursor:pointer;transition:fill .18s ease,stroke .18s ease,filter .18s ease}
.voice-field[data-layout="rank"] .rank-tier-band:hover,.voice-field[data-layout="rank"] .rank-tier-band:focus{filter:brightness(1.22);outline:none}
.voice-field[data-layout="rank"] .rank-tier-band.is-selected{stroke-width:2.25!important;filter:drop-shadow(0 0 8px rgba(102,241,230,.34)) brightness(1.18)}
.voice-field[data-layout="rank"] .rank-tier-band-ss.is-selected{fill:rgba(118,77,21,.34);stroke:#ffd074}
.voice-field[data-layout="rank"] .rank-tier-band-s.is-selected{fill:rgba(12,91,86,.31);stroke:#73efe4}
.voice-field[data-layout="rank"] .rank-tier-band-a.is-selected{fill:rgba(56,83,83,.30);stroke:#c0dedc}
.voice-field[data-layout="rank"] .rank-tier-band-b.is-selected{fill:rgba(34,70,71,.30);stroke:#85b9b6}
.voice-field[data-layout="rank"] .rank-tier-band-c.is-selected{fill:rgba(21,43,48,.40);stroke:#7fa4a8}
