:root{font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;color:#2f302d;background:#f3f0e7;font-synthesis:none;text-rendering:optimizeLegibility}*{box-sizing:border-box}html,body,#root{width:100%;min-height:100%;margin:0}body{min-height:100vh;overflow-x:hidden}.app-shell{position:fixed;top:0;right:0;bottom:0;left:0;width:100%;height:100%;overflow:hidden;overscroll-behavior:none}button{font:inherit;touch-action:manipulation}button:focus-visible,a:focus-visible{outline:2px solid #6b7f6c;outline-offset:3px}button:disabled{opacity:.42}.canvas-shell{position:fixed;top:0;right:0;bottom:0;left:0;overflow:hidden;background:#efeade;touch-action:none;user-select:none;-webkit-user-select:none}.logbook-canvas{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;display:block;touch-action:none}.mode-explore .logbook-canvas{cursor:grab}.mode-draw .logbook-canvas{cursor:crosshair}.floating-header{position:absolute;top:max(14px,env(safe-area-inset-top));left:max(14px,env(safe-area-inset-left));right:max(14px,env(safe-area-inset-right));display:flex;justify-content:space-between;align-items:center;pointer-events:none}.floating-header>div{display:grid;gap:2px;padding:3px 19px 4px 10px;border-left:2px solid rgba(73,81,67,.64);background:#fffdf799}.floating-header strong{font-family:Georgia,Times New Roman,serif;font-size:1.02rem;font-weight:600;letter-spacing:.01em}.eyebrow{display:block;color:#756d62;font-size:.72rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase}.mode-pill{max-width:calc(100vw - 32px);padding:4px 0 5px;border-bottom:1px solid rgba(75,66,54,.36);color:#4f514a;font-size:.72rem;font-weight:700;letter-spacing:.1em;text-align:center;text-transform:uppercase}.explore-actions{position:absolute;left:50%;bottom:calc(92px + env(safe-area-inset-bottom));display:flex;gap:0;transform:translate(-50%)}.explore-actions .secondary-button{min-height:42px;padding:9px 13px;border:1px solid rgba(75,66,54,.25);border-radius:4px;background:#fffdf7e6;font-size:.79rem;letter-spacing:.01em}.explore-actions .secondary-button+.secondary-button{margin-left:-1px;border-radius:0 4px 4px 0}.explore-actions .secondary-button:first-child{border-radius:4px 0 0 4px}.leave-mark-button{position:absolute;left:50%;bottom:calc(20px + env(safe-area-inset-bottom));transform:translate(-50%);min-width:min(310px,calc(100vw - 32px));min-height:50px;padding:13px 20px;border:1px solid #283a2e;border-radius:6px;background:#384d3d;box-shadow:0 3px #283a2e;color:#fff;font-weight:750;letter-spacing:.012em;cursor:pointer}.how-it-works-button{position:absolute;z-index:2;top:calc(max(14px,env(safe-area-inset-top)) + 53px);right:max(14px,env(safe-area-inset-right));min-height:42px;padding:8px 12px;border:0;border-bottom:1px solid rgba(75,66,54,.38);border-radius:0;background:#fffdf78a;color:#4f514a;font-size:.76rem;font-weight:700;letter-spacing:.04em;cursor:pointer}.secondary-button,.ghost-button,.primary-button,.size-button{min-height:42px;border-radius:6px;cursor:pointer}.secondary-button{border:0;padding:9px 12px;background:transparent;color:#373a34;font-weight:700;white-space:nowrap}.primary-button{border:1px solid #283a2e;padding:12px 16px;background:#384d3d;box-shadow:0 2px #283a2e;color:#fff;font-weight:750}.primary-button.compact{min-width:68px;padding:9px 12px}.ghost-button{border:1px solid rgba(75,66,54,.18);padding:8px 12px;background:#fffdf7;color:#373a34;font-weight:700}.draw-mode-banner{position:absolute;top:max(14px,env(safe-area-inset-top));left:50%;max-width:calc(100vw - 32px);transform:translate(-50%);padding:7px 10px;border:1px solid #283a2e;border-radius:4px;background:#384d3d;box-shadow:0 4px 12px #29382d29;color:#fff;font-size:.72rem;font-weight:700;letter-spacing:.025em;text-align:center}.draw-toolbar{position:absolute;left:max(12px,env(safe-area-inset-left));right:max(12px,env(safe-area-inset-right));bottom:max(12px,env(safe-area-inset-bottom));margin:0 auto;max-width:600px;padding:8px;border:1px solid rgba(75,66,54,.2);border-radius:8px;background:#fffdf7;box-shadow:0 8px 24px #3831281f}.toolbar-row{display:flex;align-items:center;justify-content:space-between;gap:8px}.toolbar-row.secondary{margin-top:7px;padding-top:7px;border-top:1px solid rgba(75,66,54,.12)}.swatches,.brush-sizes,.eraser-sizes{display:flex;align-items:center;gap:7px}.swatch{width:30px;height:30px;padding:0;border:3px solid #fffdf7;border-radius:50%;box-shadow:0 0 0 1px #2f302d29}.swatch.selected{box-shadow:0 0 0 3px #8c7962}.size-button{width:42px;padding:0;display:grid;place-items:center;border:1px solid rgba(75,66,54,.16);background:#fffdf7}.size-button.selected{border-color:#384d3d;background:#f0eee5}.eraser-size-button{min-height:42px;min-width:68px;padding:8px 10px;border:1px solid rgba(75,66,54,.16);border-radius:5px;background:#fffdf7;color:#45463f;font-size:.78rem;font-weight:750;cursor:pointer}.eraser-size-button.selected{border-color:#384d3d;background:#e9eee7;color:#2c4835}.brush-dot{display:block;border-radius:50%;background:#2f302d}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:10;display:grid;place-items:center;padding:max(20px,env(safe-area-inset-top)) max(20px,env(safe-area-inset-right)) max(20px,env(safe-area-inset-bottom)) max(20px,env(safe-area-inset-left));background:#23211d52}.welcome-modal{width:min(480px,100%);padding:27px;border:1px solid rgba(75,66,54,.22);border-radius:4px;background:#fffdf7;box-shadow:0 16px 44px #23211d2e}.welcome-modal h1{margin:6px 0 12px;font-family:Georgia,Times New Roman,serif;font-size:clamp(1.75rem,7vw,2.3rem);font-weight:600;line-height:1.08}.welcome-modal p{color:#5d594f;line-height:1.6}.instruction-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:0;margin:22px 0 18px;border-block:1px solid rgba(75,66,54,.18)}.instruction-grid div{display:grid;gap:5px;min-width:0;padding:11px 10px}.instruction-grid div+div{border-left:1px solid rgba(75,66,54,.16)}.instruction-grid strong{color:#41473e;font-size:.73rem;letter-spacing:.08em;text-transform:uppercase}.instruction-grid span{color:#686157;font-size:.78rem;line-height:1.3}.welcome-tip{margin:17px 0 21px;padding:4px 0 4px 11px;border-left:2px solid #b2a184;color:#686157!important;font-size:.84rem;line-height:1.52}.welcome-tip strong{color:#4c5048}.welcome-modal .primary-button{width:100%}@media(max-width:520px){.instruction-grid{grid-template-columns:1fr}.instruction-grid div+div{border-top:1px solid rgba(75,66,54,.16);border-left:0}.welcome-modal{padding:23px}.swatch{width:26px;height:26px}.secondary-button{font-size:.82rem}}.contribution-note,.connection-note,.notice,.canvas-state{position:absolute;left:50%;transform:translate(-50%);border:1px solid rgba(75,66,54,.12);background:#fffdf7f2}.contribution-note{top:calc(max(14px,env(safe-area-inset-top)) + 74px);z-index:2;display:inline-flex;align-items:center;gap:9px;padding:9px 12px;border-radius:4px;color:#4f514a;font-size:.82rem;font-weight:700}.contribution-report-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;border-left:1px solid rgba(75,66,54,.16);padding:0 0 0 9px;background:transparent;color:#385c41;font:inherit;font-size:.76rem;font-weight:800;cursor:pointer}.contribution-report-button:disabled{cursor:wait;opacity:.62}.connection-note{top:calc(max(14px,env(safe-area-inset-top)) + 74px);z-index:2;width:max-content;max-width:calc(100vw - 32px);padding:8px 12px;border-radius:4px;color:#76582f;font-size:.78rem;font-weight:700}.notice{z-index:7;bottom:calc(178px + env(safe-area-inset-bottom));width:min(430px,calc(100vw - 32px));padding:11px 14px;border-radius:5px;box-shadow:0 4px 14px #3831281a;color:#41413b;font-size:.86rem;font-weight:650;line-height:1.35;text-align:center}.notice-error{border-color:#843d363d;background:#fff6f2f7;color:#7c3d35}.canvas-state{z-index:8;top:50%;display:grid;gap:14px;width:min(340px,calc(100vw - 44px));padding:16px 19px;border-radius:7px;box-shadow:0 10px 28px #38312824;color:#5d594f;font-size:.9rem;font-weight:650;line-height:1.4;text-align:center}.state-card strong{color:#373a34;font-size:1rem}.tool-button{min-height:42px;padding:8px 10px;border:1px solid rgba(75,66,54,.18);border-radius:5px;background:#fffdf7;color:#373a34;font-weight:700;cursor:pointer}.tool-button.selected{border-color:#384d3d;background:#e9eee7;color:#2c4835}.history-button{min-width:54px}.eraser-cursor-preview{position:absolute;z-index:1;transform:translate(-50%,-50%);border:1.5px solid rgba(56,77,61,.72);border-radius:50%;background:#384d3d0d;box-shadow:0 0 0 1px #fffdf7b8;pointer-events:none}.confirmation-modal{width:min(430px,100%);padding:24px;border:1px solid rgba(75,66,54,.22);border-radius:5px;background:#fffdf7;box-shadow:0 16px 44px #23211d2e}.confirmation-modal h2{margin:0 0 9px;font-family:Georgia,Times New Roman,serif;font-size:1.55rem;font-weight:600}.modal-copy{color:#5d594f;line-height:1.55}.modal-actions{display:flex;justify-content:flex-end;gap:9px;margin-top:22px}.danger-button{background:#8b4a42}@media(max-width:520px){.toolbar-row.secondary{display:grid;grid-template-columns:1fr auto auto}.toolbar-row.secondary .brush-sizes,.toolbar-row.secondary .eraser-sizes{grid-column:1 / -1;justify-content:center}.toolbar-row.secondary .tool-button{justify-self:start}.toolbar-row.secondary .history-button{justify-self:end}.notice{bottom:calc(220px + env(safe-area-inset-bottom))}.modal-actions{flex-direction:column-reverse}.modal-actions button{width:100%}}.admin-shell,.invalid-route{min-height:100vh;padding:max(24px,env(safe-area-inset-top)) max(18px,env(safe-area-inset-right)) max(30px,env(safe-area-inset-bottom)) max(18px,env(safe-area-inset-left));overflow-x:clip;background:#f6f2e8}.admin-header,.admin-card,.invalid-route section{width:min(860px,100%);margin-inline:auto}.admin-header,.admin-card.admin-overview{width:min(1320px,100%)}.admin-header{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:22px}.admin-header h1,.invalid-route h1{margin:4px 0 0;font-family:Georgia,Times New Roman,serif;font-weight:600}.admin-back{text-decoration:none}.admin-card,.invalid-route section{padding:clamp(20px,5vw,32px);border:1px solid rgba(75,66,54,.12);border-radius:10px;background:#fffdf7;box-shadow:none}.admin-card h2{margin:0 0 8px;font-size:1.15rem}.admin-card p,.invalid-route p{color:#5d594f;line-height:1.55}.admin-login{width:min(460px,100%)}.admin-login form{display:grid;gap:14px;margin-top:20px}.admin-login label{display:grid;gap:6px;font-weight:700}.admin-login input{min-height:44px;padding:9px 11px;border:1px solid rgba(75,66,54,.24);border-radius:10px;background:#fff;color:#2f302d}.admin-section-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.admin-section-header h2{margin:0}.admin-section-header p{margin:6px 0 0}.admin-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}.admin-logbook-management{display:flex;flex-wrap:wrap;gap:8px;margin-top:18px}.admin-delete-logbook{color:#824139}.admin-logbook-list,.admin-contribution-list{display:grid;gap:9px;margin-top:18px}.admin-logbook-list>div,.admin-contribution-list article{display:flex;justify-content:space-between;align-items:center;gap:14px;padding:13px 14px;border-radius:7px;background:#f3efe5}.admin-select-logbook{white-space:nowrap}.admin-contribution-list article{display:grid;grid-template-rows:auto minmax(0,1fr) auto;align-items:stretch;min-width:0;gap:12px}.admin-contribution-list{grid-template-columns:minmax(0,1fr);gap:12px}.contribution-thumbnail{width:100%;aspect-ratio:4 / 3;min-height:164px;overflow:hidden;border:1px solid #d8d0c2;border-radius:4px;background:#fffdf7;pointer-events:none;-webkit-user-select:none;user-select:none}.contribution-thumbnail svg{display:block;width:100%;height:100%}.admin-contribution-details{min-width:0}.admin-contribution-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.admin-contribution-actions>*{min-width:0;text-align:center}.admin-view-link{text-decoration:none}.admin-hidden-link{cursor:default;grid-column:1 / -1;opacity:.58}.admin-approve{color:#385c41}.admin-moderation-status{font-weight:800}.admin-moderation-status.status-visible{color:#385c41}.admin-moderation-status.status-flagged{color:#8b4038}.admin-moderation-status.status-pending{color:#76582f}.admin-moderation-filters{display:flex;flex-wrap:wrap;gap:7px;margin-top:11px}.admin-moderation-filters .ghost-button{min-height:34px;padding:6px 9px;font-size:.78rem}.admin-moderation-filters .ghost-button.is-selected{border-color:#385c416b;background:#e5ece0;color:#294833}.admin-logbook-list span,.admin-contribution-list span{display:block;margin-top:3px;color:#6b655b;font-size:.84rem}.contribution-heading{margin-top:30px}.contribution-heading a{text-decoration:none}.admin-delete{color:#824139}.admin-error{margin:16px auto 0;color:#8b4038!important;font-weight:700}.admin-notice{margin:16px auto 0;color:#385c41!important;font-weight:700}.admin-public-hostname{margin:11px 0 0;color:#5d594f;font-size:.9rem;overflow-wrap:anywhere}.admin-input-error{margin:9px 0 0;color:#8b4038;font-size:.86rem}.admin-empty-logbooks{margin:0;padding:13px 14px;border-radius:13px;background:#f3efe5}.admin-contribution-state{margin:18px 0 0;color:#5d594f}.admin-export-disabled{cursor:not-allowed;opacity:.42}.admin-management-modal{width:min(500px,100%)}.admin-modal-label{display:grid;gap:7px;margin-top:18px;color:#373a34;font-weight:700}.admin-modal-label input{min-width:0;min-height:44px;padding:9px 11px;border:1px solid rgba(75,66,54,.24);border-radius:10px;background:#fff;color:#2f302d;font:inherit}.admin-delete-list{margin:8px 0 14px;padding-left:22px}.admin-delete-list li+li{margin-top:3px}.invalid-route{display:grid;place-items:center}.invalid-route section{width:min(460px,100%)}.invalid-route .primary-button{display:inline-block;margin-top:10px;text-decoration:none}@media(min-width:640px){.admin-contribution-list{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(min-width:1180px){.admin-contribution-list{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:520px){.admin-header,.admin-section-header{align-items:stretch;flex-direction:column}.contribution-thumbnail{min-height:146px}.admin-back,.admin-section-header>a,.admin-contribution-list button,.admin-contribution-list a{text-align:center}.admin-actions{justify-content:stretch}.admin-actions button{flex:1}.admin-logbook-management>*{flex:1}}
