.app{flex-direction:column;min-height:100vh;display:flex}.topbar{color:#f4f7fa;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#0e1822eb;flex-wrap:wrap;align-items:center;gap:.75rem 1.25rem;padding:.85rem 1.25rem;display:flex}.brand{flex-direction:column;gap:.12rem;line-height:1;display:flex}.brand-name{letter-spacing:.04em;color:#f4f7fa;align-items:center;font-family:Bebas Neue,sans-serif;font-size:1.85rem;display:inline-flex}.brand-whistle{width:.52em;height:1.05em;color:var(--accent);flex-shrink:0;margin:0 .02em}.brand-pack{text-transform:uppercase;letter-spacing:.16em;color:var(--accent);font-size:.75rem}.template-nav{flex-wrap:wrap;flex:1;gap:.4rem;display:flex}.template-btn{color:#dbe6f0;cursor:pointer;background:0 0;border:1px solid #ffffff2e;border-radius:4px;padding:.4rem .75rem}.template-btn:hover{border-color:#fff6}.template-btn.is-active{background:var(--accent);border-color:var(--accent);color:#1a1405;font-weight:700}.template-btn-new{color:var(--accent);border-style:dashed;min-width:2.4rem;padding-left:.65rem;padding-right:.65rem;font-size:1.15rem;line-height:1}.template-btn-custom{border-color:#e8a31773}.template-btn-wrap{border-radius:4px;align-items:stretch;display:inline-flex;overflow:hidden}.template-btn-wrap .template-btn{border-top-right-radius:0;border-bottom-right-radius:0}.template-btn-x{color:#fff;cursor:pointer;background:#b83232d9;border:1px solid #e8a31773;border-left:none;padding:.4rem .55rem;font-size:1rem;line-height:1}.template-btn-x:hover{background:var(--away)}.btn-reset{color:#1a1405;cursor:pointer;background:#e8a317;border:none;border-radius:8px;padding:.5rem .9rem;font-weight:700}.btn-reset:hover{filter:brightness(1.06)}.btn-delete{background:var(--away);color:#fff;cursor:pointer;border:none;border-radius:8px;padding:.5rem .9rem;font-weight:700}.btn-delete:hover{filter:brightness(1.08)}.topbar .btn-delete{background:#c43a3a}.topbar-actions{align-items:center;gap:.4rem;display:flex}.topbar-actions .btn-icon{justify-content:center;align-items:center;min-width:2.55rem;min-height:2.55rem;padding:.4rem .55rem;font-size:1.05rem;line-height:1;display:inline-flex}.btn{cursor:pointer;border:none;border-radius:4px;padding:.45rem .9rem;font-weight:600}.btn-primary{background:var(--accent);color:#1a1405}.btn-secondary{color:#fff;background:#2a5f9e}.btn-ghost{color:inherit;background:0 0;border:1px solid #ffffff40}.btn-ghost.is-active{border-color:var(--accent);color:var(--accent);background:#ffffff26}.topbar .btn-ghost{color:#dbe6f0}.toast{z-index:20;background:var(--board);color:#fff;box-shadow:var(--shadow);word-break:break-all;border-radius:6px;max-width:min(90vw,28rem);padding:.65rem 1rem;position:fixed;top:4.5rem;right:1rem}.workspace{flex:1;grid-template-columns:minmax(17rem,20rem) minmax(0,1fr) minmax(13rem,16rem);align-items:stretch;gap:.75rem .85rem;min-height:0;padding:.65rem .85rem 1rem;display:grid}.app.is-readonly .workspace{grid-template-columns:minmax(0,1fr) minmax(11rem,14rem)}.roster-panel,.coach-panel,.setup-panel{box-shadow:var(--shadow);background:#ffffffd1;border:1px solid #12202e0f;border-radius:14px;align-self:stretch;min-width:0;min-height:0;max-height:calc(100vh - 5.5rem);padding:.75rem .85rem .9rem;overflow:hidden auto}.setup-panel{flex-direction:column;align-self:start;gap:.55rem;max-height:calc(100dvh - 5rem);display:flex}.setup-panel .board-label-row{flex-direction:column;align-items:flex-start;gap:.35rem}.setup-panel .board-picker{width:100%;margin-top:0}.setup-panel .board-picker-select,.setup-panel .board-picker-toggle{flex:auto;min-width:calc(50% - .25rem)}.setup-panel .drill-title-input{width:100%;font-size:clamp(1.35rem,2vw,1.75rem)}.setup-panel-actions{gap:.45rem;margin-top:.15rem;display:flex}.btn-tips{letter-spacing:.03em;flex:1;min-height:2.6rem;font-weight:700}.focus-chip-board{align-self:flex-start;margin:0}.tips-modal{width:min(100%,26rem);max-height:min(88dvh,36rem);overflow-y:auto}.tips-modal-header{justify-content:space-between;align-items:flex-start;gap:.75rem;display:flex}.tips-modal-close{flex-shrink:0;min-width:2.4rem;min-height:2.4rem;padding:.25rem;font-size:1rem}.panel-title{letter-spacing:.03em;margin:0;font-family:Bebas Neue,sans-serif;font-size:1.45rem}.panel-hint{color:var(--muted);margin:.2rem 0 0;font-size:.8rem;line-height:1.35}.panel-note{color:var(--muted);margin:0 0 .85rem;font-size:.85rem}.panel-title-sm{margin:.35rem 0 .55rem;font-size:1.15rem}.roster-header{justify-content:space-between;align-items:flex-start;gap:.65rem;margin-bottom:.9rem;display:flex}.puck-chip{color:var(--ink);letter-spacing:.04em;text-transform:uppercase;cursor:pointer;background:#fff;border:1px solid #12202e24;border-radius:999px;flex-shrink:0;align-items:center;gap:.4rem;padding:.4rem .7rem;font-size:.72rem;font-weight:700;transition:background .15s,border-color .15s;display:inline-flex}.puck-chip:hover{border-color:#12202e47}.puck-chip.is-on{color:#fff;background:#12202eeb;border-color:#0000}.puck-chip-dot{background:#111;border-radius:50%;width:.55rem;height:.55rem;box-shadow:0 0 0 1.5px #ffffffd9}.puck-chip.is-on .puck-chip-dot{box-shadow:none;background:#fff}.roster-list,.bench-list{flex-direction:column;gap:.55rem;margin:0 0 .85rem;padding:0;list-style:none;display:flex}.roster-card{background:#fff;border:1px solid #12202e14;border-radius:10px;flex-direction:column;gap:.55rem;min-width:0;padding:.65rem .7rem .7rem;transition:border-color .15s,box-shadow .15s;display:flex;box-shadow:0 1px 2px #12202e0a}.roster-card:focus-within{border-color:#1a4a8a59;box-shadow:0 0 0 3px #1a4a8a1a}.roster-card.side-away:focus-within{border-color:#b8323259;box-shadow:0 0 0 3px #b832321a}.roster-card-top{grid-template-columns:auto minmax(3.25rem,1fr) 2.85rem 1.7rem;align-items:end;gap:.4rem;min-width:0;display:grid}.roster-card-bottom{grid-template-columns:5.25rem minmax(0,1fr);align-items:end;gap:.45rem;min-width:0;display:grid}.roster-select{cursor:pointer;background:0 0;border:none;border-radius:50%;flex-shrink:0;padding:0 0 .1rem}.roster-select.is-active .roster-initials{box-shadow:0 0 0 2px #fff, 0 0 0 4px var(--accent)}.roster-card.side-away .roster-initials{background:var(--away)}.roster-initials{background:var(--home);color:#fff;letter-spacing:.02em;border-radius:50%;justify-content:center;align-items:center;width:2.35rem;height:2.35rem;font-size:.78rem;font-weight:700;display:inline-flex;box-shadow:inset 0 -1px #0000001f}.roster-field{flex-direction:column;gap:.2rem;min-width:0;margin:0;display:flex;overflow:hidden}.roster-field-jersey{width:auto;min-width:0}.field-label{letter-spacing:.04em;text-transform:uppercase;color:var(--muted);white-space:nowrap;text-overflow:ellipsis;font-size:.62rem;font-weight:700;line-height:1.15;display:block;overflow:hidden}.roster-input{box-sizing:border-box;width:100%;min-width:0;max-width:100%;height:2.5rem;min-height:2.5rem;font:inherit;text-align:center;color:var(--ink);background:#f7fafc;border:1px solid #12202e1f;border-radius:7px;padding:.4rem .5rem;font-size:.95rem;font-weight:700;line-height:1.2}.roster-input:focus{background:#fff;border-color:#1a4a8a73;outline:none;box-shadow:0 0 0 3px #1a4a8a1f}.roster-input-initials{text-transform:uppercase;letter-spacing:.06em}.roster-input-jersey{font-variant-numeric:tabular-nums;appearance:textfield}.roster-input-pos{cursor:pointer;text-align:left;min-width:0;padding-left:.45rem;padding-right:.25rem}.side-switch{box-sizing:border-box;background:#eef3f8;border-radius:8px;grid-template-columns:1fr 1fr;gap:0;width:100%;min-width:0;height:2.5rem;padding:.18rem;display:grid}.side-opt{font:inherit;letter-spacing:.03em;text-transform:uppercase;color:var(--muted);cursor:pointer;white-space:nowrap;text-overflow:ellipsis;background:0 0;border:none;border-radius:6px;min-width:0;padding:0 .35rem;font-size:.68rem;font-weight:700;overflow:hidden}.side-opt.is-active.is-home{background:var(--home);color:#fff;box-shadow:0 1px 2px #1a4a8a59}.side-opt.is-active.is-away{background:var(--away);color:#fff;box-shadow:0 1px 2px #b8323259}.add-player-actions{grid-template-columns:1fr 1fr;gap:.45rem;margin:0 0 1.1rem;display:grid}.btn-add-home,.btn-add-away{cursor:pointer;color:#fff;border:none;border-radius:8px;width:100%;padding:.6rem .45rem;font-size:.82rem;font-weight:700}.btn-add-home{background:var(--home)}.btn-add-home:hover{filter:brightness(1.06)}.btn-add-away{background:var(--away)}.btn-add-away:hover{filter:brightness(1.06)}.btn-remove{width:1.85rem;height:1.85rem;color:var(--muted);cursor:pointer;background:#12202e0d;border:none;border-radius:50%;justify-content:center;align-items:center;margin-bottom:.15rem;font-size:1.15rem;line-height:1;display:inline-flex}.btn-remove:hover{color:var(--away);background:#b832321f}.bench-item{text-align:left;cursor:pointer;background:#fff;border:1px solid #12202e14;border-radius:10px;align-items:center;gap:.6rem;width:100%;padding:.5rem .65rem;transition:border-color .15s,background .15s;display:flex}.bench-item:hover{background:#f7fafc;border-color:#1a4a8a59}.bench-item.side-away .roster-initials{background:var(--away)}.bench-add{text-transform:uppercase;letter-spacing:.08em;color:var(--home);margin-left:auto;font-size:.7rem;font-weight:700}.roster-meta{color:var(--muted);font-size:.85rem}.btn-assign{width:100%;margin-top:.25rem}.board-stage{flex-direction:column;gap:.4rem;min-width:0;min-height:0;display:flex}.board-header{justify-content:space-between;align-items:flex-start;gap:.75rem;min-width:0;display:flex}.board-header-text{flex:1;min-width:0}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.board-label-row{flex-wrap:wrap;align-items:baseline;gap:.45rem .85rem;min-width:0;display:flex}.board-picker{flex-wrap:wrap;align-items:center;gap:.35rem;margin-top:.35rem;display:flex}.board-picker-select{font:inherit;color:var(--ink);cursor:pointer;background:#fff;border:1px solid #12202e2e;border-radius:6px;max-width:100%;padding:.3rem .5rem;font-size:.78rem;font-weight:600}.board-picker-toggle{color:var(--ink);cursor:pointer;background:#fff;border:1px solid #12202e33;border-radius:6px;padding:.3rem .55rem;font-size:.72rem;font-weight:700}.board-picker-toggle.is-active{border-color:var(--home);color:var(--home);background:#1a4a8a1f}.board-picker-toggle:disabled,.board-picker-select:disabled{opacity:.45;cursor:not-allowed}.board-label{text-transform:uppercase;letter-spacing:.14em;color:var(--muted);flex-shrink:0;font-size:.68rem}.board-label-row .build-tip-idle{letter-spacing:.01em;text-transform:none;white-space:normal;margin:0;padding:0;font-size:.72rem}.board-label-status:empty{display:none}.board-picker-select,.board-picker-toggle{min-height:2.2rem}.drill-title,.drill-title-input{letter-spacing:.02em;color:var(--ink);margin:0;font-family:Bebas Neue,sans-serif;font-size:clamp(1.45rem,2.6vw,2rem);line-height:1}.drill-title-input{background:0 0;border:none;border-bottom:2px solid #0000;width:100%;padding:.05rem 0}.drill-title-input:hover,.drill-title-input:focus{border-bottom-color:var(--home);outline:none}.build-tip{color:#5a4208;background:#e8a31729;border-radius:8px;margin:0;padding:.35rem .6rem;font-size:.82rem;font-weight:600;line-height:1.35}.build-tip.is-active{color:var(--home);background:#1a4a8a24}.build-tip-idle{color:var(--muted);background:0 0;padding:.25rem 0;font-weight:600}.focus-chip{color:var(--ink);white-space:nowrap;background:#1a4a8a1f;border-radius:999px;flex-shrink:0;margin:0;padding:.3rem .55rem;font-size:.78rem;font-weight:600}.board-rink-wrap{flex:auto;justify-content:center;align-items:flex-start;min-height:0;display:flex}.btn-next-move,.btn-erase-move{color:var(--home);border:2px solid var(--home);cursor:pointer;white-space:nowrap;background:#fff;border-radius:8px;justify-content:center;align-items:center;min-width:2.75rem;padding:.45rem .65rem;font-weight:700;line-height:1;display:inline-flex}.btn-erase-move{color:var(--away,#b83232);border-color:var(--away,#b83232)}.btn-erase-move:disabled{opacity:.35;cursor:not-allowed}.btn-next-move svg,.btn-erase-move svg{display:block}.btn-next-move.is-active{background:var(--home);color:#fff}.path-bend-disc{fill:var(--accent);stroke:#fff;stroke-width:.35px}.tip-cancel{vertical-align:middle;margin-left:.5rem;padding:.25rem .55rem;font-size:.8rem}.btn-ghost-ink{color:var(--ink);cursor:pointer;background:0 0;border:1px solid #12202e33;border-radius:8px;padding:.5rem .85rem;font-weight:600}.danger-zone{flex-flow:wrap;align-items:center;gap:.45rem;margin-top:.55rem;display:flex}.danger-zone .btn-reset,.danger-zone .btn-delete{flex:auto;min-height:2.5rem}.welcome-tip{color:#f4f7fa;box-shadow:var(--shadow);background:#12202e;border-radius:12px;flex-wrap:wrap;align-items:center;gap:.85rem 1rem;margin:.75rem 1.25rem 0;padding:.85rem 1rem;display:flex}.welcome-tip-title{letter-spacing:.03em;color:var(--accent);margin:0 0 .35rem;font-family:Bebas Neue,sans-serif;font-size:1.35rem}.welcome-tip-steps{margin:0;padding-left:1.15rem;font-size:.92rem}.welcome-tip-steps li{margin-bottom:.25rem}.welcome-link{color:var(--accent);font:inherit;cursor:pointer;background:0 0;border:none;padding:0;font-weight:700;text-decoration:underline}.welcome-tip-body{flex:1;min-width:12rem}.modal-backdrop{z-index:50;background:#0e18228c;justify-content:center;align-items:center;padding:1rem;display:flex;position:fixed;inset:0}.modal-card{width:min(100%,22rem);box-shadow:var(--shadow);background:#fff;border-radius:14px;padding:1.1rem 1.15rem 1.15rem}.team-names-list{flex-direction:column;gap:.55rem;margin:0 0 1rem;padding:0;list-style:none;display:flex}.team-names-row{grid-template-columns:1fr 4.5rem;align-items:center;gap:.55rem;display:grid}.team-names-role{color:var(--muted);font-size:.9rem;font-weight:600}.modal-actions{justify-content:flex-end;gap:.5rem;margin-top:1rem;display:flex}.export-modal .panel-hint{margin:.45rem 0 0;line-height:1.45}.export-progress{background:#e8eef4;border-radius:999px;height:.55rem;margin-top:1rem;overflow:hidden}.export-progress-bar{border-radius:inherit;background:var(--home);height:100%;transition:width .15s ease-out}.export-progress-label{font-variant-numeric:tabular-nums;color:var(--ink);text-align:center;margin:.45rem 0 0;font-size:.95rem;font-weight:700}.btn-icon svg{display:block}.kid-topbar{padding:.45rem .75rem;padding-top:max(.45rem, env(safe-area-inset-top,0px));color:#f4f7fa;background:#0e1822f0;flex-wrap:nowrap;flex-shrink:0;justify-content:space-between;align-items:center;gap:.5rem .75rem;display:flex}.kid-topbar .brand-name{font-size:1.35rem}.kid-topbar .brand-pack{font-size:.62rem}.kid-topbar-actions{flex-shrink:0;align-items:center;gap:.4rem;display:flex}.kid-tips-btn,.kid-3d-toggle{letter-spacing:.04em;color:#f4f7fad9;cursor:pointer;background:0 0;border:1px solid #ffffff47;border-radius:6px;min-height:2.35rem;padding:.35rem .7rem;font-size:.78rem;font-weight:700}.kid-tips-btn:hover,.kid-3d-toggle:hover{border-color:#ffffff73}.kid-3d-toggle.is-active{background:var(--accent);border-color:var(--accent);color:#1a1405}.app.is-kid-viewer{flex-direction:column;height:100dvh;min-height:100dvh;max-height:100dvh;display:flex;overflow:hidden}.kid-main{width:100%;max-width:46rem;min-height:0;padding:.45rem .75rem max(.5rem, env(safe-area-inset-bottom,0px));flex-direction:column;flex:1;align-items:center;gap:.35rem;margin:0 auto;display:flex;overflow:hidden}.kid-title-row{flex-shrink:0;align-self:stretch;align-items:baseline;gap:.35rem .65rem;margin:0}.kid-title-row .board-label{font-size:.62rem}.kid-title-row .drill-title{margin:0;font-size:clamp(1.1rem,2.2vw,1.45rem);line-height:1}.kid-rink-wrap{flex:auto;justify-content:center;align-items:center;width:100%;min-height:0;padding:0;display:flex;overflow:hidden}.app.is-kid-viewer .rink{width:auto;max-width:100%;height:auto;max-height:100%;margin:0 auto}.app.is-kid-viewer .rink.rink-ice-full,.app.is-kid-viewer .rink.rink-ice-neutral{width:auto;max-width:100%;max-height:100%}.app.is-kid-viewer .focus-banner{width:100%;box-shadow:var(--shadow);color:var(--ink);text-align:center;background:#ffffffe6;border-radius:8px;flex-shrink:0;align-self:stretch;margin:0;padding:.35rem .55rem;font-size:.85rem}.app.is-kid-viewer .kid-timeline{flex-shrink:0;align-self:stretch;width:100%}.app.is-kid-viewer .timeline-dock{flex-shrink:0;max-height:none;position:static;bottom:auto;left:auto;right:auto}.timeline.is-kid .btn-play{min-width:3rem;min-height:2.85rem;font-size:1.05rem}.app.is-kid-viewer .timeline{gap:.3rem;padding:.4rem .5rem}.app.is-kid-viewer .rink-watch-stage.is-tilted{perspective:1100px;padding:.25rem 0 .5rem}.app.is-kid-viewer .rink-watch-stage.is-tilted .rink{transform-origin:50% 70%;transform:rotateX(28deg)rotate(-3deg)scale(.92)}.rink{aspect-ratio:1;background:linear-gradient(160deg, var(--ice) 0%, var(--ice-deep) 100%);width:min(100%,100dvh - 16.5rem,720px);height:auto;max-height:min(100dvh - 16.5rem,720px);box-shadow:var(--shadow);touch-action:none;-webkit-user-select:none;user-select:none;border-radius:12px}.rink.rink-ice-full{aspect-ratio:2;width:min(100%,980px);max-height:min(100dvh - 8.5rem,500px)}.rink.rink-ice-neutral{aspect-ratio:100/72;width:min(100%,100dvh - 8.5rem,900px);max-height:min(72dvh - 6.12rem,640px)}@media (width>=1101px){.app:not(.is-phone):not(.is-kid-viewer){height:100dvh;max-height:100dvh;overflow:hidden}.app:not(.is-phone):not(.is-kid-viewer) .workspace{flex:1;min-height:0;overflow:hidden}.app:not(.is-phone):not(.is-kid-viewer) .board-stage{height:100%;overflow:hidden}.app:not(.is-phone):not(.is-kid-viewer) .board-rink-wrap{flex:auto;align-items:center;min-height:0;overflow:hidden}.app:not(.is-phone):not(.is-kid-viewer) .timeline-dock{flex-shrink:0}.app:not(.is-phone):not(.is-kid-viewer) .rink:not(.rink-ice-full):not(.rink-ice-neutral){width:auto;max-width:100%;height:auto;max-height:100%}}.rink-watch-stage{justify-content:center;align-items:center;width:100%;display:flex}.rink-watch-stage.is-tilted{perspective:1100px;perspective-origin:50% 40%;padding:.75rem 0 1.75rem}.kid-tips-toggle{width:100%;font:inherit;color:var(--ink);cursor:pointer;text-align:left;background:#fff;border:1px solid #12202e1f;border-radius:8px;margin:0 0 .45rem;padding:.55rem .75rem;font-size:.9rem;font-weight:700;display:block}.rink-watch-stage.is-tilted .rink{transform-origin:50% 75%;transform:rotateX(32deg)rotate(-4deg)scale(.94);box-shadow:0 18px 40px #12202e38,inset 0 2px #ffffff59}@media (prefers-reduced-motion:reduce){.rink-watch-stage.is-tilted .rink{transform:none}}.rink-center-line{stroke:#c82828;stroke-width:1.1px}.rink-view-tag{fill:#12202e66;letter-spacing:.08em;text-transform:uppercase;pointer-events:none;font-size:3.2px;font-weight:700}.rink.is-dragging{cursor:grabbing}.rink-ice{fill:#e8f1f8}.rink-boards{fill:none;stroke:var(--board);stroke-width:1.8px}.rink-blue-line{stroke:var(--line-blue);stroke-width:1.4px}.rink-goal-line{stroke:var(--line-red);stroke-width:.9px}.rink-circle{fill:none;stroke:var(--line-red);stroke-width:.55px;opacity:.85}.rink-dot{fill:var(--line-red)}.rink-hash{stroke:var(--line-red);stroke-width:.55px}.rink-crease{fill:#5a96d247;stroke:var(--line-red);stroke-width:.55px}.rink-goal{fill:#1a1a1a;stroke:#666;stroke-width:.35px}.rink-zone-label{fill:#12202e8c;pointer-events:none;font-size:2.2px}.rink-path{stroke:#1a4a8a59;stroke-width:.55px;stroke-dasharray:1.2 1}.rink-path.is-dim{opacity:.15}.rink-path.is-hot{stroke:var(--accent);stroke-width:.9px;stroke-dasharray:none;opacity:1}.rink-puck-path{stroke:#12202e73;stroke-width:.55px;stroke-dasharray:1 .8;pointer-events:none}.rink-puck-hit{fill:#0000}.rink-puck{fill:#111;stroke:#fff;stroke-width:.25px}.rink-puck-label{fill:var(--ink);pointer-events:none;font-family:"Source Sans 3",sans-serif;font-size:2px}.rink-puck-token.is-dragging .rink-puck{stroke:var(--accent);stroke-width:.45px}.token.is-dim{opacity:.22}.token.is-selected .token-disc{stroke:var(--accent);stroke-width:.7px}.token-disc{stroke:#ffffffd9;stroke-width:.35px}.token-shadow{fill:#0e182247;pointer-events:none}.token-shadow.puck-shadow{fill:#0e182252}.rink.is-watch-depth .rink-boards{stroke-width:2.35px}.rink.is-watch-depth .rink-goal-line{stroke-width:1.15px}.rink.is-watch-depth .rink-path{stroke-width:.7px;filter:drop-shadow(0 .45px .35px #0e182238)}.rink.is-watch-depth .rink-puck-path{filter:drop-shadow(0 .35px .25px #0e182233)}.rink.is-watch-depth .token-disc{stroke-width:.45px;filter:drop-shadow(0 .35px .25px #0e18222e)}.rink.is-watch-depth .rink-zone{filter:drop-shadow(0 .5px .4px #0e18221f)}.token-initials{fill:#fff;pointer-events:none;font-family:"Source Sans 3",sans-serif;font-size:2.8px;font-weight:700}.token-meta{fill:var(--ink);pointer-events:none;font-family:"Source Sans 3",sans-serif;font-size:2px}.timeline-dock{width:100%}.timeline{box-shadow:var(--shadow);background:#ffffffeb;border-radius:10px;flex-direction:column;gap:.55rem;padding:.75rem .9rem;display:flex}.timeline-row{flex-wrap:wrap;align-items:center;gap:.65rem;display:flex}.timeline-row-play .transport{order:1}.timeline-row-play .speed-group{order:2}.timeline-row-play .timeline-scrub{flex:12rem;order:3;min-width:10rem}.timeline-row-build{border-top:1px solid #12202e14;padding-top:.45rem}.timeline-share-export{align-items:center;gap:.35rem;margin-left:auto;display:flex}.timeline-share-export .btn-icon{justify-content:center;align-items:center;min-width:2.75rem;min-height:2.75rem;padding:.35rem .45rem;display:inline-flex}.timeline-share-export .btn-ghost{color:var(--ink);border-color:#12202e33}.timeline-share-export .btn-ghost:hover:not(:disabled){background:#eef3f8}.btn-speed-cycle{font-variant-numeric:tabular-nums;min-width:2.75rem}.path-menu{position:relative}.btn-path{color:#6b3fa0;cursor:pointer;white-space:nowrap;background:#fff;border:2px solid #6b3fa0;border-radius:8px;justify-content:center;align-items:center;gap:.25rem;min-width:2.75rem;padding:.45rem .65rem;font-weight:700;display:inline-flex}.btn-path.is-active{color:#fff;background:#6b3fa0}.path-btn-icon{font-size:1.15rem;font-weight:700;line-height:1}.path-menu-caret{opacity:.85;font-size:.65rem}.path-menu-icon{justify-content:center;width:1.1rem;font-size:1rem;line-height:1;display:inline-flex}.path-menu-sheet{z-index:60;min-width:12.5rem;box-shadow:var(--shadow);background:#fff;border:1px solid #12202e1f;border-radius:10px;flex-direction:column;gap:.15rem;padding:.35rem;display:flex;position:absolute;inset:auto auto calc(100% + .4rem) 0}.path-menu-sheet button{appearance:none;text-align:left;font:inherit;color:var(--ink);cursor:pointer;background:0 0;border:none;border-radius:7px;align-items:center;gap:.35rem;padding:.55rem .65rem;font-weight:600;display:flex}.path-menu-check{color:#6b3fa0;justify-content:center;width:1rem;font-weight:800;display:inline-flex}.path-menu-sheet button:hover{background:#eef3f8}.path-menu-sheet button.is-selected{color:#4a2a78;background:#6b3fa01f}.path-menu-sheet .path-menu-clear{color:var(--muted);border-top:1px solid #12202e14;border-radius:0 0 7px 7px;margin-top:.2rem;font-weight:600}.tools-menu{position:relative}.btn-tools{color:var(--ink);cursor:pointer;white-space:nowrap;background:#fff;border:2px solid #12202e38;border-radius:8px;justify-content:center;align-items:center;gap:.35rem;min-width:2.75rem;min-height:2.75rem;padding:.45rem .7rem;font-weight:700;display:inline-flex}.btn-tools.is-active{border-color:var(--home);color:var(--home);background:#1a4a8a1f}.tools-menu-sheet{z-index:60;min-width:11.5rem;box-shadow:var(--shadow);background:#fff;border:1px solid #12202e1f;border-radius:10px;flex-direction:column;gap:.2rem;padding:.4rem;display:flex;position:absolute;inset:auto auto calc(100% + .4rem) 0}.tools-sheet-item{appearance:none;text-align:left;font:inherit;color:var(--ink);cursor:pointer;background:0 0;border:none;border-radius:8px;align-items:center;gap:.55rem;padding:.6rem .7rem;font-weight:600;display:flex}.tools-sheet-item:hover:not(:disabled){background:#eef3f8}.tools-sheet-item.is-selected{color:var(--home);background:#1a4a8a1f}.tools-sheet-item:disabled{opacity:.4;cursor:not-allowed}.tools-sheet-glyph{justify-content:center;width:1.15em;font-size:1.05rem;line-height:1;display:inline-flex}.rink.is-zone-draw{cursor:crosshair}.rink-zone.is-selected{filter:brightness(.97)}.transport{align-items:center;gap:.2rem;display:flex}.btn-transport{min-width:2.4rem;min-height:2.4rem;color:var(--ink);cursor:pointer;background:#fff;border:1px solid #12202e2e;border-radius:8px;padding:.35rem .45rem;font-size:.95rem;line-height:1}.btn-transport:hover{background:#eef3f8}.btn-play{min-width:2.75rem;min-height:2.6rem;padding:.35rem .55rem;font-size:.95rem;line-height:1}.btn-loop-icon{font-size:1.05rem;line-height:1}.timeline-scrub{flex:1;align-items:center;gap:.65rem;min-width:12rem;display:flex}.timeline-scrub-track{flex:1;align-items:center;min-width:0;display:flex;position:relative}.timeline-scrub input{width:100%;accent-color:var(--home);flex:1;height:1.4rem;margin:0}.timeline-cues{pointer-events:none;height:0;position:absolute;top:50%;left:0;right:0}.timeline-cue{background:#1a4a8a73;border-radius:1px;width:2px;height:10px;margin-left:-1px;position:absolute;top:-5px}.timeline-time{font-variant-numeric:tabular-nums;color:var(--muted);min-width:5.5rem;font-size:.9rem}.speed-group{flex-wrap:wrap;gap:.25rem;display:flex}.speed-group .btn-ghost{color:var(--ink);border-color:#12202e33;min-height:2.4rem;padding:.45rem .65rem}.btn-loop{min-width:2.4rem;padding-left:.45rem;padding-right:.45rem}.btn-loop.is-active{background:var(--home);color:#fff;border-color:var(--home)}.duration-group{align-items:center;gap:.25rem;display:flex}.btn-duration{min-width:3.1rem;min-height:2.4rem;color:var(--ink);cursor:pointer;background:#fff;border:1px solid #12202e2e;border-radius:8px;padding:.35rem .5rem;font-size:.85rem;font-weight:700}.btn-duration:hover:not(:disabled){background:#eef3f8}.btn-duration:disabled{opacity:.4;cursor:not-allowed}.duration-label{text-align:center;font-variant-numeric:tabular-nums;min-width:2.4rem;color:var(--ink);font-size:.9rem;font-weight:700}.btn-export{color:var(--ink);border-color:#12202e33}.btn-export:disabled{opacity:.55;cursor:wait}.coach-list{color:var(--ink);margin:0 0 1rem;padding-left:1.15rem}.coach-list li{margin-bottom:.45rem}.how-to{background:#eef3f8;border-radius:10px;margin-top:.5rem;padding:.75rem}.how-to-title{margin:0 0 .4rem;font-size:.95rem}.how-to-list{color:var(--ink);margin:0;padding-left:1.1rem;font-size:.9rem}.how-to-list li{margin-bottom:.35rem}.drill-picker{flex:1;min-width:0}.drill-picker select{color:#fff;width:100%;max-width:100%;min-height:2.6rem;font:inherit;text-overflow:ellipsis;background:#ffffff1a;border:1px solid #ffffff38;border-radius:8px;padding:.45rem .65rem;font-weight:600}.drill-picker select option{color:#12202e}.mobile-nav{display:none}.mobile-tips-inline{box-shadow:var(--shadow);background:#ffffffd9;border-radius:12px;padding:.85rem 1rem}@media (width>=721px) and (width<=1100px){.app{height:100dvh;max-height:100dvh;overflow:hidden}.workspace{flex:1;grid-template-columns:minmax(0,1fr) minmax(15rem,18rem);grid-template-areas:"board setup""board roster";align-items:stretch;gap:.45rem .65rem;min-height:0;padding:.4rem .6rem .5rem;overflow:hidden}.board-stage{grid-area:board;gap:.3rem;height:100%;min-height:0;overflow:hidden}.board-rink-wrap{flex:auto;align-items:center;min-height:0;overflow:hidden}.timeline-dock{flex-shrink:0}.setup-panel{grid-area:setup;align-self:start;max-height:none;overflow-y:auto}.roster-panel{grid-area:roster;min-height:0;max-height:100%;overflow-y:auto}.app.is-readonly .workspace{grid-template-columns:minmax(0,1fr) minmax(11rem,14rem);grid-template-areas:"board tips"}.app.is-readonly .coach-panel{grid-area:tips;max-height:calc(100dvh - 4.75rem)}.rink{width:auto;max-width:100%;height:auto;max-height:100%}.rink.rink-ice-full,.rink.rink-ice-neutral{width:auto;max-width:100%;max-height:100%}.topbar{gap:.45rem .65rem;padding:.5rem .75rem}.brand-name{font-size:1.55rem}.template-nav{gap:.3rem}.template-btn{padding:.32rem .55rem;font-size:.82rem}.template-btn-x{padding:.32rem .45rem}.topbar-actions .btn{padding:.4rem .65rem;font-size:.85rem}.drill-title,.drill-title-input{font-size:clamp(1.35rem,2.2vw,1.75rem)}.build-tip{padding:.3rem .5rem;font-size:.78rem}.timeline{gap:.45rem;padding:.55rem .65rem}.btn-transport{min-width:2.2rem;min-height:2.2rem}.btn-play{min-width:2.6rem;min-height:2.35rem;font-size:.9rem}.btn-next-move,.btn-erase-move,.btn-path{min-width:2.5rem;padding:.4rem .55rem}.roster-panel,.coach-panel{padding:.65rem .7rem .75rem}.panel-title{font-size:1.25rem}.how-to{padding:.55rem}.how-to-list{font-size:.82rem}}@media (width<=720px){.workspace,.app.is-readonly .workspace{display:block}.app.is-phone{height:100dvh;min-height:100dvh;max-height:100dvh;overflow:hidden}.app.is-phone .topbar{z-index:30;padding:.55rem .75rem;padding-top:max(.55rem, env(safe-area-inset-top,0px));flex-shrink:0;gap:.5rem;position:relative}.app.is-phone .topbar-actions .btn-icon{min-width:2.45rem;min-height:2.45rem;padding:.35rem .45rem;font-size:1rem}.app.is-phone .welcome-tip{margin:.65rem .75rem 0}.app.is-phone .btn-next-move,.app.is-phone .btn-erase-move,.app.is-phone .btn-path{flex:none;min-width:2.75rem;min-height:2.75rem}.app.is-phone .board-picker-select,.app.is-phone .board-picker-toggle{min-height:2.75rem;font-size:.8rem}.app.is-phone .btn-remove{width:2.75rem;min-width:2.75rem;height:2.75rem}.app.is-phone .brand-name{font-size:1.35rem}.app.is-phone .brand-pack{font-size:.65rem}.app.is-phone .workspace{flex-direction:column;flex:1;min-height:0;padding:.5rem .65rem;display:flex;overflow:hidden}.app.is-phone.is-phone-other .workspace{overflow-y:auto}.app.is-phone .roster-panel,.app.is-phone .coach-panel{max-height:none}.app.is-phone.is-phone-board .board-stage{flex:1;gap:.3rem;min-height:0;overflow:hidden}.app.is-phone .board-stage{gap:.35rem}.app.is-phone .board-header{flex-shrink:0}.app.is-phone .drill-title,.app.is-phone .drill-title-input{font-size:1.35rem}.app.is-phone.is-phone-board .board-rink-wrap{flex:auto;align-items:center;width:100%;min-height:0;overflow:hidden}.app.is-phone .board-rink-wrap{width:100%}.app.is-phone.is-phone-board .rink{width:auto;max-width:100%;height:auto;max-height:100%}.app.is-phone .rink{width:100%;max-width:100%;height:auto}.app.is-phone .timeline-dock{z-index:25;flex-shrink:0;width:100%;max-height:none;position:static;overflow:visible}.app.is-phone .timeline{border:1px solid #12202e14;gap:.3rem;padding:.4rem .45rem;overflow:visible;box-shadow:0 -4px 18px #0e18221f}.app.is-phone .timeline.is-path-open,.app.is-phone .timeline.is-tools-open{z-index:55}.app.is-phone .transport{flex-wrap:nowrap;flex:0 auto;order:1;gap:.1rem}.app.is-phone .btn-transport{min-width:2.55rem;min-height:2.55rem;padding:.25rem .3rem;font-size:.9rem}.app.is-phone .btn-play{border-radius:8px;min-width:2.55rem;min-height:2.55rem;padding:.25rem .4rem;font-size:.9rem}.app.is-phone .timeline-row-play{flex-wrap:wrap;align-items:center;gap:.25rem .3rem;display:flex}.app.is-phone .timeline-row-play .speed-group{flex-wrap:nowrap;flex-shrink:0;order:2;gap:.15rem;margin-left:auto}.app.is-phone .timeline-row-play .timeline-scrub{flex:100%;order:3;width:100%;min-width:0}.app.is-phone .timeline-scrub input{height:1.45rem}.app.is-phone .timeline-time{min-width:4.4rem;font-size:.75rem}.app.is-phone .speed-group .btn-ghost,.app.is-phone .btn-speed-cycle{min-width:2.55rem;min-height:2.55rem;padding:.25rem .3rem;font-size:.8rem}.app.is-phone .btn-loop{min-width:2.55rem;min-height:2.55rem;padding:.25rem}.app.is-phone .timeline-row-build{flex-wrap:wrap;align-items:center;gap:.3rem;width:100%}.app.is-phone .timeline-share-export{gap:.25rem}.app.is-phone .timeline-share-export .btn-icon{min-width:2.55rem;min-height:2.55rem}.app.is-phone .btn-duration{min-width:2.75rem;min-height:2.75rem;padding:.3rem .45rem;font-size:1rem;font-weight:700}.app.is-phone .duration-label{min-width:2rem;font-size:.8rem}.app.is-phone .path-menu{z-index:60;flex:none;position:relative}.app.is-phone .path-menu .btn-path{width:auto}.app.is-phone .path-menu-sheet{inset:auto auto calc(100% + .4rem) 0}.app.is-phone .tools-menu{z-index:60;flex:none;position:relative}.app.is-phone .btn-tools{min-width:2.55rem;min-height:2.55rem;padding:.3rem .55rem}.app.is-phone .tools-menu-sheet{min-width:12rem;inset:auto 0 calc(100% + .4rem) auto}.app.is-phone .roster-panel,.app.is-phone .coach-panel{margin-bottom:.5rem}.app.is-phone .add-player-actions .btn-add-home,.app.is-phone .add-player-actions .btn-add-away{min-height:3rem;font-size:.95rem}.app.is-phone .bench-item{min-height:3rem}.mobile-nav{z-index:40;padding:.3rem .4rem calc(.3rem + env(safe-area-inset-bottom,0px));background:#0e1822f5;border-top:1px solid #ffffff14;flex-shrink:0;grid-template-columns:repeat(3,1fr);display:grid;position:relative}.mobile-nav-btn{color:#f4f7faa6;letter-spacing:.04em;text-transform:uppercase;cursor:pointer;background:0 0;border:none;border-radius:10px;flex-direction:column;justify-content:center;align-items:center;gap:.1rem;min-height:2.85rem;font-size:.72rem;font-weight:700;display:flex}.mobile-nav-btn.is-active{color:var(--accent);background:#ffffff14}.mobile-nav-icon{font-size:1rem;line-height:1}.toast{top:auto;left:.75rem;right:.75rem;bottom:calc(4.25rem + env(safe-area-inset-bottom,0px));max-width:none}}:root{--ice:#dce8f2;--ice-deep:#c5d6e8;--board:#1a2b3c;--board-edge:#0e1822;--line-red:#c0392b;--line-blue:#2a5f9e;--ink:#12202e;--muted:#5a6d7e;--paper:#f2f6fa;--accent:#e8a317;--home:#1a4a8a;--away:#b83232;--surface:#ffffffb8;--shadow:0 12px 40px #12202e1f;color:var(--ink);background:var(--paper);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;font-family:"Source Sans 3",system-ui,sans-serif;line-height:1.45}*,:before,:after{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}body{background:radial-gradient(1200px 600px at 10% -10%,#b8d0e8 0%,#0000 55%),radial-gradient(900px 500px at 100% 0,#9eb8d0 0%,#0000 50%),linear-gradient(#e8f0f7 0%,#d5e2ee 45%,#c8d6e4 100%);min-height:100vh}button{font:inherit}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}
