:root{--grass: #2f8a3d;--grass-dark: #1c5e2a;--grass-deep: #143f1d;--grass-light: #e7f3e8;--grass-tint: #f1f8f1;--accent: #d4a64a;--accent-dark: #a37c25;--accent-light: #fbf0d4;--sand: #f6e7c1;--ink: #142119;--ink-soft: #2e3a32;--muted: #5e6b62;--line: #e3eae3;--line-soft: #eef2ee;--bg: #f4f7f3;--surface: #ffffff;--surface-elev: #fafdf9;--danger: #b3261e;--danger-tint: #fdecec;--shadow-sm: 0 1px 2px rgba(20, 50, 25, .05);--shadow-md: 0 6px 18px rgba(20, 50, 25, .08);--shadow-lg: 0 14px 36px rgba(20, 50, 25, .16);--radius-sm: 8px;--radius-md: 12px;--radius-lg: 18px;--radius-pill: 999px;--tap: 48px;--safe-bottom: env(safe-area-inset-bottom, 0);--safe-top: env(safe-area-inset-top, 0);--ff-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--ff-display: "Inter", ui-rounded, "SF Pro Display", -apple-system, BlinkMacSystemFont, sans-serif}*{box-sizing:border-box}html,body{margin:0;padding:0}body{font-family:var(--ff-sans);background:radial-gradient(1200px 600px at 100% -10%,rgba(47,138,61,.06),transparent 60%),var(--bg);color:var(--ink);font-size:16px;line-height:1.45;-webkit-tap-highlight-color:transparent;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}a{color:var(--grass-dark);text-decoration:none;font-weight:500}a:hover{text-decoration:underline}h1,h2,h3,h4{margin:0 0 .75rem;line-height:1.2;font-family:var(--ff-display);letter-spacing:-.01em}h2{font-size:1.5rem;font-weight:700}h3{font-size:1.15rem;font-weight:600}h4{font-size:.95rem;color:var(--muted);font-weight:600;text-transform:uppercase;letter-spacing:.04em}.app-shell{min-height:100vh}.topbar{background:linear-gradient(180deg,var(--grass-dark) 0%,var(--grass-deep) 100%);color:#fff;padding:calc(var(--safe-top) + .85rem) 1rem .85rem;display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:10;box-shadow:var(--shadow-sm)}.topbar h1{font-size:1.1rem;margin:0;font-weight:700;letter-spacing:.4px;font-family:var(--ff-display)}.topbar .user{font-size:.85rem;display:flex;align-items:center;gap:.5rem}.topbar button{background:#ffffff14;color:#fff;border:1px solid rgba(255,255,255,.35);padding:.35rem .8rem;border-radius:var(--radius-pill);font-size:.8rem;min-height:36px;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);width:auto}.topbar button:hover{background:#ffffff2e}main{padding:1.25rem 1rem;padding-bottom:calc(80px + var(--safe-bottom) + 1rem);max-width:720px;margin:0 auto}.tabbar{position:fixed;bottom:0;left:0;right:0;display:grid;grid-template-columns:repeat(5,1fr);background:#ffffffeb;backdrop-filter:saturate(180%) blur(14px);-webkit-backdrop-filter:saturate(180%) blur(14px);border-top:1px solid var(--line);padding-bottom:var(--safe-bottom);z-index:9;box-shadow:0 -4px 14px #1432190d}.tabbar a{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:.55rem .25rem .45rem;color:var(--muted);font-size:.7rem;font-weight:500;min-height:calc(var(--tap) + 8px);text-decoration:none;position:relative;transition:color .12s ease}.tabbar a .icon{font-size:1.35rem;line-height:1;transition:transform .16s ease}.tabbar a.active{color:var(--grass-dark);font-weight:700}.tabbar a.active .icon{transform:translateY(-1px) scale(1.05)}.tabbar a.active:before{content:"";position:absolute;top:0;left:28%;right:28%;height:3px;background:var(--grass);border-radius:0 0 var(--radius-pill) var(--radius-pill)}.tabbar a:hover{text-decoration:none;color:var(--grass-dark)}.sidenav{display:none}@media(min-width:768px){.app-shell{display:flex}.sidenav{display:flex;flex-direction:column;width:230px;background:linear-gradient(180deg,var(--grass-dark) 0%,var(--grass-deep) 100%);color:#fff;padding:1.75rem 1rem;min-height:100vh;position:sticky;top:0;box-shadow:var(--shadow-md)}.sidenav h1{font-size:1.3rem;margin:0 0 2rem;font-family:var(--ff-display);letter-spacing:.3px}.sidenav a{color:#ffffffd9;padding:.65rem .8rem;border-radius:var(--radius-sm);margin-bottom:.25rem;font-size:.95rem;font-weight:500;display:flex;align-items:center;gap:.7rem;transition:background .12s ease,color .12s ease}.sidenav a .icon{font-size:1.15rem}.sidenav a:hover{background:#ffffff1a;color:#fff;text-decoration:none}.sidenav a.active{background:#ffffff29;color:#fff;box-shadow:inset 3px 0 0 var(--accent)}.sidenav .logout{margin-top:auto;border:1px solid rgba(255,255,255,.35);background:#ffffff0d;color:#fff;border-radius:var(--radius-sm);padding:.55rem;font-size:.85rem;cursor:pointer;width:100%}.sidenav .logout:hover{background:#ffffff26}main{flex:1;max-width:960px;padding:2.25rem}.topbar,.tabbar{display:none}}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-md);padding:1.1rem;margin-bottom:1rem;box-shadow:var(--shadow-sm);transition:box-shadow .16s ease,transform .16s ease,border-color .16s ease}.card.success{border-left:4px solid var(--grass)}.card.error{border-left:4px solid var(--danger);background:var(--danger-tint)}a.card{display:block;color:inherit;text-decoration:none}a.card:hover{text-decoration:none;border-color:var(--grass);box-shadow:var(--shadow-md);transform:translateY(-1px)}.row{display:flex;flex-direction:column;gap:.75rem}@media(min-width:600px){.row{flex-direction:row;flex-wrap:wrap;align-items:end}.row>*{flex:1 1 200px}}label{display:flex;flex-direction:column;gap:.3rem;font-size:.85rem;font-weight:500;color:var(--muted)}input,select,textarea{width:100%;padding:.7rem .85rem;border:1px solid var(--line);border-radius:var(--radius-sm);font-size:16px;font-family:inherit;background:var(--surface);color:var(--ink);min-height:var(--tap);transition:border-color .12s ease,box-shadow .12s ease}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--grass);box-shadow:0 0 0 3px #2f8a3d2e}button{background:linear-gradient(180deg,var(--grass) 0%,var(--grass-dark) 100%);color:#fff;border:none;padding:.85rem 1.25rem;border-radius:var(--radius-sm);font-weight:600;font-size:1rem;cursor:pointer;min-height:var(--tap);width:100%;font-family:inherit;letter-spacing:.01em;box-shadow:var(--shadow-sm);transition:transform .1s ease,box-shadow .16s ease,filter .16s ease}button:hover{filter:brightness(1.06);box-shadow:var(--shadow-md)}button:active{transform:translateY(1px);box-shadow:var(--shadow-sm)}button:disabled{opacity:.55;cursor:not-allowed;filter:grayscale(.15)}button.secondary{background:var(--surface);color:var(--grass-dark);border:1px solid var(--grass-dark);box-shadow:none}button.secondary:hover{background:var(--grass-tint);filter:none}button.danger{background:linear-gradient(180deg,#d6362f 0%,var(--danger) 100%)}button.small{padding:.45rem .85rem;font-size:.85rem;min-height:36px;width:auto}button.accent{background:linear-gradient(180deg,var(--accent) 0%,var(--accent-dark) 100%);color:#2a1c00}.btn-row{display:flex;gap:.5rem}.btn-row>button{width:auto;flex:1}@media(min-width:600px){button{width:auto}}.entity-list{display:flex;flex-direction:column;gap:.6rem}.entity-row{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-md);padding:.95rem 1rem;display:flex;align-items:center;justify-content:space-between;gap:.75rem;box-shadow:var(--shadow-sm);transition:box-shadow .16s ease,transform .16s ease,border-color .16s ease}a.entity-row:hover,.entity-row.round-link:hover{border-color:var(--grass);box-shadow:var(--shadow-md);transform:translateY(-1px)}.entity-row .meta{display:flex;flex-direction:column;gap:.15rem;min-width:0}.entity-row .title{font-weight:600;color:var(--ink)}.entity-row .sub{font-size:.8rem;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.muted{color:var(--muted);font-size:.9rem}.error-text{color:var(--danger);font-size:.9rem}.tag{display:inline-block;background:var(--accent-light);color:var(--accent-dark);padding:.2rem .65rem;border-radius:var(--radius-pill);font-size:.72rem;font-weight:600;letter-spacing:.02em}.tag.green{background:var(--grass-light);color:var(--grass-dark)}.handicap-badge{display:inline-block;background:linear-gradient(180deg,var(--grass) 0%,var(--grass-dark) 100%);color:#fff;padding:.3rem .8rem;border-radius:var(--radius-pill);font-weight:700;font-size:.85rem;box-shadow:var(--shadow-sm)}.hero{display:block;position:relative;overflow:hidden;border-radius:var(--radius-lg);padding:1.4rem 1.25rem 1.5rem;margin-bottom:1rem;color:#fff;text-decoration:none;background:radial-gradient(140% 80% at 90% 10%,rgba(212,166,74,.32),transparent 55%),radial-gradient(120% 80% at 10% 100%,rgba(255,255,255,.1),transparent 50%),linear-gradient(160deg,var(--grass) 0%,var(--grass-dark) 60%,var(--grass-deep) 100%);box-shadow:var(--shadow-md)}.hero:after{content:"";position:absolute;inset:0;background-image:radial-gradient(circle at 1px 1px,rgba(255,255,255,.08) 1px,transparent 1px);background-size:14px 14px;opacity:.5;pointer-events:none;mask-image:linear-gradient(180deg,transparent 0%,black 40%,transparent 100%);-webkit-mask-image:linear-gradient(180deg,transparent 0%,black 40%,transparent 100%)}.hero,.hero:hover{text-decoration:none;color:#fff}.hero a,.hero a:hover{color:#fff;text-decoration:none}.hero .greeting{font-size:.85rem;font-weight:500;letter-spacing:.04em;text-transform:uppercase;opacity:.85}.hero .name{font-family:var(--ff-display);font-size:1.6rem;font-weight:700;margin:.1rem 0 1rem;letter-spacing:-.01em}.hero .index-row{display:flex;align-items:flex-end;gap:.75rem}.hero .index-label{font-size:.75rem;letter-spacing:.06em;text-transform:uppercase;opacity:.85;font-weight:600}.hero .index-value{font-family:var(--ff-display);font-size:3.2rem;font-weight:800;line-height:1;letter-spacing:-.02em}.hero .index-value.small{font-size:1.6rem;opacity:.9}.hero .index-sub{font-size:.8rem;opacity:.85;margin-top:.5rem}.hero .hero-cta{display:inline-flex;align-items:center;gap:.4rem;margin-top:1rem;background:#ffffff1f;border:1px solid rgba(255,255,255,.3);padding:.5rem .85rem;border-radius:var(--radius-pill);font-size:.85rem;font-weight:600;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.hero .hero-cta:hover{background:#fff3}.quick-actions{display:grid;grid-template-columns:1fr 1fr;gap:.75rem;margin-bottom:1.25rem}.quick-actions .action{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-md);padding:.95rem 1rem;display:flex;align-items:center;gap:.75rem;color:var(--ink);font-weight:600;box-shadow:var(--shadow-sm);transition:box-shadow .16s ease,transform .16s ease,border-color .16s ease}.quick-actions .action:hover{border-color:var(--grass);box-shadow:var(--shadow-md);transform:translateY(-1px);text-decoration:none}.quick-actions .action.primary{background:linear-gradient(180deg,var(--grass) 0%,var(--grass-dark) 100%);color:#fff;border-color:transparent}.quick-actions .action.primary:hover{filter:brightness(1.06);border-color:transparent}.quick-actions .action .ico{font-size:1.4rem;width:36px;height:36px;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--radius-sm);background:var(--grass-light);color:var(--grass-dark);flex:0 0 36px}.quick-actions .action.primary .ico{background:#ffffff2e;color:#fff}.quick-actions .action .lbl{display:flex;flex-direction:column;gap:1px;min-width:0}.quick-actions .action .lbl .sub{font-size:.72rem;font-weight:500;opacity:.8}.section-head{display:flex;align-items:baseline;justify-content:space-between;margin:.5rem 0 .6rem}.section-head h3{margin:0}.section-head a{font-size:.85rem}.hole-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);padding:1.35rem 1rem;text-align:center;box-shadow:var(--shadow-sm)}.hole-card .hole-num{font-size:.8rem;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;font-weight:600}.hole-card .hole-num strong{font-size:1.6rem;color:var(--ink);font-family:var(--ff-display);letter-spacing:-.01em}.hole-card .par-si{display:flex;justify-content:center;gap:1.5rem;margin:.5rem 0 1rem;font-size:.9rem;color:var(--muted)}.hole-card .par-si span strong{font-size:1.1rem;color:var(--ink)}.stepper{display:flex;align-items:center;justify-content:center;gap:1rem;margin:.5rem 0 1rem}.stepper button{width:58px;height:58px;border-radius:50%;font-size:1.5rem;padding:0;background:var(--grass-light);color:var(--grass-dark);box-shadow:var(--shadow-sm)}.stepper button:hover{filter:brightness(.96)}.stepper .value{font-family:var(--ff-display);font-size:2.8rem;font-weight:800;min-width:90px;color:var(--grass-dark);letter-spacing:-.02em}.stepper .value.unset{color:var(--muted);font-size:1.5rem;font-weight:600}.hole-nav{display:grid;grid-template-columns:1fr 1fr;gap:.5rem;margin-top:1rem}.hole-progress{display:flex;gap:3px;margin:1rem 0;flex-wrap:wrap}.hole-progress .pip{flex:1;height:6px;background:var(--line);border-radius:var(--radius-pill);min-width:12px;transition:background .12s ease}.hole-progress .pip.entered{background:var(--grass)}.hole-progress .pip.current{background:var(--grass-dark);box-shadow:0 0 0 2px #2f8a3d40}.running-total{background:var(--grass-light);border-radius:var(--radius-sm);padding:.7rem .9rem;font-size:.9rem;color:var(--grass-dark);display:flex;justify-content:space-between;margin-bottom:1rem;font-weight:600}.running-total strong{font-size:1.2rem;font-family:var(--ff-display)}.scorecard-full{display:none}@media(min-width:1024px){.scorecard-full{display:grid;grid-template-columns:70px repeat(18,minmax(36px,1fr)) 60px;gap:2px;font-size:.85rem;background:var(--line);border-radius:var(--radius-sm);overflow:hidden}.scorecard-full>div{background:#fff;padding:.4rem .3rem;text-align:center}.scorecard-full .label{background:var(--grass-tint);font-weight:600;text-align:left;padding-left:.5rem}.scorecard-full .total{background:var(--grass-tint);font-weight:700}.scorecard-full input{width:100%;min-height:32px;padding:.2rem;text-align:center;font-size:.9rem}.hole-card,.hole-nav,.hole-progress{display:none}}.login-screen{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:2rem 1.25rem;background:radial-gradient(120% 80% at 0% 0%,rgba(212,166,74,.22),transparent 55%),radial-gradient(120% 80% at 100% 100%,rgba(255,255,255,.06),transparent 55%),linear-gradient(160deg,var(--grass) 0%,var(--grass-dark) 55%,var(--grass-deep) 100%);color:#fff;position:relative}.login-screen:before{content:"";position:absolute;inset:0;background-image:radial-gradient(circle at 1px 1px,rgba(255,255,255,.06) 1px,transparent 1px);background-size:18px 18px;pointer-events:none}.login-screen .logo{font-size:2.5rem;margin-bottom:.25rem;filter:drop-shadow(0 2px 8px rgba(0,0,0,.25))}.login-screen .brand{font-family:var(--ff-display);font-size:1.65rem;font-weight:700;margin-bottom:2rem;letter-spacing:.5px}.login-screen .form{background:var(--surface);color:var(--ink);padding:1.5rem;border-radius:var(--radius-lg);width:100%;max-width:380px;box-shadow:var(--shadow-lg);position:relative;z-index:1}.login-screen .form h2{font-size:1.3rem;margin-bottom:1rem}.login-screen .form label{margin-bottom:.9rem}.login-screen .form button{width:100%;margin-top:.25rem}.login-screen .hint{font-size:.8rem;color:var(--muted);margin-top:1rem;line-height:1.5}.login-screen .hint code{background:var(--grass-tint);padding:.05rem .35rem;border-radius:4px;font-size:.8rem;color:var(--grass-dark)}.show-password-toggle{flex-direction:row!important;align-items:center;gap:.5rem;font-size:.9rem;color:var(--ink);cursor:pointer;margin-top:-.25rem}.show-password-toggle input[type=checkbox]{width:20px;height:20px;min-height:0;margin:0;padding:0;accent-color:var(--grass);cursor:pointer}
