:root {
  --color-bg:#fbf7ef; --color-surface:#ffffff; --color-surface-alt:#f4eee1;
  --color-fg:#23201c; --color-muted:#5e594f; --color-primary:#2a4d9b;
  --color-on-primary:#fff; --color-accent:#e0533c; --color-accent-2:#e0b23c;
  --color-border:#23201c; --color-disabled:#ece5d8; --color-on-disabled:#9b9487;
  --font-display:"Instrument Serif","Songti SC","Georgia",serif;
  --font-body:"Schibsted Grotesk",ui-sans-serif,system-ui,"PingFang SC",sans-serif;
  --font-mono:"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,monospace;
  --radius-control:6px; --radius-card:10px; --size-control:42px;
  --shadow-control:2px 2px 0 rgba(35,32,28,.85); --shadow-card:3px 3px 0 rgba(35,32,28,.75);
}
*{box-sizing:border-box} [hidden]{display:none!important} html{scroll-behavior:smooth;scroll-padding-top:28px}
body{margin:0;background:var(--color-bg);color:var(--color-fg);font:16px/1.7 var(--font-body);letter-spacing:.01em;background-image:radial-gradient(#a99c7918 .65px,transparent .65px);background-size:7px 7px}
button,input,select,textarea{font:inherit;color:inherit} button,summary,a,input,select,textarea,[tabindex]{-webkit-tap-highlight-color:transparent}button,a,summary{touch-action:manipulation}
a{color:inherit}button{cursor:pointer}button:disabled{cursor:wait;background:var(--color-disabled);color:var(--color-on-disabled)}
:focus-visible{outline:3px solid var(--color-primary);outline-offset:4px} input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--color-accent);outline-offset:3px}
.page-shell{max-width:1200px;padding:0 42px;margin:auto}.site-header{height:100px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #23201c30}
.brand{display:flex;align-items:center;gap:9px;text-decoration:none;font-size:19px;font-weight:650;letter-spacing:2px}.brand-mark{border:2px solid var(--color-primary);border-radius:35% 40% 30% 45%;color:var(--color-primary);font:23px/30px var(--font-display);width:35px;text-align:center;transform:rotate(-7deg)}.brand-en{font:10px var(--font-mono);letter-spacing:1.3px;color:var(--color-muted);margin-left:9px}.header-note{font-size:12px;letter-spacing:1px;color:var(--color-muted)}
.hero{display:grid;grid-template-columns:1fr 1fr;align-items:center;gap:20px;padding:55px 12px 48px}.eyebrow{display:flex;align-items:center;gap:11px;font-size:11px;font-weight:600;letter-spacing:2px;color:var(--color-primary);margin:0 0 20px}.small-line{display:inline-block;width:24px;height:2px;background:var(--color-primary);transform:rotate(-5deg)}h1{font-family:var(--font-display);font-weight:600;font-size:clamp(38px,4.4vw,56px);letter-spacing:1.5px;line-height:1.4;margin:0 0 16px}.marker{background:linear-gradient(transparent 65%,#e0b23c66 65%,#e0b23c66 92%,transparent 92%);padding:0 3px}.hero-description{font-size:14px;line-height:1.9;color:var(--color-muted);margin:0}.mountain-sketch{position:relative;align-self:center;padding-top:22px;margin:0 -15px 0 8px}.mountain-sketch>svg{display:block;width:100%;height:auto}.sketch-label{font-family:var(--font-display);position:absolute;color:var(--color-primary);font-style:italic;font-size:14px}.label-summit{right:16%;top:8%;transform:rotate(8deg)}.label-route{bottom:0;left:22%;transform:rotate(-4deg);font-size:15px;letter-spacing:1px}.sketch-stamp{position:absolute;right:1%;bottom:11%;color:var(--color-accent);font-family:var(--font-display);font-size:15px;border:1.5px solid var(--color-accent);border-radius:3px;transform:rotate(10deg);padding:5px 9px;line-height:1.35;opacity:.85}
.planner{position:relative;background:var(--color-surface);border:2px solid var(--color-border);border-radius:9px 13px 8px 11px;box-shadow:var(--shadow-card);overflow:visible}.planner:before{content:"";position:absolute;top:-12px;left:40%;width:110px;height:25px;background:#e9d9b39c;transform:rotate(-3deg);border:1px solid #e9d9b330;pointer-events:none}.planner-heading{display:flex;justify-content:space-between;align-items:center;padding:26px 32px 20px}.planner-heading h2{font:600 21px/1.5 var(--font-display);margin:0}.pencil-note{font:italic 13px/1.5 var(--font-display);color:var(--color-primary);transform:rotate(-3deg)}.main-fields{display:grid;grid-template-columns:1.3fr 1fr;gap:45px;padding:0 32px 22px}.field-label{font-size:13px;font-weight:600;display:flex;align-items:center;gap:9px;margin-bottom:12px}.step-number{font:12px var(--font-mono);color:var(--color-primary);border-bottom:1px solid var(--color-primary);transform:rotate(-4deg)}.drop-zone{min-height:142px;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:4px;border:2px dashed #716c60;border-radius:8px 4px 9px 5px;background:#fbf7ef90;cursor:pointer;transition:background .18s,border-color .18s,transform .18s;text-align:center;padding:12px 16px}.drop-zone:hover,.drop-zone.dragover{border-color:var(--color-primary);background:#edf0f780;transform:rotate(-.35deg)}.drop-zone.has-file{background:#eef2f7;border-color:var(--color-primary);border-style:solid}.upload-symbol{font:28px/1 var(--font-display);color:var(--color-primary);margin-bottom:4px}.drop-zone>span:not(.upload-symbol){max-width:100%;overflow-wrap:anywhere}#file-title{font-size:14px;font-weight:550}.upload-hint{font-size:11px;color:var(--color-muted)}.file-state{font-size:11px;color:var(--color-primary)}.field-footnote{font-size:10px;margin:8px 0 0;color:var(--color-muted);letter-spacing:.1px}.time-field{padding-left:26px;border-left:1px solid #23201c20}.duration-wrap{border-bottom:2px solid var(--color-border);display:flex;align-items:baseline;gap:16px;padding:12px 0 9px;margin-top:3px}.duration-wrap input{background:transparent;border:0;min-width:0;width:170px;max-width:70%;font:42px/1.3 var(--font-mono);letter-spacing:-1px;border-radius:3px;padding:0;color:var(--color-primary)}.duration-wrap>span{font-size:11px;white-space:nowrap;color:var(--color-muted)}.time-hint{font-size:12px;color:var(--color-muted);margin:12px 0 6px}.target-note{font-size:10px;color:var(--color-primary)}
.advanced{border-top:1px dashed #23201c38;margin:0 32px}.advanced summary{cursor:pointer;list-style:none;display:flex;align-items:center;gap:9px;min-height:58px;font:12px var(--font-body);letter-spacing:.2px}.advanced summary::-webkit-details-marker{display:none}.disclosure-arrow{font-size:18px;color:var(--color-primary);width:14px}.advanced[open] .disclosure-arrow{transform:rotate(45deg)}.summary-cn{color:var(--color-muted);font-size:11px}.defaults-tag{margin-left:auto;color:var(--color-muted);font-size:10px}.advanced-body{border-top:1px dashed #23201c24;padding:0 0 24px}.advanced-intro{font-size:12px;color:var(--color-muted);margin:16px 0 20px}.settings-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px}.settings-grid label{font-size:11px;display:block}.settings-grid label>span{font-size:10px;color:var(--color-muted);margin-left:4px}.settings-grid input,.settings-grid select,textarea,#track-index{margin-top:6px;width:100%;height:42px;border:1.5px dashed #726b5d;border-radius:6px;background:#fffdf7;padding:6px 10px;font-size:13px}.repair-policy{background:var(--color-surface-alt);border-left:2px solid var(--color-primary);padding:12px 16px;margin-top:24px;font-size:12px}.repair-policy p{margin:4px 0 0;color:var(--color-muted)}.repair-policy strong{font-weight:600}.checkpoint-panel h3,#manual-panel h3{font-size:14px}.subheading{display:flex;align-items:center;justify-content:space-between;margin-top:22px}.subheading span{font-size:10px;color:var(--color-muted)}#cp-hint,#manual-panel p{font-size:12px;color:var(--color-muted)}.cp-row{display:grid;grid-template-columns:1.2fr 1.4fr .65fr .8fr;gap:12px;align-items:center;border-top:1px solid #23201c15;padding:12px 0}.cp-name{display:flex;align-items:center;gap:5px;font-size:12px;overflow-wrap:anywhere}.cp-row label{font-size:10px;color:var(--color-muted);display:block}.cp-row input[type=number],.cp-row input[type=text],.cp-row select{width:100%;min-width:0;height:36px;border:1px solid #aaa291;background:#fffdf7;border-radius:4px;padding:4px 8px;font-size:12px}.cp-row.needs-choice{border-left:3px solid var(--color-accent);padding-left:10px}.cp-position-note{font-size:10px;color:var(--color-primary)}#manual-panel textarea{height:auto;min-height:100px;resize:vertical;font:12px/1.8 var(--font-mono)}#track-panel{padding:10px 0 20px;max-width:400px}.setting-label{font-size:12px}
.form-footer{display:flex;align-items:center;justify-content:space-between;gap:20px;background:#f4eee160;padding:22px 32px;border-radius:0 0 8px 11px;border-top:1px solid #23201c20}.form-footer p{font:13px/1.7 var(--font-display);margin:0}.form-footer p span{color:var(--color-muted)}.button{background:#fffdf7;border:2px solid var(--color-border);border-radius:5px 7px 6px 4px;box-shadow:var(--shadow-control);min-height:42px;padding:8px 18px;font-size:13px;font-weight:600;display:inline-flex;justify-content:center;align-items:center;gap:18px;transition:background .18s,transform .18s,box-shadow .18s}.button:hover:not(:disabled){background:var(--color-primary);color:var(--color-on-primary)}.button:active:not(:disabled){transform:translate(2px,2px);box-shadow:0 0 0 transparent}.button-primary{background:var(--color-accent-2);min-width:200px;transform:rotate(-.5deg)}.button-primary>span{font-size:21px;line-height:1}.button-small{font:11px var(--font-mono);padding:8px 13px;min-height:36px;box-shadow:1.5px 1.5px 0 #23201c}.under-form{display:flex;justify-content:space-between;color:var(--color-muted);font-size:10px;padding:19px 5px}.blue-dot{display:inline-block;background:var(--color-primary);width:5px;height:5px;border-radius:50%;margin-right:6px}.status{font-size:12px;padding:12px 16px;margin:0 32px 20px;border:1px solid #2a4d9b55;background:#edf0f8;border-radius:5px;white-space:pre-line}.status.error{background:#fff0e9;border-color:#e0533c88;color:#9b321f}.status.success{background:#eff4eb;border-color:#76845b55;color:#405129}.paper-corner{position:absolute;bottom:-7px;left:-8px;width:24px;height:22px;border-left:1px solid #23201c44;border-bottom:1px solid #23201c44;pointer-events:none}
.results{margin-top:68px;scroll-margin-top:26px}.result-heading{display:flex;justify-content:space-between;align-items:flex-end;gap:20px;margin-bottom:24px}.result-heading h2{font:600 32px/1.4 var(--font-display);margin:0;overflow-wrap:anywhere}.result-heading .eyebrow{margin-bottom:10px;font-size:10px}.exports{display:flex;gap:9px;flex-wrap:wrap}.route-stats{display:grid;grid-template-columns:repeat(4,1fr);border-top:2px solid var(--color-border);border-bottom:1px solid #23201c50;padding:20px 0;margin-bottom:24px}.stat{padding-left:22px;border-left:1px dashed #23201c40}.stat:first-child{border-left:0;padding-left:0}.stat-label{font-size:11px;color:var(--color-muted)}.stat-value{display:block;font:26px/1.8 var(--font-mono);color:var(--color-primary)}.stat-value small{font:11px var(--font-body);margin-left:5px;color:var(--color-muted)}.profile-paper{border:1px solid #23201c50;border-radius:5px 8px 4px 6px;padding:14px 20px 6px;background:#fffdf7}.profile-heading{display:flex;justify-content:space-between;align-items:center;font-size:12px}.profile-heading span+span{font-size:10px;color:var(--color-muted)}#elevation-chart{display:block;width:100%;height:auto;min-height:100px}#elevation-chart text{font-family:var(--font-mono);font-size:10px;fill:var(--color-muted)}.result-notes{font-size:11px;color:var(--color-muted);margin:18px 0 22px;line-height:1.9}.result-notes strong{color:var(--color-fg);font-weight:550}.result-notes p{margin:4px 0}.table-paper{border:1.5px solid var(--color-border);border-radius:7px 5px 9px 4px;background:#fffdf9;overflow:hidden;box-shadow:3px 3px 0 #23201c}.table-topline{display:flex;justify-content:space-between;gap:12px;background:#f4eee1;padding:11px 18px;border-bottom:1px solid var(--color-border);font:10px/1.7 var(--font-mono);color:var(--color-muted);letter-spacing:1px}.table-topline span+span{font:10px/1.7 var(--font-body);letter-spacing:0}.table-scroll{overflow-x:auto;overscroll-behavior-x:contain}table{width:100%;border-collapse:collapse;min-width:920px;font-size:12px}th{font-weight:500;text-align:left;color:var(--color-muted);font-size:10px;background:#faf6ee;white-space:nowrap}th,td{padding:16px 12px;border-bottom:1px solid #23201c22;vertical-align:middle}th:first-child,td:first-child{padding-left:20px;min-width:164px}td{font-family:var(--font-mono);font-size:11px}td:first-child{font-family:var(--font-body);font-size:12px}th.target-col{text-align:center;min-width:94px}td.target-col{text-align:center}th .target-label{display:block;font:15px/1.6 var(--font-mono);color:var(--color-fg)}.chosen{background:#f6edcf}th.chosen .target-label{color:var(--color-primary);font-weight:bold}.time-main{font-size:15px;display:block;white-space:nowrap}.time-secondary{font-size:10px;color:var(--color-muted);display:block;margin-top:3px}.arrival-line{font-size:9px;color:var(--color-muted);display:block}.station-km{display:block;font:10px var(--font-mono);margin-top:3px;color:var(--color-muted)}.station-cutoff{display:block;font-size:9px;color:#a3402a;margin-top:4px}.late{color:#a3402a;font-size:9px;display:block}tr:last-child td{border-bottom:0;background-color:#f4eee160}tr:last-child td.chosen{background-color:#f1e5bd}tr:last-child .time-main{font-weight:bold;color:var(--color-primary)}.calculation-notes{font-size:11px;margin-top:22px;color:var(--color-muted)}.calculation-notes summary{cursor:pointer;text-decoration:underline;text-underline-offset:4px}.calculation-notes ul{padding-left:20px;line-height:2}.calculation-notes p{margin:8px 0}.site-footer{padding:35px 0 27px;margin-top:60px;display:flex;justify-content:space-between;border-top:1px solid #23201c25;font-size:10px;color:var(--color-muted)}.footer-cross{padding:0 8px;color:var(--color-primary)}.visually-hidden{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
@media(min-width:1500px){.page-shell{max-width:1260px}.hero{padding-top:64px;padding-bottom:60px}}
@media(max-width:900px){.page-shell{padding:0 26px}.hero{padding:40px 0 36px;gap:0}h1{font-size:43px}.main-fields{gap:24px}.time-field{padding-left:20px}.duration-wrap input{font-size:36px;width:135px}.settings-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.mountain-sketch{margin-left:0}.header-note{font-size:10px}.planner-heading,.main-fields{padding-left:24px;padding-right:24px}.advanced{margin:0 24px}.form-footer{padding:20px 24px}.button-primary{min-width:170px}.brand-en{display:none}}
@media(max-width:600px){.page-shell{padding:0 20px}.site-header{height:76px}.brand{font-size:17px}.header-note{font-size:9px;max-width:124px;text-align:right;letter-spacing:0}.hero{display:block;padding:34px 0 26px;position:relative;min-height:262px}.hero-copy{position:relative;z-index:1}.eyebrow{font-size:9px;letter-spacing:1px;margin-bottom:15px}h1{font-size:38px;line-height:1.45;letter-spacing:.5px}.hero-description{font-size:12px;max-width:230px;line-height:1.8}.mountain-sketch{position:absolute;width:200px;right:-14px;bottom:10px;opacity:.7;padding-top:0;margin:0;z-index:0}.sketch-label,.sketch-stamp{display:none}.planner-heading{padding:24px 20px 18px}.planner-heading h2{font-size:19px}.pencil-note{font-size:10px}.main-fields{display:block;padding:0 20px 21px}.drop-zone{min-height:129px}.field-footnote{font-size:9px}.time-field{border:0;padding:24px 0 0}.duration-wrap{padding:4px 0 8px;justify-content:space-between}.duration-wrap input{font-size:38px;width:180px}.duration-wrap>span{font-size:11px}.time-hint{font-size:11px;margin-top:9px}.advanced{margin:0 20px}.advanced summary{font-size:11px;gap:6px;min-height:55px}.summary-cn{font-size:10px}.defaults-tag{display:none}.advanced-intro{font-size:11px}.settings-grid{gap:14px}.settings-grid label{font-size:10px}.settings-grid label>span{display:block;margin-left:0}.form-footer{display:block;padding:20px}.form-footer p{text-align:center;font-size:12px;margin-bottom:14px}.button-primary{width:100%;min-height:46px}.under-form{display:block;font-size:9px;padding:16px 3px}.under-form>span+span{display:none}.status{margin:0 20px 16px}.subheading{display:block}.subheading h3{margin-bottom:3px}.cp-row{grid-template-columns:1fr 1fr;gap:10px}.cp-name{grid-column:1/-1}.cp-row>div:nth-child(2){grid-column:1/-1}.results{margin-top:38px}.result-heading{display:block}.result-heading h2{font-size:27px}.exports{margin-top:18px}.route-stats{grid-template-columns:1fr 1fr;gap:17px 0;padding:17px 0}.stat:nth-child(3){border-left:0;padding-left:0}.stat{padding-left:18px}.stat-value{font-size:23px}.stat-label{font-size:10px}.profile-paper{padding:12px 10px 4px}.profile-heading{font-size:11px}.profile-heading span+span{max-width:180px;text-align:right;font-size:8px}.table-topline{display:block;padding:10px 12px}.table-topline>span{display:block}.site-footer{display:block;text-align:center;font-size:9px;margin-top:38px;padding:24px 0}.site-footer>span{display:block;margin:4px 0}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{transition:none!important;animation:none!important}}
@media print{@page{size:A4 landscape;margin:10mm}body{background:#fff;font-size:11px}.page-shell{max-width:none;padding:0}.site-header,.hero,.planner,.under-form,.exports,.site-footer,.calculation-notes{display:none!important}.results{display:block!important;margin:0}.result-heading{margin:0 0 12px}.result-heading h2{font-size:24px}.route-stats{padding:8px 0;margin-bottom:10px}.stat-value{font-size:18px}.profile-paper{break-inside:avoid}#elevation-chart{max-height:120px}.table-paper{box-shadow:none}.table-scroll{overflow:visible}.table-paper table{min-width:0}th,td{padding:10px 6px}thead{display:table-header-group}tr{break-inside:avoid}.chosen{print-color-adjust:exact;-webkit-print-color-adjust:exact}.result-notes{margin:10px 0}}

.mobile-table-hint{display:none}@media(max-width:600px){.table-topline .mobile-table-hint{display:block;color:var(--color-primary);margin-top:5px}}
