@font-face{font-family:Geist;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/geist-latin-400-normal-B40WzpMT.woff2)format("woff2"),url(/assets/geist-latin-400-normal-akEymXtG.woff)format("woff")}@font-face{font-family:Geist;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/geist-latin-600-normal-CSETrqM2.woff2)format("woff2"),url(/assets/geist-latin-600-normal-DsPlZH-9.woff)format("woff")}@font-face{font-family:Geist Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/geist-mono-latin-400-normal-DTRLJnHl.woff2)format("woff2"),url(/assets/geist-mono-latin-400-normal-B2yvC1Cq.woff)format("woff")}@font-face{font-family:Excalifont;src:url(https://excalidraw.nyc3.cdn.digitaloceanspaces.com/fonts/Excalifont-Regular.woff2)format("woff2");font-style:normal;font-weight:400 700;font-display:swap}html,body,#root{width:100%;min-width:0;height:100%;margin:0}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;padding:0;position:absolute;overflow:hidden}.problemset-directory{box-sizing:border-box;color:#111;background:#fff;min-height:100dvh;padding:32px;font-family:Geist,sans-serif}.directory-header{justify-content:space-between;align-items:baseline;gap:24px;max-width:960px;margin:0 auto;display:flex}.directory-brand{color:inherit;letter-spacing:normal;font-family:Geist Mono,monospace;font-size:22px;font-weight:600;text-decoration:none}.directory-header p{margin:0;font-size:14px}.directory-content{max-width:960px;margin:0 auto;padding:0 0 48px}.directory-hero{box-sizing:border-box;text-align:center;flex-direction:column;justify-content:center;align-items:center;max-width:960px;min-height:calc(50dvh - 165px);margin:0 auto;padding:36px 0;display:flex}.directory-hero h1{letter-spacing:-.03em;max-width:700px;margin:0;font:500 36px/1.2 Geist,sans-serif}.directory-hero p{color:#5f6368;max-width:620px;margin:18px 0 0;font:18px/1.5 Geist,sans-serif}.directory-content h1{margin:0 0 28px;font:400 32px/1.15 Geist,sans-serif}.problemset-grid{grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:16px;display:grid}.problemset-card{box-sizing:border-box;min-height:168px;color:inherit;border:1px solid #202124;border-radius:10px;flex-direction:column;padding:22px;text-decoration:none;transition:background-color .15s,color .15s;display:flex}.problemset-card__name{font:400 25px/1.15 Geist,sans-serif}.problemset-card__count{margin-top:12px;font-size:13px}@media (hover:hover) and (pointer:fine){.problemset-card:hover{background:#e8e8e8}}.problemset-card:focus-visible,.directory-brand:focus-visible{outline-offset:3px;outline:2px solid #1a73e8}@media (width<=600px){.problemset-directory{padding:20px}.directory-header{align-items:flex-start}.directory-content{padding-bottom:32px}.directory-hero{min-height:calc(50dvh - 142.5px);padding:36px 0}.directory-hero h1{font-size:30px}.directory-hero p{font-size:16px}.directory-brand{font-size:20px}.directory-content h1{font-size:24px}.problemset-card__name{font-size:21px}.problemset-card{min-height:150px}}.app-shell{height:100dvh;overflow:hidden}.drawing-panel{width:100%;min-width:0;height:100%;min-height:0;position:relative;overflow:hidden}.drawing-stage{background:#fff;width:100%;height:100%;position:relative}.brand-mark,.control-strip,.step-subtitle,.soft-button,.problem-seeker__status{-webkit-user-select:none;user-select:none}.drawing-stage:fullscreen{width:100%;height:100%}.brand-mark{color:inherit;text-decoration:none;display:none}.control-strip{z-index:1;background:0 0;align-items:center;gap:6px;margin:12px;display:flex;position:absolute;top:0;left:50%;transform:translate(-50%)}.problem-seeker,.step-seeker{color:#202124;align-items:center;gap:6px;font-family:Geist Mono,monospace;display:flex;position:relative}.view-controls{align-items:center;gap:6px;display:flex}@keyframes controls-rise-in{0%{opacity:0;translate:0 14px}to{opacity:1;translate:0}}.problem-seeker,.view-controls,.step-seeker,.solve-button{animation:.44s cubic-bezier(.2,.8,.2,1) both controls-rise-in}@media (prefers-reduced-motion:reduce){.problem-seeker,.view-controls,.step-seeker,.solve-button{animation:none}}.problem-seeker__status{color:#202124;letter-spacing:.01em;text-align:center;white-space:nowrap;background:#fff;border:1px solid #202124;border-radius:50%;place-items:center;width:42px;height:42px;font-size:11px;font-weight:600;display:grid}.problem-seeker__status-label,.step-button__label{display:none}.problem-seeker__status span{color:#5f6368;padding:0}.soft-button{appearance:none;color:#202124;cursor:pointer;letter-spacing:.01em;white-space:nowrap;background:#fff;border:1px solid #202124;border-radius:50%;place-items:center;width:42px;height:42px;padding:0;font:600 14px/18px Geist Mono,monospace;transition:background-color .15s,border-color .15s,color .15s,transform .15s;display:grid}.soft-button:disabled{color:#8a8a8a;cursor:default;background:#fff;border-color:#a3a3a3}@media (hover:hover) and (pointer:fine){.soft-button:not(:disabled):hover,.soft-button--quiet:hover{background:#e8eaed}.soft-button--dark:not(:disabled):hover{background:#333;border-color:#333}}.soft-button:not(:disabled):active{background:#dadce0;transform:translateY(1px)}.soft-button--dark:not(:disabled):active{background:#333}.soft-button:focus-visible{outline-offset:2px;outline:2px solid #1a73e8}.soft-button--quiet{color:#202124;background:#fff}.soft-button--dark{color:#fff;background:#111;border-color:#111}.soft-button svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.8px;width:20px;height:20px}.solve-button{z-index:1;color:#fff;cursor:pointer;letter-spacing:.01em;white-space:nowrap;background:#111;border:1px solid #111;border-radius:999px;min-height:50px;padding:0 28px;font:600 14px/18px Geist Mono,monospace;transition:background-color .18s,transform .18s;position:absolute;bottom:74px;left:50%;transform:translate(-50%)}.step-seeker--active .step-button{color:#202124;background:#fff}.step-seeker--active .step-button:disabled{color:#8a8a8a;background:#fff;border-color:#a3a3a3}@media (hover:hover) and (pointer:fine){.solve-button:hover{background:#333}.step-seeker--active .step-button:not(:disabled):hover{background:#e8eaed}}.step-seeker--active .step-button:active{background:#dadce0}.solve-button:active{background:#333;transform:translate(-50%)translateY(1px)}.step-seeker--active .step-button:active{transform:translateY(1px)}.step-seeker__progress{box-sizing:border-box;color:#202124;pointer-events:none;white-space:nowrap;background:#fff;border:1px solid #202124;border-radius:999px;place-items:center;min-width:104px;height:42px;padding:5px 10px;font:400 12px/16px Geist Mono,monospace;display:grid}.solve-button:focus-visible{outline-offset:2px;outline:2px solid #1a73e8}@media (width>=901px){.solve-button{bottom:98px}.brand-mark{z-index:1;color:#111;font:600 24px/1 Geist Mono,monospace;display:block;position:absolute;top:14px;left:50%;transform:translate(-50%)}.control-strip{pointer-events:none;margin:0;display:block;inset:0;transform:none}.top-controls{pointer-events:auto;align-items:center;gap:6px;width:488px;display:flex;position:absolute;top:52px;left:50%;transform:translate(-50%)}.view-controls{flex:none}.problem-seeker{flex:1;min-width:0}.problem-seeker__status{border-radius:999px;flex:1;justify-content:center;align-items:center;width:auto;padding:0 12px;font-size:14px;display:flex}.problem-seeker__status .problem-seeker__status-label{color:#202124;display:inline}.problem-seeker__status span{color:#202124}.step-seeker{pointer-events:auto;flex-basis:100%;width:440px;position:absolute;bottom:12px;left:50%;transform:translate(-50%)}.step-seeker__progress{order:2}.step-seeker .step-button:last-child{order:3}.step-button{color:#202124;background:#fff;border-radius:999px;flex:1;justify-content:center;align-items:center;gap:7px;width:auto;height:50px;display:flex;position:relative}@media (hover:hover) and (pointer:fine){.step-seeker--active .step-button:hover{background:#e8eaed}}.step-button svg{display:block}.step-button__label{display:none}}.three-view{z-index:4;background:#fafafa;grid-template-rows:auto 1fr;display:grid;position:absolute;inset:0}.three-view__header{box-sizing:border-box;color:#202124;border-bottom:1px solid #d7dce1;align-items:center;gap:18px;min-height:66px;padding:12px 20px;font:600 15px/1 Geist Mono,monospace;display:flex}.three-view__hint{color:#5f6368;font-weight:400}.three-view__close{width:34px;height:34px;margin-left:auto;font:400 26px/1 Arial,sans-serif}.three-view__canvas{touch-action:none;min-width:0;min-height:0;position:relative;overflow:hidden}.three-view__labels{position:absolute;inset:0}.three-view__label{color:#303030;white-space:nowrap;font:400 17px/1 Geist Mono,monospace;display:block;transform:translate(11px,-20px)}.three-view__plane-label{color:#111;transform:translate(11px,-20px)}.three-view__dimension-label{color:#555;font-size:13px;transform:translate(9px,-8px)}.three-view__angle-label{color:#303030;font-size:15px;transform:translate(8px,-14px)}@media (width>=901px){.three-view__label{font-size:25.5px;transform:translate(16.5px,-30px)}.three-view__dimension-label{font-size:19.5px;transform:translate(13.5px,-12px)}.three-view__angle-label{font-size:22.5px;transform:translate(12px,-21px)}}.three-view__canvas canvas{width:100%;height:100%;display:block}.three-view__view-controls{z-index:1;gap:10px;display:flex;position:absolute;bottom:20px;left:50%;transform:translate(-50%)}.three-view__view-controls button{color:#fff;cursor:pointer;white-space:nowrap;background:#111;border:1px solid #111;border-radius:999px;min-width:174px;height:48px;padding:0 24px;font:600 14px/1 Geist Mono,monospace}@media (hover:hover) and (pointer:fine){.three-view__view-controls button:hover{background:#333}}@media (width<=900px){.three-view__header{gap:10px;min-height:54px;padding:8px 12px;font-size:13px}.three-view__hint{display:none}.three-view__view-controls{gap:8px;bottom:14px}.three-view__view-controls button{min-width:0;height:42px;padding:0 16px;font-size:12px}}.drawing-canvas{touch-action:none;cursor:grab;width:100%;min-width:0;height:100%;min-height:0;display:block;position:absolute;inset:0}.drawing-canvas.is-panning{cursor:grabbing}.step-subtitle{z-index:1;box-sizing:border-box;appearance:none;color:#fff;text-align:center;pointer-events:none;background:#000;border:0;max-width:min(80%,720px);padding:10px 12px 8px;font:16px/20px Excalifont,cursive;position:absolute;bottom:12px;left:50%;transform:translate(-50%)}@media (width>=901px){.step-subtitle{bottom:74px}}@media (width<=900px){.top-controls{display:contents}.drawing-panel{position:fixed;inset:0}.soft-button{min-width:0}.problem-seeker__status{min-width:0;font-size:11px}@media (orientation:portrait){.brand-mark{z-index:1;color:#111;align-items:center;height:42px;font:600 20px/1 Geist Mono,monospace;display:flex;position:absolute;top:16px;left:16px;transform:none}.control-strip{box-sizing:border-box;pointer-events:none;width:100%;margin:0;padding:0 16px;inset:0;transform:none}.problem-seeker{pointer-events:auto;width:auto;position:absolute;top:16px;left:auto;right:16px;transform:none}.problem-seeker__status{border-radius:50%;flex:none;width:42px;height:42px;padding:0;font-size:11px;display:grid}.problem-seeker__status .problem-seeker__status-label{display:none}.problem-seeker__status span{color:#202124}.view-controls{pointer-events:auto;position:absolute;bottom:16px;left:16px}.step-seeker{pointer-events:auto;position:absolute;bottom:16px;right:16px}.step-subtitle{width:calc(100% - 32px);max-width:none;bottom:80px}.drawing-stage.is-unstarted .view-controls{display:none}}@media (orientation:landscape){.control-strip{flex-direction:column;justify-content:space-between;gap:0;margin:0;inset:8px 16px 8px auto;transform:none}.top-controls,.problem-seeker,.view-controls,.step-seeker{flex-direction:row}.top-controls{gap:6px;display:flex}.soft-button,.problem-seeker__status{flex:0 0 42px}.step-subtitle{bottom:12px;left:50%;right:auto;transform:translate(-50%)}@media (height<=340px){.control-strip{grid-template-rows:auto auto;grid-template-columns:42px 42px;place-content:space-between end;column-gap:6px;display:grid}.top-controls{display:contents}.problem-seeker{grid-area:1/2}.view-controls{grid-area:1/1}.step-seeker{grid-area:2/2}}}}.visually-hidden{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}
