:root{color:#213547;font-synthesis:none;text-rendering:optimizelegibility;background:#f4f7f2;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;line-height:1.5}*{box-sizing:border-box}html,body,#root{min-height:100dvh;margin:0}button{font:inherit}.app-shell{--top-menu-height:58px;height:100dvh;min-height:0;padding-top:max(18px, env(safe-area-inset-top));padding-right:max(18px, env(safe-area-inset-right));padding-bottom:max(18px, env(safe-area-inset-bottom));padding-left:max(18px, env(safe-area-inset-left));background:linear-gradient(135deg,#2eb87214,#0000 35%),linear-gradient(315deg,#e7b93f21,#0000 40%),#f4f7f2;grid-template-rows:auto minmax(0,1fr);gap:12px;display:grid;overflow:hidden}.workspace{--left-panel-width:280px;--right-panel-width:320px;grid-template-areas:"toolbar board status";grid-template-columns:var(--left-panel-width) minmax(420px, 1fr) var(--right-panel-width);grid-template-rows:minmax(0,1fr);gap:16px;height:100%;min-height:0;display:grid;overflow:hidden}.top-menu{z-index:12;min-height:var(--top-menu-height);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#ffffffdb;border:1px solid #273d3724;border-radius:8px;justify-content:space-between;align-items:center;gap:18px;padding:9px 12px;display:flex;position:relative;box-shadow:0 14px 34px #1729231a}.top-menu-brand{gap:1px;min-width:max-content;display:grid}.top-menu-brand strong{color:#213547;font-size:1rem;line-height:1}.top-menu-actions{justify-content:flex-end;align-items:center;gap:8px;min-width:0;display:flex}.top-menu-actions button,.locale-switcher button,.top-menu-panel-grid button,.top-menu-close{color:#213547;cursor:pointer;background:#fff;border:1px solid #21354729;border-radius:8px;min-height:36px;font-size:.82rem;font-weight:800}.top-menu-actions button{padding:7px 10px}.top-menu-actions button.active,.top-menu-actions button:hover,.locale-switcher button.active,.locale-switcher button:hover,.top-menu-panel-grid button:hover,.top-menu-close:hover{background:#e8f6fc;border-color:#0ea5e98c}.locale-switcher{background:#f4faf6;border:1px solid #2135471f;border-radius:8px;align-items:center;gap:2px;min-width:max-content;padding:3px;display:flex}.locale-switcher button{border-color:#0000;min-height:30px;padding:5px 8px;font-size:.72rem}.top-menu-popover{background:#fffffff5;border:1px solid #21354721;border-radius:8px;gap:10px;width:min(420px,100vw - 36px);max-height:min(72dvh,620px);padding:14px;display:grid;position:absolute;top:calc(100% + 8px);right:0;overflow-y:auto;box-shadow:0 20px 55px #1729232e}.top-menu-panel-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.top-menu-panel-grid button{white-space:normal;padding:9px}.compact-primary{grid-column:1/-1}.mobile-app-header{grid-area:header;display:none}.toolbar,.left-workspace-panel{grid-area:toolbar}.right-workspace-panel{grid-area:status}.workspace-panel{min-width:0;min-height:0;position:relative;overflow:hidden}.workspace-panel>.panel{width:100%;height:100%}.panel,.board-shell{border:1px solid #273d3724;border-radius:8px;box-shadow:0 18px 45px #1729231c}.panel{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#ffffffd1;flex-direction:column;min-width:0;min-height:0;max-height:100%;padding:18px;display:flex;position:relative;overflow-y:auto}.board-shell{background:#edf4f1;grid-area:board;height:100%;min-height:0;position:relative;overflow:hidden}.board-shell canvas{touch-action:none;width:100%;height:100%;display:block}.board-camera-bar{z-index:3;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffffd6;border:1px solid #2135471f;border-radius:8px;align-items:center;gap:8px;padding:7px;display:flex;position:absolute;top:12px;right:12px;box-shadow:0 10px 26px #1729231f}.board-camera-bar span{color:#45564f;font-size:.78rem;font-weight:800}.board-camera-bar button,.panel-collapse-button,.panel-rail-button{color:#213547;cursor:pointer;background:#fff;border:1px solid #21354729;border-radius:8px;min-height:34px;font-size:.78rem;font-weight:800}.board-camera-bar button{padding:6px 9px}.app-toast{top:max(12px, env(safe-area-inset-top));z-index:20;color:#991b1b;background:#fff1f1f0;border:1px solid #ef444459;border-radius:8px;max-width:min(560px,100vw - 32px);padding:10px 14px;font-size:.84rem;font-weight:800;position:fixed;left:50%;transform:translate(-50%);box-shadow:0 16px 34px #1729231f}.share-workspace{grid-template-columns:minmax(0,1fr);grid-template-areas:"board"}.share-mode-shell{padding:max(10px, env(safe-area-inset-top)) max(10px, env(safe-area-inset-right)) max(10px, env(safe-area-inset-bottom)) max(10px, env(safe-area-inset-left));display:block}.share-view-overlay{z-index:5;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#ffffffe0;border:1px solid #21354721;border-radius:8px;gap:10px;width:min(360px,100% - 32px);padding:14px;display:grid;position:absolute;bottom:24px;right:24px;box-shadow:0 18px 45px #17292329}.share-view-overlay strong{color:#213547;font-size:1rem}.share-view-overlay p{color:#45564f;margin:0;font-size:.82rem}.share-view-actions{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.share-view-actions button{color:#213547;cursor:pointer;background:#fff;border:1px solid #21354729;border-radius:8px;min-height:38px;font-size:.82rem;font-weight:800}.share-view-actions button:last-child{background:#e8f6fc;border-color:#0ea5e96b}.modal-backdrop{z-index:30;padding:max(18px, env(safe-area-inset-top)) max(18px, env(safe-area-inset-right)) max(18px, env(safe-area-inset-bottom)) max(18px, env(safe-area-inset-left));-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#15221e57;place-items:center;display:grid;position:fixed;inset:0}.modal-card{background:#fffffff0;border:1px solid #21354726;border-radius:8px;gap:14px;width:min(720px,100%);max-height:min(760px,100%);padding:24px;display:grid;position:relative;overflow-y:auto;box-shadow:0 24px 80px #17292338}.modal-card h2{color:#213547;max-width:16ch;font-size:2rem}.modal-card h3{color:#2f463f;margin:4px 0 0;font-size:.9rem}.modal-card p{color:#45564f;margin:0}.modal-close-button{color:#213547;cursor:pointer;background:#fff;border:1px solid #21354729;border-radius:8px;min-height:34px;font-size:.78rem;font-weight:800;position:absolute;top:14px;right:14px}.intro-actions{gap:9px;display:grid}.primary-action{color:#14532d;cursor:pointer;background:#dff7e9;border:1px solid #2eb8727a;border-radius:8px;min-height:46px;font-weight:900}.modal-footnote{border-top:1px solid #2135471a;padding-top:8px;font-size:.84rem}.help-steps{color:#45564f;gap:8px;margin:0;padding-left:22px;display:grid}.help-part-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.help-part-grid div{background:#f4faf6;border:1px solid #2135471a;border-radius:8px;gap:4px;min-height:78px;padding:12px;display:grid}.help-part-grid strong{color:#213547}.help-part-grid span{color:#65756f;font-size:.82rem}.panel-collapse-button{z-index:4;padding:6px 9px;position:absolute;top:12px;right:12px}.toolbar .panel-heading{padding-right:76px}.status-panel{padding-top:54px}.panel-rail-button{writing-mode:vertical-rl;background:#ffffffd1;width:100%;height:100%;min-height:220px;padding:10px 6px;box-shadow:0 18px 45px #1729231c}.left-rail{grid-area:toolbar}.right-rail{grid-area:status}.panel-resize-handle{z-index:5;cursor:ew-resize;background:0 0;border:0;border-radius:999px;width:10px;padding:0;position:absolute;top:12px;bottom:12px}.panel-resize-handle:hover,.panel-resize-handle:focus-visible{background:#0ea5e93d;outline:none}.panel-resize-handle.left{right:-5px}.panel-resize-handle.right{left:-5px}body.is-resizing-panel{cursor:ew-resize;-webkit-user-select:none;user-select:none}.panel-heading{border-bottom:1px solid #2135471c;padding-bottom:16px}.eyebrow{color:#2d6a5a;letter-spacing:0;text-transform:uppercase;font-size:.72rem;font-weight:800;display:block}h1,h2{margin:0;line-height:1.1}h1{letter-spacing:0;max-width:12ch;margin-top:5px;font-size:clamp(2rem,4vw,3rem)}h2{color:#2f463f;letter-spacing:0;font-size:.86rem;font-weight:800}.tool-section,.status-section{border-bottom:1px solid #2135471a;padding:16px 0}.tool-section:last-child,.status-section:last-child{border-bottom:0}.preset-list{gap:9px;margin-top:10px;display:grid}.details-section>summary{color:#2f463f;cursor:pointer;font-size:.86rem;font-weight:800;list-style-position:inside}.example-list{gap:9px;margin-top:10px;display:grid}.example-button span,.intro-example-button span{gap:4px;display:grid}.example-button small,.intro-example-button small{color:#65756f;font-size:.74rem;font-weight:700;line-height:1.25}.example-button em{color:#2f463f;text-transform:uppercase;background:#edf4f1;border-radius:999px;flex:none;padding:3px 7px;font-size:.68rem;font-style:normal;font-weight:900}.example-button.showcase em{color:#70550f;background:#fff6dc}.quick-tips{color:#65756f;gap:7px;margin:10px 0 0;padding-left:18px;font-size:.78rem;display:grid}.layer-switcher{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:12px;display:grid}.layer-switcher button{color:#213547;cursor:pointer;background:#fff;border:1px solid #21354729;border-radius:8px;min-height:38px;font-size:.86rem;font-weight:800}.layer-switcher button.active{background:#e8f6fc;border-color:#0ea5e9a6}.preset-button,.secondary-button,.danger-button,.move-pad button,.gear-row{color:#213547;cursor:pointer;background:#fff;border:1px solid #21354729;border-radius:8px;min-height:42px;transition:transform .14s,border-color .14s,box-shadow .14s,background-color .14s}.preset-button:hover,.secondary-button:hover,.danger-button:hover:not(:disabled),.move-pad button:hover:not(:disabled),.gear-row:hover{border-color:#0ea5e98c;transform:translateY(-1px);box-shadow:0 8px 20px #21354717}.preset-button{text-align:left;justify-content:space-between;align-items:center;gap:12px;width:100%;padding:12px;display:flex}.preset-button span,.gear-row strong{font-weight:800}.preset-button small,.gear-row small,.status-grid span,.metric-row span{color:#65756f;font-size:.76rem}.selected-chip{color:#2f463f;background:#edf4f1;border:1px solid #2135471f;border-radius:8px;align-items:center;min-height:34px;margin-top:10px;padding:7px 10px;font-size:.85rem;font-weight:800;display:flex}.move-pad{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:10px;display:grid}.move-pad button{padding:8px 7px;font-size:.78rem;font-weight:800}.coordinate-readout{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:8px;display:grid}.coordinate-readout span{color:#65756f;background:#fff;border:1px solid #2135471c;border-radius:8px;justify-content:space-between;min-height:30px;padding:6px 8px;font-size:.78rem;display:flex}.coordinate-readout strong{color:#213547}.section-title-row{justify-content:space-between;align-items:center;gap:12px;display:flex}.section-title-row span{color:#65756f;font-size:.78rem;font-weight:800}.compact-title{margin-top:12px}.compact-title h3{color:#2f3f3a;margin:0;font-size:.78rem}.two-button-row{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:8px;display:grid}.two-button-row button{color:#1f3f39;cursor:pointer;background:#f4faf6;border:1px solid #c5d8cf;border-radius:8px;min-height:36px;font-weight:800}.two-button-row button:hover{border-color:#73a89a}.toggle-row{cursor:pointer;align-items:center;gap:10px;margin-top:12px;font-size:.86rem;font-weight:800;display:flex}.compact-toggle{margin-top:10px;font-size:.8rem}.toggle-row input{opacity:0;pointer-events:none;position:absolute}.toggle-track{background:#dbe6df;border:1px solid #2135472e;border-radius:999px;width:46px;height:26px;transition:background-color .14s;position:relative}.toggle-thumb{background:#fff;border-radius:50%;width:18px;height:18px;transition:transform .14s;position:absolute;top:3px;left:3px;box-shadow:0 3px 8px #2135472e}.toggle-row input:checked+.toggle-track{background:#2eb872}.toggle-row input:checked+.toggle-track .toggle-thumb{transform:translate(20px)}.toggle-row input:focus-visible+.toggle-track{outline-offset:2px;outline:3px solid #0ea5e959}button:disabled{cursor:not-allowed;opacity:.46}.utility-actions{grid-template-columns:1fr 1fr;gap:8px;display:grid}.secondary-button,.danger-button{padding:10px;font-size:.84rem;font-weight:800}.full-width-action{width:100%;margin-top:10px}.secondary-button{background:#e8f1ec}.danger-button{color:#7f1d1d;background:#fff1f1}.status-panel{grid-area:status;gap:12px;max-height:100%;overflow-y:auto}.state-banner{color:#45564f;background:#fff;border:1px solid #2135471f;border-radius:8px;padding:12px;font-size:.88rem;font-weight:800}.state-banner.success{color:#14532d;background:#dff7e9;border-color:#2eb8725c}.state-banner.error{color:#991b1b;background:#fff1f1;border-color:#ef444466}.state-banner.calm{background:#eef5f1}.status-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.status-grid div{background:#fff;border:1px solid #2135471a;border-radius:8px;min-height:70px;padding:12px}.status-grid strong{margin-top:6px;font-size:1.45rem;line-height:1;display:block}.metric-row{justify-content:space-between;align-items:center;gap:12px;margin-top:9px;display:flex}.metric-row input{color:#213547;width:84px;min-height:32px;font:inherit;text-align:right;background:#fff;border:1px solid #2135472e;border-radius:8px;padding:6px 8px;font-weight:700}.gear-list{gap:8px;max-height:360px;margin-top:10px;padding-right:2px;display:grid;overflow:auto}.empty-preview{color:#65756f;margin:10px 0 0;font-size:.83rem}.tool-hint,.shaft-hint,.save-message{color:#65756f;margin:9px 0 0;font-size:.78rem}.save-message{color:#24566d;background:#eef8fc;border:1px solid #0ea5e92e;border-radius:8px;padding:8px 9px;font-weight:800}.hidden-file-input{display:none}.share-url-output{resize:vertical;color:#213547;width:100%;min-height:82px;font:inherit;background:#fff;border:1px solid #2135472e;border-radius:8px;margin-top:9px;padding:8px;font-size:.76rem}.selected-shaft-card{background:#eef8fc;border:1px solid #0ea5e94d;border-radius:8px;gap:3px;margin-top:10px;padding:10px;display:grid}.selected-shaft-card small{color:#65756f;font-size:.76rem}.shaft-list{max-height:240px}.shaft-row{border-color:#64748b40}.clock-row{border-color:#0ea5e938}.hand-button-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:10px;display:grid}.hand-button-grid .secondary-button{min-height:38px;padding:8px 6px;font-size:.76rem}.preview-list{gap:8px;margin-top:10px;display:grid}.preview-row{color:#213547;cursor:pointer;text-align:left;background:#fff;border:1px solid #2135471f;border-radius:8px;justify-content:space-between;align-items:center;gap:10px;width:100%;min-height:50px;padding:10px;display:flex}.preview-row>span{gap:2px;display:grid}.preview-row small{color:#65756f;font-size:.76rem}.preview-row.meshed{background:#e3f8ec;border-color:#10b98175}.preview-row.near{background:#fff7df;border-color:#f59e0b75}.preview-row.overlap{background:#fff1f1;border-color:#ef444475}.preview-row-data{justify-items:end}.gear-row{text-align:left;justify-content:space-between;align-items:center;gap:10px;width:100%;padding:10px;display:flex}.gear-row>span{gap:2px;display:grid}.gear-row.selected{background:#e8f6fc;border-color:#0ea5e9a6}.gear-row.conflict{background:#fff1f1;border-color:#ef444480}.gear-row-data{justify-items:end}@media (width<=1100px){.workspace{grid-template-areas:"toolbar board""status status";grid-template-columns:var(--left-panel-width) minmax(420px, 1fr);grid-template-rows:minmax(0,1fr) minmax(180px,34%)}.share-workspace{grid-template-columns:1fr;grid-template-areas:"board";height:calc(100dvh - 20px);min-height:calc(100dvh - 20px);overflow:hidden}.share-workspace .board-shell{height:100%;min-height:100%}.share-view-overlay{bottom:16px;right:16px}.right-workspace-panel,.status-panel{grid-column:1/-1}.panel-resize-handle.right{display:none}}@media (width<=760px){.app-shell{height:auto;min-height:100dvh;padding-top:max(10px, env(safe-area-inset-top));padding-right:max(10px, env(safe-area-inset-right));padding-bottom:max(10px, env(safe-area-inset-bottom));padding-left:max(10px, env(safe-area-inset-left));display:grid;overflow:visible}.workspace{grid-template:"board""toolbar""status"/1fr;height:auto;min-height:auto;overflow:visible}.share-mode-shell{height:100dvh;min-height:0;display:block;overflow:hidden}.share-workspace{grid-template-columns:1fr;grid-template-areas:"board";height:100%;min-height:0;overflow:hidden}.workspace-panel{width:100%;min-height:0;overflow:visible}.workspace-panel>.panel{height:auto}.panel,.toolbar{max-height:none;overflow:visible}.panel-resize-handle{display:none}.panel-rail-button{writing-mode:horizontal-tb;min-height:48px}.mobile-app-header{background:#ffffffe0;border:1px solid #273d3724;border-radius:8px;padding:18px;display:none;box-shadow:0 18px 45px #17292317}.top-menu{align-items:stretch;gap:9px;min-height:0;padding:9px}.top-menu-brand{justify-content:center}.top-menu-actions{justify-content:flex-start;padding-bottom:2px;overflow-x:auto}.top-menu-actions button{flex:none;min-height:34px;padding:6px 9px;font-size:.78rem}.locale-switcher{flex:none}.locale-switcher button{min-height:30px;padding:5px 7px;font-size:.72rem}.top-menu-popover{width:auto;max-height:70dvh;left:0;right:0}.top-menu-panel-grid{grid-template-columns:1fr}.toolbar .panel-heading{display:none}.board-shell{height:45dvh;min-height:45dvh}.share-workspace .board-shell{height:100%;min-height:100%}.board-camera-bar{justify-content:space-between;left:8px;right:8px}.status-panel{max-height:none;overflow:visible}h1{max-width:none;font-size:2rem}}
